From 2c9fbef8a51aaf8e79d682596d24a208e35c0741 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Mon, 25 Jun 2018 15:36:26 -0700 Subject: [PATCH 1/7] Updated to 7.0 --- azure-keyvault-core/pom.xml | 2 +- azure-keyvault-cryptography/pom.xml | 4 +- .../algorithms/{Ecdsa256.java => Es256k.java} | 0 azure-keyvault-extensions/pom.xml | 10 +- ...Key_KeyVaultKeyResolverBCProviderTest.json | 177 +- ...eyVaultKeyResolverDefaultProviderTest.json | 136 +- ...e64_KeyVaultKeyResolverBCProviderTest.json | 163 +- ...eyVaultKeyResolverDefaultProviderTest.json | 150 +- ...e64_KeyVaultKeyResolverBCProviderTest.json | 163 +- ...eyVaultKeyResolverDefaultProviderTest.json | 163 +- ...e64_KeyVaultKeyResolverBCProviderTest.json | 163 +- ...eyVaultKeyResolverDefaultProviderTest.json | 163 +- azure-keyvault-webkey/pom.xml | 2 +- azure-keyvault/pom.xml | 6 +- .../azure/keyvault/CertificateIdentifier.java | 98 +- .../CertificateOperationIdentifier.java | 140 +- .../azure/keyvault/IssuerIdentifier.java | 212 +- .../azure/keyvault/KeyIdentifier.java | 98 +- .../azure/keyvault/KeyVaultClient.java | 56 +- .../azure/keyvault/KeyVaultClientBase.java | 12246 +++---- .../azure/keyvault/KeyVaultClientCustom.java | 1974 +- .../azure/keyvault/KeyVaultClientImpl.java | 13646 ++++---- .../azure/keyvault/ObjectIdentifier.java | 444 +- .../azure/keyvault/SecretIdentifier.java | 98 +- .../authentication/AuthenticationResult.java | 88 +- .../authentication/ChallengeCache.java | 152 +- .../authentication/KeyVaultCredentials.java | 784 +- .../keyvault/authentication/package-info.java | 18 +- .../KeyVaultClientBaseImpl.java | 26626 ++++++++-------- .../KeyVaultClientCustomImpl.java | 2912 +- .../messagesecurity/HttpMessageSecurity.java | 762 +- .../keyvault/messagesecurity/JWEHeader.java | 242 +- .../keyvault/messagesecurity/JWEObject.java | 338 +- .../keyvault/messagesecurity/JWSHeader.java | 318 +- .../keyvault/messagesecurity/JWSObject.java | 272 +- .../MessageSecurityHelper.java | 274 +- .../azure/keyvault/models/Action.java | 88 +- .../azure/keyvault/models/ActionType.java | 106 +- .../keyvault/models/AdministratorDetails.java | 242 +- .../azure/keyvault/models/Attributes.java | 294 +- .../models/BackupCertificateResult.java | 72 +- .../keyvault/models/BackupKeyResult.java | 72 +- .../keyvault/models/BackupSecretResult.java | 72 +- .../keyvault/models/BackupStorageResult.java | 72 +- .../models/CertificateAttributes.java | 74 +- .../keyvault/models/CertificateBundle.java | 402 +- .../models/CertificateCreateParameters.java | 192 +- .../models/CertificateImportParameters.java | 300 +- .../models/CertificateIssuerItem.java | 138 +- .../CertificateIssuerSetParameters.java | 242 +- .../CertificateIssuerUpdateParameters.java | 242 +- .../keyvault/models/CertificateItem.java | 260 +- .../models/CertificateMergeParameters.java | 194 +- .../keyvault/models/CertificateOperation.java | 482 +- .../CertificateOperationUpdateParameter.java | 86 +- .../keyvault/models/CertificatePolicy.java | 380 +- .../models/CertificateRestoreParameters.java | 102 +- .../models/CertificateUpdateParameters.java | 192 +- .../azure/keyvault/models/Contact.java | 190 +- .../azure/keyvault/models/Contacts.java | 118 +- .../models/DeletedCertificateBundle.java | 166 +- .../models/DeletedCertificateItem.java | 166 +- .../keyvault/models/DeletedKeyBundle.java | 166 +- .../azure/keyvault/models/DeletedKeyItem.java | 166 +- .../models/DeletedSasDefinitionBundle.java | 166 +- .../models/DeletedSasDefinitionItem.java | 166 +- .../keyvault/models/DeletedSecretBundle.java | 166 +- .../keyvault/models/DeletedSecretItem.java | 164 +- .../models/DeletedStorageAccountItem.java | 166 +- .../keyvault/models/DeletedStorageBundle.java | 166 +- .../models/DeletionRecoveryLevel.java | 112 +- .../azure/keyvault/models/Error.java | 124 +- .../keyvault/models/IssuerAttributes.java | 162 +- .../azure/keyvault/models/IssuerBundle.java | 272 +- .../keyvault/models/IssuerCredentials.java | 138 +- .../keyvault/models/IssuerParameters.java | 194 +- .../keyvault/models/JsonWebKeyCurveName.java | 112 +- .../azure/keyvault/models/KeyAttributes.java | 74 +- .../azure/keyvault/models/KeyBundle.java | 226 +- .../keyvault/models/KeyCreateParameters.java | 358 +- .../keyvault/models/KeyImportParameters.java | 246 +- .../azure/keyvault/models/KeyItem.java | 224 +- .../keyvault/models/KeyOperationResult.java | 102 +- .../models/KeyOperationsParameters.java | 158 +- .../azure/keyvault/models/KeyProperties.java | 271 +- .../keyvault/models/KeyRestoreParameters.java | 102 +- .../keyvault/models/KeySignParameters.java | 162 +- .../keyvault/models/KeyUpdateParameters.java | 198 +- .../azure/keyvault/models/KeyUsageType.java | 142 +- .../azure/keyvault/models/KeyVaultError.java | 64 +- .../models/KeyVaultErrorException.java | 88 +- .../keyvault/models/KeyVerifyParameters.java | 228 +- .../keyvault/models/KeyVerifyResult.java | 64 +- .../azure/keyvault/models/LifetimeAction.java | 140 +- .../keyvault/models/OrganizationDetails.java | 140 +- .../azure/keyvault/models/PageImpl.java | 150 +- ...endingCertificateSigningRequestResult.java | 64 +- .../models/SasDefinitionAttributes.java | 204 +- .../keyvault/models/SasDefinitionBundle.java | 256 +- .../models/SasDefinitionCreateParameters.java | 304 +- .../keyvault/models/SasDefinitionItem.java | 156 +- .../models/SasDefinitionUpdateParameters.java | 304 +- .../azure/keyvault/models/SasTokenType.java | 100 +- .../keyvault/models/SecretAttributes.java | 74 +- .../azure/keyvault/models/SecretBundle.java | 360 +- .../azure/keyvault/models/SecretItem.java | 276 +- .../keyvault/models/SecretProperties.java | 86 +- .../models/SecretRestoreParameters.java | 102 +- .../keyvault/models/SecretSetParameters.java | 244 +- .../models/SecretUpdateParameters.java | 192 +- .../models/StorageAccountAttributes.java | 202 +- .../StorageAccountCreateParameters.java | 348 +- .../keyvault/models/StorageAccountItem.java | 156 +- .../StorageAccountRegenerteKeyParameters.java | 86 +- .../StorageAccountUpdateParameters.java | 296 +- .../azure/keyvault/models/StorageBundle.java | 248 +- .../models/StorageRestoreParameters.java | 102 +- .../models/SubjectAlternativeNames.java | 192 +- .../azure/keyvault/models/Trigger.java | 144 +- .../models/X509CertificateProperties.java | 296 +- .../azure/keyvault/models/package-info.java | 22 +- .../azure/keyvault/package-info.java | 22 +- .../requests/CreateCertificateRequest.java | 386 +- .../keyvault/requests/CreateKeyRequest.java | 438 +- .../requests/ImportCertificateRequest.java | 460 +- .../keyvault/requests/ImportKeyRequest.java | 352 +- .../requests/MergeCertificateRequest.java | 278 +- .../requests/SetCertificateIssuerRequest.java | 330 +- .../keyvault/requests/SetSecretRequest.java | 320 +- .../UpdateCertificateIssuerRequest.java | 348 +- .../UpdateCertificateOperationRequest.java | 150 +- .../UpdateCertificatePolicyRequest.java | 266 +- .../requests/UpdateCertificateRequest.java | 430 +- .../keyvault/requests/UpdateKeyRequest.java | 386 +- .../requests/UpdateSecretRequest.java | 364 +- .../azure/keyvault/requests/package-info.java | 20 +- .../azure/keyvault/test/crudNames.json | 2 +- .../azure/keyvault/test/sasNames.json | 2 +- .../backupRestoreForKeyOperationsTest.json | 116 +- ...ertificateAsyncForAsyncOperationsTest.json | 274 +- ...cellationForCertificateOperationsTest.json | 129 +- ...teContactsAsyncForAsyncOperationsTest.json | 52 +- ...ateUpdateForCertificateOperationsTest.json | 129 +- ...perationsForCertificateOperationsTest.json | 65 +- ...ficatePemForCertificateOperationsTest.json | 200 +- ...atePkcs12ForCertificateOperationsTest.json | 203 +- ...createCsrForCertificateOperationsTest.json | 114 +- ...ficatePemForCertificateOperationsTest.json | 187 +- ...atePkcs12ForCertificateOperationsTest.json | 189 +- .../crudOperationsForKeyOperationsTest.json | 215 +- ...crudOperationsForSecretOperationsTest.json | 200 +- ...abledSecretGetForSecretOperationsTest.json | 69 +- ...DecryptOperationsForKeyOperationsTest.json | 88 +- ...atePkcs12ForCertificateOperationsTest.json | 139 +- ...mportKeyOperationForKeyOperationsTest.json | 103 +- .../issuerAsyncForAsyncOperationsTest.json | 86 +- ...perationsForCertificateOperationsTest.json | 86 +- .../keyAsyncForAsyncOperationsTest.json | 496 +- ...eVersionsForCertificateOperationsTest.json | 202 +- ...tificatesForCertificateOperationsTest.json | 420 +- .../listKeyVersionsForKeyOperationsTest.json | 176 +- .../listKeysForKeyOperationsTest.json | 750 +- ...SecretVersionsForSecretOperationsTest.json | 189 +- .../listSecretsForSecretOperationsTest.json | 561 +- .../secretAsyncForAsyncOperationsTest.json | 326 +- ...nVerifyOperationsForKeyOperationsTest.json | 84 +- ...OperationsForManagedStorageAccountKey.json | 216 +- ...DefinitionForManagedStorageAccountKey.json | 188 +- ...entAuthenticationForKeyOperationsTest.json | 56 +- ...AuthenticationForSecretOperationsTest.json | 56 +- ...pUnwrapOperationsForKeyOperationsTest.json | 88 +- pom.xml | 2 +- 172 files changed, 44893 insertions(+), 44550 deletions(-) rename azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/{Ecdsa256.java => Es256k.java} (100%) diff --git a/azure-keyvault-core/pom.xml b/azure-keyvault-core/pom.xml index 3602f35..7b53f5e 100644 --- a/azure-keyvault-core/pom.xml +++ b/azure-keyvault-core/pom.xml @@ -8,7 +8,7 @@ com.microsoft.azure azure-keyvault-parent - 1.1-beta-1 + 1.1 ../pom.xml diff --git a/azure-keyvault-cryptography/pom.xml b/azure-keyvault-cryptography/pom.xml index eae8042..66f8eba 100644 --- a/azure-keyvault-cryptography/pom.xml +++ b/azure-keyvault-cryptography/pom.xml @@ -7,7 +7,7 @@ com.microsoft.azure azure-keyvault-parent - 1.1-beta-1 + 1.1 ../pom.xml @@ -55,7 +55,7 @@ com.microsoft.azure azure-keyvault-webkey - 1.1-beta-1 + 1.1 com.microsoft.azure diff --git a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Ecdsa256.java b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java similarity index 100% rename from azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Ecdsa256.java rename to azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java diff --git a/azure-keyvault-extensions/pom.xml b/azure-keyvault-extensions/pom.xml index 10e252d..5f56dc3 100644 --- a/azure-keyvault-extensions/pom.xml +++ b/azure-keyvault-extensions/pom.xml @@ -8,7 +8,7 @@ com.microsoft.azure azure-keyvault-parent - 1.1-beta-1 + 1.1 ../pom.xml @@ -68,22 +68,22 @@ com.microsoft.azure azure-keyvault-core - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-cryptography - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-webkey - 1.1-beta-1 + 1.1 com.microsoft.azure diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverBCProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverBCProviderTest.json index 2d6a291..7411b42 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverBCProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverBCProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:07 GMT", + "date" : "Mon, 25 Jun 2018 21:42:25 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "95cde216-e2da-4851-b15c-3c5c433f7f49", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b33299d5-0d84-429a-9863-9f71fa653e33", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:08 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:42:26 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "e625770f-3149-40cd-befd-765a0e3832eb", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jJgyCQyX3ulhlBimUV356y4LGpuGtW6mi2nICdyFx8pa2SVUZeHCjCbRmdFHet91nXdz3TctTMYefe9UXHw_2ROHMMYbUKvpIyYjdKscFQcCf8v6gZnr5vAhRe8Ct1rfy2EwHkzWt_0eQUKVWTeK1kW7LKbQ6JOpALVQrySOLY2cQAEU7CrQ5rCodGxqu373Fp5voHp8l6pXw4x7ugOQx8RpxtOtYB2p3qf4qFTn1N4VMQIX4UJBrb8pxMjHoRzGoU-iJuDOCiK4X-Gxxm17LYhQeV77t0X68xPQUwYh95meYhALjW3cB2nNvpnDX7plDR7ndXBaU3T0zoTDa4oyLw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282688,\"updated\":1525282688,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3c394856-1f18-486b-8a72-a0e1da379be6", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"j1Yl305qd5uKultZ9jitFjj2NaVvElwBOk2qQGX0YeCncznmfAqk5QgwqwgUhDWKt2Ojutud3n-Ptuw8pJ4zY2je119omDo_7X3R1CBD13vqAhReNFLbZuF-pFXCPR0xRz0tQpX8kQeV4Rq5IxMR6id1XoxX7isjbBZmwSesH7inRqkM3vWSkqZkNF0V02g6YUzDajmudzH1zppPlBLXkymECXQOA_GA2LImAaBk35YSDYgeXbCqtCdkCaV4PsyPEmBTis5xM30KDrTxviVCJltM9fut6s8dJstammi4wHodZe0ZNkBu-cCKvX9DbPAvymdG3NFD5ss-nCMWSWcQUQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529962946,\"updated\":1529962946,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:08 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:42:28 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "2b8acaef-fd6e-4ae2-9143-6bd3d4d48b59", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jJgyCQyX3ulhlBimUV356y4LGpuGtW6mi2nICdyFx8pa2SVUZeHCjCbRmdFHet91nXdz3TctTMYefe9UXHw_2ROHMMYbUKvpIyYjdKscFQcCf8v6gZnr5vAhRe8Ct1rfy2EwHkzWt_0eQUKVWTeK1kW7LKbQ6JOpALVQrySOLY2cQAEU7CrQ5rCodGxqu373Fp5voHp8l6pXw4x7ugOQx8RpxtOtYB2p3qf4qFTn1N4VMQIX4UJBrb8pxMjHoRzGoU-iJuDOCiK4X-Gxxm17LYhQeV77t0X68xPQUwYh95meYhALjW3cB2nNvpnDX7plDR7ndXBaU3T0zoTDa4oyLw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282688,\"updated\":1525282688,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5954b38a-0273-42bf-9517-e511ccf15578", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"j1Yl305qd5uKultZ9jitFjj2NaVvElwBOk2qQGX0YeCncznmfAqk5QgwqwgUhDWKt2Ojutud3n-Ptuw8pJ4zY2je119omDo_7X3R1CBD13vqAhReNFLbZuF-pFXCPR0xRz0tQpX8kQeV4Rq5IxMR6id1XoxX7isjbBZmwSesH7inRqkM3vWSkqZkNF0V02g6YUzDajmudzH1zppPlBLXkymECXQOA_GA2LImAaBk35YSDYgeXbCqtCdkCaV4PsyPEmBTis5xM30KDrTxviVCJltM9fut6s8dJstammi4wHodZe0ZNkBu-cCKvX9DbPAvymdG3NFD5ss-nCMWSWcQUQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529962946,\"updated\":1529962946,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:09 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:42:30 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "1b169f12-6676-43b2-8508-ff186ae08aed", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jJgyCQyX3ulhlBimUV356y4LGpuGtW6mi2nICdyFx8pa2SVUZeHCjCbRmdFHet91nXdz3TctTMYefe9UXHw_2ROHMMYbUKvpIyYjdKscFQcCf8v6gZnr5vAhRe8Ct1rfy2EwHkzWt_0eQUKVWTeK1kW7LKbQ6JOpALVQrySOLY2cQAEU7CrQ5rCodGxqu373Fp5voHp8l6pXw4x7ugOQx8RpxtOtYB2p3qf4qFTn1N4VMQIX4UJBrb8pxMjHoRzGoU-iJuDOCiK4X-Gxxm17LYhQeV77t0X68xPQUwYh95meYhALjW3cB2nNvpnDX7plDR7ndXBaU3T0zoTDa4oyLw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282688,\"updated\":1525282688,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0e9d2a1b-1251-403d-8471-87cbb685789c", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"j1Yl305qd5uKultZ9jitFjj2NaVvElwBOk2qQGX0YeCncznmfAqk5QgwqwgUhDWKt2Ojutud3n-Ptuw8pJ4zY2je119omDo_7X3R1CBD13vqAhReNFLbZuF-pFXCPR0xRz0tQpX8kQeV4Rq5IxMR6id1XoxX7isjbBZmwSesH7inRqkM3vWSkqZkNF0V02g6YUzDajmudzH1zppPlBLXkymECXQOA_GA2LImAaBk35YSDYgeXbCqtCdkCaV4PsyPEmBTis5xM30KDrTxviVCJltM9fut6s8dJstammi4wHodZe0ZNkBu-cCKvX9DbPAvymdG3NFD5ss-nCMWSWcQUQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529962946,\"updated\":1529962946,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:09 GMT", - "content-length" : "805", + "date" : "Mon, 25 Jun 2018 21:42:31 GMT", + "content-length" : "823", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,49 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "0425a85f-c9f1-4709-9f8d-e9a6aa02b9f1", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1525282690,\"scheduledPurgeDate\":1533058690,\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jJgyCQyX3ulhlBimUV356y4LGpuGtW6mi2nICdyFx8pa2SVUZeHCjCbRmdFHet91nXdz3TctTMYefe9UXHw_2ROHMMYbUKvpIyYjdKscFQcCf8v6gZnr5vAhRe8Ct1rfy2EwHkzWt_0eQUKVWTeK1kW7LKbQ6JOpALVQrySOLY2cQAEU7CrQ5rCodGxqu373Fp5voHp8l6pXw4x7ugOQx8RpxtOtYB2p3qf4qFTn1N4VMQIX4UJBrb8pxMjHoRzGoU-iJuDOCiK4X-Gxxm17LYhQeV77t0X68xPQUwYh95meYhALjW3cB2nNvpnDX7plDR7ndXBaU3T0zoTDa4oyLw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282688,\"updated\":1525282688,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 02 May 2018 17:38:10 GMT", - "content-length" : "85", - "server" : "Microsoft-IIS/10.0", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "feec88c6-196b-4e4d-980d-495957a9f6bc", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: JavaExtensionKey1\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5e445b91-1dbb-4c2c-9236-7020164618cc", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1529962951,\"scheduledPurgeDate\":1537738951,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"j1Yl305qd5uKultZ9jitFjj2NaVvElwBOk2qQGX0YeCncznmfAqk5QgwqwgUhDWKt2Ojutud3n-Ptuw8pJ4zY2je119omDo_7X3R1CBD13vqAhReNFLbZuF-pFXCPR0xRz0tQpX8kQeV4Rq5IxMR6id1XoxX7isjbBZmwSesH7inRqkM3vWSkqZkNF0V02g6YUzDajmudzH1zppPlBLXkymECXQOA_GA2LImAaBk35YSDYgeXbCqtCdkCaV4PsyPEmBTis5xM30KDrTxviVCJltM9fut6s8dJstammi4wHodZe0ZNkBu-cCKvX9DbPAvymdG3NFD5ss-nCMWSWcQUQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529962946,\"updated\":1529962946,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:20 GMT", + "date" : "Mon, 25 Jun 2018 21:42:33 GMT", "content-length" : "85", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,22 +154,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "d7df2f0c-2212-4bbd-85bc-83675ca5b3cc", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e51c8e1d-2212-4e90-9fea-5c6f8b20d9be", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: JavaExtensionKey1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:30 GMT", + "date" : "Mon, 25 Jun 2018 21:42:44 GMT", "content-length" : "85", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -208,23 +181,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "ddba9700-c4df-40bb-bba5-cb1da19f3ccc", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5078e4f6-465d-4cb9-ad74-4915df6d855c", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: JavaExtensionKey1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:42 GMT", - "content-length" : "805", + "date" : "Mon, 25 Jun 2018 21:42:57 GMT", + "content-length" : "823", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -235,22 +208,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "d852dded-13ab-4528-86ae-047bba0c3845", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1525282690,\"scheduledPurgeDate\":1533058690,\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/9a999f58af0a409894e7cfd8b34dbd7b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jJgyCQyX3ulhlBimUV356y4LGpuGtW6mi2nICdyFx8pa2SVUZeHCjCbRmdFHet91nXdz3TctTMYefe9UXHw_2ROHMMYbUKvpIyYjdKscFQcCf8v6gZnr5vAhRe8Ct1rfy2EwHkzWt_0eQUKVWTeK1kW7LKbQ6JOpALVQrySOLY2cQAEU7CrQ5rCodGxqu373Fp5voHp8l6pXw4x7ugOQx8RpxtOtYB2p3qf4qFTn1N4VMQIX4UJBrb8pxMjHoRzGoU-iJuDOCiK4X-Gxxm17LYhQeV77t0X68xPQUwYh95meYhALjW3cB2nNvpnDX7plDR7ndXBaU3T0zoTDa4oyLw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282688,\"updated\":1525282688,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4dc4c494-f0b4-4fe1-8917-cd31d45ff7ff", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1529962951,\"scheduledPurgeDate\":1537738951,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/dccd6ba8014a4ae39ac2f122499c6eca\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"j1Yl305qd5uKultZ9jitFjj2NaVvElwBOk2qQGX0YeCncznmfAqk5QgwqwgUhDWKt2Ojutud3n-Ptuw8pJ4zY2je119omDo_7X3R1CBD13vqAhReNFLbZuF-pFXCPR0xRz0tQpX8kQeV4Rq5IxMR6id1XoxX7isjbBZmwSesH7inRqkM3vWSkqZkNF0V02g6YUzDajmudzH1zppPlBLXkymECXQOA_GA2LImAaBk35YSDYgeXbCqtCdkCaV4PsyPEmBTis5xM30KDrTxviVCJltM9fut6s8dJstammi4wHodZe0ZNkBu-cCKvX9DbPAvymdG3NFD5ss-nCMWSWcQUQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529962946,\"updated\":1529962946,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:42 GMT", + "date" : "Mon, 25 Jun 2018 21:42:58 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -260,11 +233,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "59807515-6eee-4262-9ef7-f79603fd4ed3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8ad5c8a9-cf11-4427-818d-efaa3f2bad05", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverDefaultProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverDefaultProviderTest.json index c6343ec..ffc9a93 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverDefaultProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Key_KeyVaultKeyResolverDefaultProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:51 GMT", + "date" : "Mon, 25 Jun 2018 21:22:14 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "30605db1-15ef-4e2c-b782-3f60eb4d649d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c045ccf2-263b-4be5-bb45-cf61cdf8d191", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:51 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:22:16 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "990745c6-05ab-41ba-87ac-1f72c9e8649b", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"58Zcvp9HTyNxedrzyyHIgmtnMYZmd5qVUyvy2vvTNMbEbMYvU__bsz2RaLsG3t6vFU2JtWUOF8ZSvOSbe_rGK9QBOJIxcyaNgPot0kNVDUj4gEd5EKCKFgAxG9ZwKTxgMsJjP-1g5Y0Si3KovdMz_S8fjWzKzeZ6DznuhpConKQd9sGvCY6tFovrKAqLAbOAuyMePDgl4E3O5rA3MzHPXhWHQ1SZZ9ANd3jGS67q25ulymyIjU1KkRlDP18khCsq7rkSb4AjEfRxqbqxEUIOteVxrTGvun4_J0TdYTnnxkrqt3XHlferBd3kLGiqWNSsEQLMDQ0TQ7_0zI2hI2BlTw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282792,\"updated\":1525282792,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3ab77773-2743-4cd4-b573-aa2acbfd05a1", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"0l9rjWJoKf-BnGB78pt1q_Qt43e2oEM2wE0zG8VqczMsD6H72iL_RcQZUwgIyJAZAinJQ9cUqbwz21C20rACtaPEi99uVv0cYQUnQK66F8frCrPTH_H2B2mLFk4DJs442FW3GcMt5i8kozs-Kc532g-DSTNPdz2of-MDVtF0wG0bk6V1s0Gs6tRd087goZUCre8eYUC_wc1jsivhN4z9teyHqqJQi7-3jO_PBiaBsc3NaitVMuwg797QOjMO84eO3PQnkYeCA6Jb10SThFMgbH5JXtRZOegptyrzYxPRzyah7OfVsiqHsgLMtJ9LnhLpXtc9nSXlaf20II7MP-7SUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529961736,\"updated\":1529961736,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:52 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:22:18 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "b11ea102-1198-4dff-8a28-82bff0da0a2c", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"58Zcvp9HTyNxedrzyyHIgmtnMYZmd5qVUyvy2vvTNMbEbMYvU__bsz2RaLsG3t6vFU2JtWUOF8ZSvOSbe_rGK9QBOJIxcyaNgPot0kNVDUj4gEd5EKCKFgAxG9ZwKTxgMsJjP-1g5Y0Si3KovdMz_S8fjWzKzeZ6DznuhpConKQd9sGvCY6tFovrKAqLAbOAuyMePDgl4E3O5rA3MzHPXhWHQ1SZZ9ANd3jGS67q25ulymyIjU1KkRlDP18khCsq7rkSb4AjEfRxqbqxEUIOteVxrTGvun4_J0TdYTnnxkrqt3XHlferBd3kLGiqWNSsEQLMDQ0TQ7_0zI2hI2BlTw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282792,\"updated\":1525282792,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "acbca651-c8ab-47e8-bb2f-04d4d2f1eab5", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"0l9rjWJoKf-BnGB78pt1q_Qt43e2oEM2wE0zG8VqczMsD6H72iL_RcQZUwgIyJAZAinJQ9cUqbwz21C20rACtaPEi99uVv0cYQUnQK66F8frCrPTH_H2B2mLFk4DJs442FW3GcMt5i8kozs-Kc532g-DSTNPdz2of-MDVtF0wG0bk6V1s0Gs6tRd087goZUCre8eYUC_wc1jsivhN4z9teyHqqJQi7-3jO_PBiaBsc3NaitVMuwg797QOjMO84eO3PQnkYeCA6Jb10SThFMgbH5JXtRZOegptyrzYxPRzyah7OfVsiqHsgLMtJ9LnhLpXtc9nSXlaf20II7MP-7SUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529961736,\"updated\":1529961736,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:53 GMT", - "content-length" : "665", + "date" : "Mon, 25 Jun 2018 21:22:19 GMT", + "content-length" : "674", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "5f2e0d03-283b-4547-8e35-a7d46e826446", - "Body" : "{\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"58Zcvp9HTyNxedrzyyHIgmtnMYZmd5qVUyvy2vvTNMbEbMYvU__bsz2RaLsG3t6vFU2JtWUOF8ZSvOSbe_rGK9QBOJIxcyaNgPot0kNVDUj4gEd5EKCKFgAxG9ZwKTxgMsJjP-1g5Y0Si3KovdMz_S8fjWzKzeZ6DznuhpConKQd9sGvCY6tFovrKAqLAbOAuyMePDgl4E3O5rA3MzHPXhWHQ1SZZ9ANd3jGS67q25ulymyIjU1KkRlDP18khCsq7rkSb4AjEfRxqbqxEUIOteVxrTGvun4_J0TdYTnnxkrqt3XHlferBd3kLGiqWNSsEQLMDQ0TQ7_0zI2hI2BlTw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282792,\"updated\":1525282792,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "34697143-5109-4df3-b36e-e8488d0a729f", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"0l9rjWJoKf-BnGB78pt1q_Qt43e2oEM2wE0zG8VqczMsD6H72iL_RcQZUwgIyJAZAinJQ9cUqbwz21C20rACtaPEi99uVv0cYQUnQK66F8frCrPTH_H2B2mLFk4DJs442FW3GcMt5i8kozs-Kc532g-DSTNPdz2of-MDVtF0wG0bk6V1s0Gs6tRd087goZUCre8eYUC_wc1jsivhN4z9teyHqqJQi7-3jO_PBiaBsc3NaitVMuwg797QOjMO84eO3PQnkYeCA6Jb10SThFMgbH5JXtRZOegptyrzYxPRzyah7OfVsiqHsgLMtJ9LnhLpXtc9nSXlaf20II7MP-7SUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529961736,\"updated\":1529961736,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:53 GMT", - "content-length" : "805", + "date" : "Mon, 25 Jun 2018 21:22:19 GMT", + "content-length" : "823", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,22 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "dd02fd81-e297-499d-8158-a24c4e635685", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1525282794,\"scheduledPurgeDate\":1533058794,\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"58Zcvp9HTyNxedrzyyHIgmtnMYZmd5qVUyvy2vvTNMbEbMYvU__bsz2RaLsG3t6vFU2JtWUOF8ZSvOSbe_rGK9QBOJIxcyaNgPot0kNVDUj4gEd5EKCKFgAxG9ZwKTxgMsJjP-1g5Y0Si3KovdMz_S8fjWzKzeZ6DznuhpConKQd9sGvCY6tFovrKAqLAbOAuyMePDgl4E3O5rA3MzHPXhWHQ1SZZ9ANd3jGS67q25ulymyIjU1KkRlDP18khCsq7rkSb4AjEfRxqbqxEUIOteVxrTGvun4_J0TdYTnnxkrqt3XHlferBd3kLGiqWNSsEQLMDQ0TQ7_0zI2hI2BlTw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282792,\"updated\":1525282792,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "85fbccc4-89ce-44e2-b631-fc0742d93f56", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1529961739,\"scheduledPurgeDate\":1537737739,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"0l9rjWJoKf-BnGB78pt1q_Qt43e2oEM2wE0zG8VqczMsD6H72iL_RcQZUwgIyJAZAinJQ9cUqbwz21C20rACtaPEi99uVv0cYQUnQK66F8frCrPTH_H2B2mLFk4DJs442FW3GcMt5i8kozs-Kc532g-DSTNPdz2of-MDVtF0wG0bk6V1s0Gs6tRd087goZUCre8eYUC_wc1jsivhN4z9teyHqqJQi7-3jO_PBiaBsc3NaitVMuwg797QOjMO84eO3PQnkYeCA6Jb10SThFMgbH5JXtRZOegptyrzYxPRzyah7OfVsiqHsgLMtJ9LnhLpXtc9nSXlaf20II7MP-7SUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529961736,\"updated\":1529961736,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:54 GMT", + "date" : "Mon, 25 Jun 2018 21:22:23 GMT", "content-length" : "85", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -154,23 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "c4e29724-eef3-4aff-8b20-0e96c0a78534", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3e663752-1ab5-4824-bb3c-51c46afb30e2", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: JavaExtensionKey1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:40:05 GMT", - "content-length" : "805", + "date" : "Mon, 25 Jun 2018 21:22:34 GMT", + "content-length" : "823", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -181,22 +181,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "4a70e918-fcb5-4d11-a9f0-c17ed52f6ed3", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1525282794,\"scheduledPurgeDate\":1533058794,\"key\":{\"kid\":\"https://java-sdk-test.vault.azure.net/keys/JavaExtensionKey1/c1abf6e1106449828fdd8deaa6871022\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"58Zcvp9HTyNxedrzyyHIgmtnMYZmd5qVUyvy2vvTNMbEbMYvU__bsz2RaLsG3t6vFU2JtWUOF8ZSvOSbe_rGK9QBOJIxcyaNgPot0kNVDUj4gEd5EKCKFgAxG9ZwKTxgMsJjP-1g5Y0Si3KovdMz_S8fjWzKzeZ6DznuhpConKQd9sGvCY6tFovrKAqLAbOAuyMePDgl4E3O5rA3MzHPXhWHQ1SZZ9ANd3jGS67q25ulymyIjU1KkRlDP18khCsq7rkSb4AjEfRxqbqxEUIOteVxrTGvun4_J0TdYTnnxkrqt3XHlferBd3kLGiqWNSsEQLMDQ0TQ7_0zI2hI2BlTw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1525282792,\"updated\":1525282792,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3460e39b-9e11-4133-9477-ce4c7e92410f", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1\",\"deletedDate\":1529961739,\"scheduledPurgeDate\":1537737739,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/JavaExtensionKey1/93d42ad97a7842eb8925c5b4dfbea76e\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"0l9rjWJoKf-BnGB78pt1q_Qt43e2oEM2wE0zG8VqczMsD6H72iL_RcQZUwgIyJAZAinJQ9cUqbwz21C20rACtaPEi99uVv0cYQUnQK66F8frCrPTH_H2B2mLFk4DJs442FW3GcMt5i8kozs-Kc532g-DSTNPdz2of-MDVtF0wG0bk6V1s0Gs6tRd087goZUCre8eYUC_wc1jsivhN4z9teyHqqJQi7-3jO_PBiaBsc3NaitVMuwg797QOjMO84eO3PQnkYeCA6Jb10SThFMgbH5JXtRZOegptyrzYxPRzyah7OfVsiqHsgLMtJ9LnhLpXtc9nSXlaf20II7MP-7SUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529961736,\"updated\":1529961736,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/JavaExtensionKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:40:05 GMT", + "date" : "Mon, 25 Jun 2018 21:22:35 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -206,11 +206,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "6a695a37-a387-45cd-a739-03acb860c290", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4418fde5-e9e7-457a-81af-b33c2acb6c31", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverBCProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverBCProviderTest.json index 772b2d9..bc2d373 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverBCProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverBCProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:14 GMT", + "date" : "Mon, 25 Jun 2018 21:41:41 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "609f81de-55c6-4cbf-84fe-0d103b03894c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "54df7778-3be6-4420-8ed0-892b94f7f1a4", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:15 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:41:43 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "bfd800e3-9053-441f-8703-c99d3d7e8226", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3\",\"attributes\":{\"enabled\":true,\"created\":1525282635,\"updated\":1525282635,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e6e6b826-232a-4f1f-9ced-d766c5f40563", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5\",\"attributes\":{\"enabled\":true,\"created\":1529962903,\"updated\":1529962903,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:16 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:41:44 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "d9af5cb8-f92f-4f60-a8a7-b62ab59691b4", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3\",\"attributes\":{\"enabled\":true,\"created\":1525282635,\"updated\":1525282635,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9397cc6f-3fd4-4e7e-8ac3-cbd6510fb284", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5\",\"attributes\":{\"enabled\":true,\"created\":1529962903,\"updated\":1529962903,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:16 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:41:45 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "a4c42f78-753f-4ab0-b3c6-fa928b5c0cf9", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3\",\"attributes\":{\"enabled\":true,\"created\":1525282635,\"updated\":1525282635,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "49169fdc-b7f6-4dde-8775-9cff28e9903f", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5\",\"attributes\":{\"enabled\":true,\"created\":1529962903,\"updated\":1529962903,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:17 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:41:47 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,49 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "d9dc324b-28eb-48ba-9b39-511562e0fcf3", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1525282637,\"scheduledPurgeDate\":1533058637,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3\",\"attributes\":{\"enabled\":true,\"created\":1525282635,\"updated\":1525282635,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 02 May 2018 17:37:18 GMT", - "content-length" : "94", - "server" : "Microsoft-IIS/10.0", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "04b554aa-2a32-4117-8d38-8a77db3ab444", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret1\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6b11c66b-440d-4582-8f3f-36fce9aba79a", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1529962907,\"scheduledPurgeDate\":1537738907,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5\",\"attributes\":{\"enabled\":true,\"created\":1529962903,\"updated\":1529962903,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:28 GMT", + "date" : "Mon, 25 Jun 2018 21:41:47 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,23 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "33dbe3e1-5a9d-47dd-aa9b-ccff0dbbee12", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "27dd6357-1025-4c6f-95f1-3aa5f4382dc2", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:39 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:42:00 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -208,22 +181,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "1aecab8f-df61-4dda-ba0e-4f2a88e4525e", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1525282637,\"scheduledPurgeDate\":1533058637,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/7b0176dc7bdd48e5aaf97e65a5207da3\",\"attributes\":{\"enabled\":true,\"created\":1525282635,\"updated\":1525282635,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c4842b6d-1abf-440c-8953-d97b5d77ee0e", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1529962907,\"scheduledPurgeDate\":1537738907,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/b1bdfdb663494a2f8a7594d4aca309f5\",\"attributes\":{\"enabled\":true,\"created\":1529962903,\"updated\":1529962903,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:40 GMT", + "date" : "Mon, 25 Jun 2018 21:42:01 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -233,11 +206,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "e6510770-6101-46b9-8c1d-11e8944cda20", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dc6e5859-4d2c-4a67-896b-421e70026551", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverDefaultProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverDefaultProviderTest.json index 0d45a64..c21eda2 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverDefaultProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret128Base64_KeyVaultKeyResolverDefaultProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:11 GMT", + "date" : "Mon, 25 Jun 2018 21:21:05 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "73685558-2c92-48f1-bbec-4f1b86400aea", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cb1b7f7f-72ee-4642-bec1-b5c8030f042b", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:12 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:21:08 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "adbd2810-e42d-4865-aa04-990e552f96cb", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18\",\"attributes\":{\"enabled\":true,\"created\":1525282752,\"updated\":1525282752,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8b6bc90f-8930-48e2-96b8-c9a176eed228", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b\",\"attributes\":{\"enabled\":true,\"created\":1529961668,\"updated\":1529961668,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:12 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:21:09 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "28a3b484-4148-473a-bbf6-e5c8386b7b9e", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18\",\"attributes\":{\"enabled\":true,\"created\":1525282752,\"updated\":1525282752,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "71739e44-356f-4d91-8fd9-8082cac85d19", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b\",\"attributes\":{\"enabled\":true,\"created\":1529961668,\"updated\":1529961668,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:13 GMT", - "content-length" : "294", + "date" : "Mon, 25 Jun 2018 21:21:11 GMT", + "content-length" : "303", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "fbef6ba9-e37c-4567-af09-5458b5d05e63", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18\",\"attributes\":{\"enabled\":true,\"created\":1525282752,\"updated\":1525282752,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5d62591d-66f3-4be9-b5e5-652a410a299e", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODw\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b\",\"attributes\":{\"enabled\":true,\"created\":1529961668,\"updated\":1529961668,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:13 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:21:11 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,22 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "a26d2572-a3df-4507-a15a-41688dbd8fbc", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1525282753,\"scheduledPurgeDate\":1533058753,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18\",\"attributes\":{\"enabled\":true,\"created\":1525282752,\"updated\":1525282752,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b59f0561-bb57-4a4a-8ad4-a4e69d598e76", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1529961672,\"scheduledPurgeDate\":1537737672,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b\",\"attributes\":{\"enabled\":true,\"created\":1529961668,\"updated\":1529961668,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:13 GMT", + "date" : "Mon, 25 Jun 2018 21:21:12 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -154,22 +154,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "676d887a-15e6-4792-97a8-1f77ff58a0e1", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1cfffd8b-acd9-476b-8fcb-e639fbf2b078", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:24 GMT", + "date" : "Mon, 25 Jun 2018 21:21:23 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,23 +181,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "0770368a-085a-47d8-8b83-d1b3e2e431be", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "73497dde-2cbb-4188-bb39-2258e4c7e8cb", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret1\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:35 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:21:34 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -208,22 +208,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "9754d98e-a30c-41a0-9d97-7cf5fe538a45", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1525282753,\"scheduledPurgeDate\":1533058753,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret1/1ff16fced83a4f5488f5fa249b160b18\",\"attributes\":{\"enabled\":true,\"created\":1525282752,\"updated\":1525282752,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5f1232e2-0b99-4ff7-b511-5ea1ee435f7a", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1\",\"deletedDate\":1529961672,\"scheduledPurgeDate\":1537737672,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret1/3660edafb1a04204876ed246a3c4514b\",\"attributes\":{\"enabled\":true,\"created\":1529961668,\"updated\":1529961668,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:35 GMT", + "date" : "Mon, 25 Jun 2018 21:21:37 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -233,11 +233,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "635a8eac-6656-43b1-9ad8-5025b5843c38", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "019bf790-a06b-454f-8d4c-ddf2f872e943", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverBCProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverBCProviderTest.json index 7578009..e01e72a 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverBCProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverBCProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:44 GMT", + "date" : "Mon, 25 Jun 2018 21:42:58 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "5e91cb73-138f-44e8-b5fd-0f343c39dd94", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d4374be8-8f6e-431d-a2f7-43d4a14b21fe", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:44 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:42:59 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "376ef618-f0e7-4b41-b8a5-2024c04932ec", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1\",\"attributes\":{\"enabled\":true,\"created\":1525282724,\"updated\":1525282724,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d47caae8-b82d-4fd0-9aa3-a8adb80b91e9", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91\",\"attributes\":{\"enabled\":true,\"created\":1529962979,\"updated\":1529962979,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:45 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:43:00 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "999112d8-e9c9-456d-8a1b-549c47961758", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1\",\"attributes\":{\"enabled\":true,\"created\":1525282724,\"updated\":1525282724,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9ec8c543-5875-4cf7-a7fd-2fe9af5066b2", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91\",\"attributes\":{\"enabled\":true,\"created\":1529962979,\"updated\":1529962979,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:45 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:43:03 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "de666b4f-bdd6-44f7-adc4-1280ee42bc78", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1\",\"attributes\":{\"enabled\":true,\"created\":1525282724,\"updated\":1525282724,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2b0bbedb-6a9f-4dc3-8306-e56019c8f97c", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91\",\"attributes\":{\"enabled\":true,\"created\":1529962979,\"updated\":1529962979,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:46 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:43:04 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,49 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "4c2ac5ec-2a7a-4a55-8f52-41ebb180f99f", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1525282726,\"scheduledPurgeDate\":1533058726,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1\",\"attributes\":{\"enabled\":true,\"created\":1525282724,\"updated\":1525282724,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 02 May 2018 17:38:47 GMT", - "content-length" : "94", - "server" : "Microsoft-IIS/10.0", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "c4903f55-c56b-4310-8f73-796aa9963dd4", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret2\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4380c7a1-1a69-4987-90c9-2b92567d7f8a", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1529962984,\"scheduledPurgeDate\":1537738984,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91\",\"attributes\":{\"enabled\":true,\"created\":1529962979,\"updated\":1529962979,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:58 GMT", + "date" : "Mon, 25 Jun 2018 21:43:05 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,23 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "f51249da-b9e1-4948-b523-8df70683f128", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bccc94ad-d3d1-41d3-90b5-3a2af1c299e5", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret2\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:09 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:43:20 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -208,22 +181,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "9a2009d2-154c-49c2-ae7a-4fca7c79a3fd", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1525282726,\"scheduledPurgeDate\":1533058726,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/454ffc8d23ac4fcba199857e0e4231f1\",\"attributes\":{\"enabled\":true,\"created\":1525282724,\"updated\":1525282724,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "705f16af-2a5b-45e9-96c4-db3dc60016d8", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1529962984,\"scheduledPurgeDate\":1537738984,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/b501f89c350e430a81d4efd59c372c91\",\"attributes\":{\"enabled\":true,\"created\":1529962979,\"updated\":1529962979,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:09 GMT", + "date" : "Mon, 25 Jun 2018 21:43:21 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -233,11 +206,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "6bcbdcd2-aa8b-4bed-8c19-aa68b2872584", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b65c2739-f027-4e75-ac8c-f78f8b7c87c3", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverDefaultProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverDefaultProviderTest.json index 3767cf6..e5c6aed 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverDefaultProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret192Base64_KeyVaultKeyResolverDefaultProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:05 GMT", + "date" : "Mon, 25 Jun 2018 21:20:36 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "17bfbab7-0a0a-4d64-8471-6ff3f1d3777f", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "62cb3197-e61c-44fb-87a2-b1fcaa0260ed", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:06 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:20:40 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "e535845c-2af9-4538-bd22-752b8e52aa03", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12\",\"attributes\":{\"enabled\":true,\"created\":1525282926,\"updated\":1525282926,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b5a08ae9-bf3b-46b5-b715-9b20356f7307", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e\",\"attributes\":{\"enabled\":true,\"created\":1529961640,\"updated\":1529961640,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:06 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:20:41 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "8d5ddb7b-c675-45ee-b22d-b305081c92bb", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12\",\"attributes\":{\"enabled\":true,\"created\":1525282926,\"updated\":1525282926,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "291803e2-3257-4d43-a855-ffae71542940", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e\",\"attributes\":{\"enabled\":true,\"created\":1529961640,\"updated\":1529961640,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:07 GMT", - "content-length" : "304", + "date" : "Mon, 25 Jun 2018 21:20:46 GMT", + "content-length" : "313", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "19693f26-4652-4398-b4cc-9ba692a587c7", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12\",\"attributes\":{\"enabled\":true,\"created\":1525282926,\"updated\":1525282926,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "efde48d1-b1bb-4abb-9eff-2a18105d3dae", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYX\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e\",\"attributes\":{\"enabled\":true,\"created\":1529961640,\"updated\":1529961640,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:07 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:20:48 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,49 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "cad4b58d-d778-4a2a-80e2-2b9ffa4efec8", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1525282928,\"scheduledPurgeDate\":1533058928,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12\",\"attributes\":{\"enabled\":true,\"created\":1525282926,\"updated\":1525282926,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 02 May 2018 17:42:07 GMT", - "content-length" : "94", - "server" : "Microsoft-IIS/10.0", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "5f4a61ec-ab21-417e-b728-c7c78d2123aa", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret2\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4557a962-740d-4221-9ff5-8f0fa90ae5e5", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1529961648,\"scheduledPurgeDate\":1537737648,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e\",\"attributes\":{\"enabled\":true,\"created\":1529961640,\"updated\":1529961640,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:18 GMT", + "date" : "Mon, 25 Jun 2018 21:20:50 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,23 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "af3b69f9-a3ec-4fa1-b324-d42f679061ca", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d901c334-4cbf-4c39-8706-e7f79ed78e3b", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret2\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:29 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:21:03 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -208,22 +181,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "af4cd826-972b-4008-9962-d2d1baec2a2c", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1525282928,\"scheduledPurgeDate\":1533058928,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret2/46be7beb7b8b43d1bf9891421cd2df12\",\"attributes\":{\"enabled\":true,\"created\":1525282926,\"updated\":1525282926,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b1c9446f-bffa-4028-abe0-e29d6bdadbae", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2\",\"deletedDate\":1529961648,\"scheduledPurgeDate\":1537737648,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret2/034d5deab8164ffc97ca154f0cd9466e\",\"attributes\":{\"enabled\":true,\"created\":1529961640,\"updated\":1529961640,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:42:30 GMT", + "date" : "Mon, 25 Jun 2018 21:21:04 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -233,11 +206,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "a5fcd552-8f79-470b-960a-b31566b5288c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c1f5b6ab-e133-4215-956a-2da4f3be09df", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverBCProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverBCProviderTest.json index d896128..af284b3 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverBCProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverBCProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:40 GMT", + "date" : "Mon, 25 Jun 2018 21:42:01 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "b4559d0d-c821-4d5d-95e4-d2c00aa9066b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cc5bd3d4-d3ff-4453-a20e-fa49e582a84b", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:42 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:42:03 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "663c95e5-31c1-4dc6-a01f-536ee251f455", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a\",\"attributes\":{\"enabled\":true,\"created\":1525282662,\"updated\":1525282662,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2a72c49e-5d14-4e46-97fc-62dacb0c9c0f", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab\",\"attributes\":{\"enabled\":true,\"created\":1529962923,\"updated\":1529962923,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:42 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:42:06 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "17aa7a71-2c05-466e-a5f2-9812ef086ff8", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a\",\"attributes\":{\"enabled\":true,\"created\":1525282662,\"updated\":1525282662,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2277fd77-1acd-4735-84b8-b6ef097c6ac2", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab\",\"attributes\":{\"enabled\":true,\"created\":1529962923,\"updated\":1529962923,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:43 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:42:07 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "054ecbcb-39d2-4fa9-a601-c5a06a236aaf", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a\",\"attributes\":{\"enabled\":true,\"created\":1525282662,\"updated\":1525282662,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d44518f5-ccf1-4e88-9586-4038c1fb1cf4", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab\",\"attributes\":{\"enabled\":true,\"created\":1529962923,\"updated\":1529962923,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:44 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:42:09 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,49 +127,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "215beab9-b630-4ddc-9a89-8224339e7651", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1525282664,\"scheduledPurgeDate\":1533058664,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a\",\"attributes\":{\"enabled\":true,\"created\":1525282662,\"updated\":1525282662,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 02 May 2018 17:37:45 GMT", - "content-length" : "94", - "server" : "Microsoft-IIS/10.0", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "86d9021e-8290-451f-90e3-5d318782c9a7", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret3\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f6e3b359-848e-4cc5-9143-12a6389e9808", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1529962929,\"scheduledPurgeDate\":1537738929,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab\",\"attributes\":{\"enabled\":true,\"created\":1529962923,\"updated\":1529962923,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:37:55 GMT", + "date" : "Mon, 25 Jun 2018 21:42:10 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -181,23 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "728b25e4-181f-4be7-a125-22c3c8d418a6", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b391ff5b-fef8-4053-a422-fdbd2f41f7a9", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret3\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:06 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:42:22 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -208,22 +181,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "0d20535e-da42-41a4-8fef-a6202af3405f", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1525282664,\"scheduledPurgeDate\":1533058664,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/f51c1d003cec4e75bd8077b747b9745a\",\"attributes\":{\"enabled\":true,\"created\":1525282662,\"updated\":1525282662,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0384cc96-00ef-4404-8de0-04b72ca1b14c", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1529962929,\"scheduledPurgeDate\":1537738929,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/a94886eb8ad64bef8af8e1fcc0d820ab\",\"attributes\":{\"enabled\":true,\"created\":1529962923,\"updated\":1529962923,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:38:06 GMT", + "date" : "Mon, 25 Jun 2018 21:42:24 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -233,11 +206,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "7c0da973-a8e5-401a-a446-7479d7523736", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4212235d-b2eb-4f99-ae79-703da82c16a3", "Body" : "" } } ], diff --git a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverDefaultProviderTest.json b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverDefaultProviderTest.json index 9877ab0..449913a 100644 --- a/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverDefaultProviderTest.json +++ b/azure-keyvault-extensions/target/test-classes/session-records/KeyVault_KeyVaultKeyResolver_Secret256Base64_KeyVaultKeyResolverDefaultProviderTest.json @@ -1,41 +1,41 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/jose+json; charset=utf-8" + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:36 GMT", + "date" : "Mon, 25 Jun 2018 21:21:37 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", - "www-authenticate" : "Bearer authorization=\"https://login.windows.net/47b059c3-046e-4c01-baa7-8b27aee31575\", resource=\"https://vault.azure.net\"", + "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", "retry-after" : "0", "StatusCode" : "401", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "3332aa09-f673-433e-8d61-02cf273f2626", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "515fc45a-5154-4def-bd38-7f5e7e225274", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:37 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:21:40 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -46,23 +46,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "1cf0a4ba-c972-405f-bf87-7ea808e0c276", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b\",\"attributes\":{\"enabled\":true,\"created\":1525282777,\"updated\":1525282777,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "fe666844-bbff-4583-aee4-61d597f7e0f7", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be\",\"attributes\":{\"enabled\":true,\"created\":1529961701,\"updated\":1529961701,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:37 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:21:44 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -73,23 +73,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "868f9d4f-4e8c-45ba-be3f-14e9f62d3aee", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b\",\"attributes\":{\"enabled\":true,\"created\":1525282777,\"updated\":1525282777,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "abd49cc7-f213-4c39-984a-8625ead28a4a", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be\",\"attributes\":{\"enabled\":true,\"created\":1529961701,\"updated\":1529961701,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:38 GMT", - "content-length" : "315", + "date" : "Mon, 25 Jun 2018 21:21:46 GMT", + "content-length" : "324", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -100,23 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "0f44e321-e8da-453c-891e-a765a3c2c464", - "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b\",\"attributes\":{\"enabled\":true,\"created\":1525282777,\"updated\":1525282777,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "53d069d3-6c2f-4fc8-b0e6-fbdbaacbad4b", + "Body" : "{\"value\":\"AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8\",\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be\",\"attributes\":{\"enabled\":true,\"created\":1529961701,\"updated\":1529961701,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:39 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:21:47 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -127,22 +127,49 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "96d46918-c0ee-4f4a-951f-73ddd606d97d", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1525282779,\"scheduledPurgeDate\":1533058779,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b\",\"attributes\":{\"enabled\":true,\"created\":1525282777,\"updated\":1525282777,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d406910f-3266-45f2-9913-aa22d4c0ebc2", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1529961708,\"scheduledPurgeDate\":1537737708,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be\",\"attributes\":{\"enabled\":true,\"created\":1529961701,\"updated\":1529961701,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 21:21:48 GMT", + "content-length" : "94", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "15c519bc-78e5-40a5-bb8e-de82a9e8416d", + "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret3\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:39 GMT", + "date" : "Mon, 25 Jun 2018 21:21:59 GMT", "content-length" : "94", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -154,23 +181,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "6b958ae2-7c2a-4f02-92c9-bba5f03d8c5b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9575069d-5da9-492f-bbec-d7e66a695f25", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: JavaExtensionSecret3\"}}" } }, { "Method" : "GET", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:49 GMT", - "content-length" : "407", + "date" : "Mon, 25 Jun 2018 21:22:11 GMT", + "content-length" : "425", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -181,22 +208,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "e245049d-a962-46d4-977a-5c7292ff1e8d", - "Body" : "{\"recoveryId\":\"https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1525282779,\"scheduledPurgeDate\":1533058779,\"contentType\":\"application/octet-stream\",\"id\":\"https://java-sdk-test.vault.azure.net/secrets/JavaExtensionSecret3/09ef7defe5e646268a56449d49c1622b\",\"attributes\":{\"enabled\":true,\"created\":1525282777,\"updated\":1525282777,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c3cda06a-f5e3-4ab9-8ac8-7659c73a8c0c", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3\",\"deletedDate\":1529961708,\"scheduledPurgeDate\":1537737708,\"contentType\":\"application/octet-stream\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/JavaExtensionSecret3/ea1deb0012b24eb89a924fe1783751be\",\"attributes\":{\"enabled\":true,\"created\":1529961701,\"updated\":1529961701,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://java-sdk-test.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/JavaExtensionSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/1.1-beta-1 OS:Windows 10/10.0 MacAddressHash:33ca9d883563504bcab192245cb7c9433b70f0d55db34ad5136cf6aa9fb6b5f5 Java:10 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 02 May 2018 17:39:50 GMT", + "date" : "Mon, 25 Jun 2018 21:22:14 GMT", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -206,11 +233,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.164;act_addr_fam=InterNetwork;", - "x-ms-keyvault-region" : "eastus", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.847", - "x-ms-request-id" : "02643449-e04a-4aca-bb2b-848aba94f0c5", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5ea866f5-7130-48ca-b495-8eed855098eb", "Body" : "" } } ], diff --git a/azure-keyvault-webkey/pom.xml b/azure-keyvault-webkey/pom.xml index e3f586f..c33885f 100644 --- a/azure-keyvault-webkey/pom.xml +++ b/azure-keyvault-webkey/pom.xml @@ -6,7 +6,7 @@ com.microsoft.azure azure-keyvault-parent - 1.1-beta-1 + 1.1 ../pom.xml diff --git a/azure-keyvault/pom.xml b/azure-keyvault/pom.xml index e72f913..33a4e0e 100644 --- a/azure-keyvault/pom.xml +++ b/azure-keyvault/pom.xml @@ -6,7 +6,7 @@ the MIT License. See License.txt in the project root for license information. -- com.microsoft.azure azure-keyvault-parent - 1.1-beta-1 + 1.1 ../pom.xml @@ -76,9 +76,9 @@ the MIT License. See License.txt in the project root for license information. -- com.microsoft.azure azure-keyvault-cryptography - 1.1-beta-1 + 1.1 system - ${basedir}/../azure-keyvault-cryptography/target/azure-keyvault-cryptography-1.1-beta-1.jar + ${basedir}/../azure-keyvault-cryptography/target/azure-keyvault-cryptography-1.1.jar com.microsoft.azure diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateIdentifier.java index c78460e..3d89362 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateIdentifier.java @@ -1,49 +1,49 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -/** - * The certificate identifier. - */ -public final class CertificateIdentifier extends ObjectIdentifier { - - /** - * Verify whether the identifier is for certificate. - * @param identifier the certificate identifier - * @return true if the identifier is the certificate identifier. False otherwise. - */ - public static boolean isCertificateIdentifier(String identifier) { - return ObjectIdentifier.isObjectIdentifier("certificates", identifier); - } - - /** - * Constructor. - * @param vault The vault url - * @param name the certificate name - */ - public CertificateIdentifier(String vault, String name) { - this(vault, name, ""); - } - - /** - * Constructor. - * @param vault the vault url - * @param name the certificate name - * @param version the certificate version - */ - public CertificateIdentifier(String vault, String name, String version) { - super(vault, "certificates", name, version); - } - - /** - * Constructor. - * @param identifier the certificate identifier - */ - public CertificateIdentifier(String identifier) { - super("certificates", identifier); - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +/** + * The certificate identifier. + */ +public final class CertificateIdentifier extends ObjectIdentifier { + + /** + * Verify whether the identifier is for certificate. + * @param identifier the certificate identifier + * @return true if the identifier is the certificate identifier. False otherwise. + */ + public static boolean isCertificateIdentifier(String identifier) { + return ObjectIdentifier.isObjectIdentifier("certificates", identifier); + } + + /** + * Constructor. + * @param vault The vault url + * @param name the certificate name + */ + public CertificateIdentifier(String vault, String name) { + this(vault, name, ""); + } + + /** + * Constructor. + * @param vault the vault url + * @param name the certificate name + * @param version the certificate version + */ + public CertificateIdentifier(String vault, String name, String version) { + super(vault, "certificates", name, version); + } + + /** + * Constructor. + * @param identifier the certificate identifier + */ + public CertificateIdentifier(String identifier) { + super("certificates", identifier); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateOperationIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateOperationIdentifier.java index ed88be4..df61440 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateOperationIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/CertificateOperationIdentifier.java @@ -1,70 +1,70 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -import java.net.URI; -import java.net.URISyntaxException; - -/** - * The certificate operation identifier. - */ -public final class CertificateOperationIdentifier extends ObjectIdentifier { - - /** - * Verifies whether the identifier belongs to a key vault certificate operation. - * @param identifier the key vault certificate operation identifier. - * @return true if the identifier belongs to a key vault certificate operation. False otherwise. - */ - public static boolean isCertificateOperationIdentifier(String identifier) { - identifier = verifyNonEmpty(identifier, "identifier"); - - URI baseUri; - try { - baseUri = new URI(identifier); - } catch (URISyntaxException e) { - return false; - } - - // Path is of the form "/certificates/[name]/pending" - String[] segments = baseUri.getPath().split("/"); - if (segments.length != 4) { - return false; - } - - if (!(segments[1]).equals("certificates")) { - return false; - } - - if (!(segments[3]).equals("pending")) { - return false; - } - - return true; - } - - /** - * Constructor. - * @param vault the vault url - * @param name the name of certificate - * @param version the certificate version - */ - public CertificateOperationIdentifier(String vault, String name, String version) { - super(vault, "certificates", name, "pending"); - } - - /** - * Constructor. - * @param identifier the key vault certificate operation identifier. - */ - public CertificateOperationIdentifier(String identifier) { - super("certificates", identifier); - if (!version().equals("pending")) { - throw new IllegalArgumentException( - String.format("Invalid CertificateOperationIdentifier: {0}", identifier)); - } - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +import java.net.URI; +import java.net.URISyntaxException; + +/** + * The certificate operation identifier. + */ +public final class CertificateOperationIdentifier extends ObjectIdentifier { + + /** + * Verifies whether the identifier belongs to a key vault certificate operation. + * @param identifier the key vault certificate operation identifier. + * @return true if the identifier belongs to a key vault certificate operation. False otherwise. + */ + public static boolean isCertificateOperationIdentifier(String identifier) { + identifier = verifyNonEmpty(identifier, "identifier"); + + URI baseUri; + try { + baseUri = new URI(identifier); + } catch (URISyntaxException e) { + return false; + } + + // Path is of the form "/certificates/[name]/pending" + String[] segments = baseUri.getPath().split("/"); + if (segments.length != 4) { + return false; + } + + if (!(segments[1]).equals("certificates")) { + return false; + } + + if (!(segments[3]).equals("pending")) { + return false; + } + + return true; + } + + /** + * Constructor. + * @param vault the vault url + * @param name the name of certificate + * @param version the certificate version + */ + public CertificateOperationIdentifier(String vault, String name, String version) { + super(vault, "certificates", name, "pending"); + } + + /** + * Constructor. + * @param identifier the key vault certificate operation identifier. + */ + public CertificateOperationIdentifier(String identifier) { + super("certificates", identifier); + if (!version().equals("pending")) { + throw new IllegalArgumentException( + String.format("Invalid CertificateOperationIdentifier: {0}", identifier)); + } + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/IssuerIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/IssuerIdentifier.java index 6d50e9c..71c88d9 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/IssuerIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/IssuerIdentifier.java @@ -1,106 +1,106 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -import java.net.URI; -import java.net.URISyntaxException; -import java.security.InvalidParameterException; - -/** - * The issuer identifier. - */ -public final class IssuerIdentifier extends ObjectIdentifier { - - /** - * Verifies whether the identifier belongs to a key vault issuer. - * @param identifier the key vault issuer identifier. - * @return true if the identifier belongs to a key vault issuer. False otherwise. - */ - public static boolean isIssuerIdentifier(String identifier) { - identifier = verifyNonEmpty(identifier, "identifier"); - - URI baseUri; - try { - baseUri = new URI(identifier); - } catch (URISyntaxException e) { - return false; - } - - String[] segments = baseUri.getPath().split("/"); - if (segments.length != 4 || segments[1] != "certificates" || segments[2] != "issuers") { - return false; - } - - return true; - } - - /** - * Constructor. - * @param vault the vault url. - * @param name the name of issuer. - */ - public IssuerIdentifier(String vault, String name) { - vault = verifyNonEmpty(vault, "vault"); - - name = verifyNonEmpty(name, "name"); - - URI baseUri; - try { - baseUri = new URI(vault); - } catch (URISyntaxException e) { - throw new InvalidParameterException(String.format("Invalid ObjectIdentifier: %s. Not a valid URI", vault)); - } - - this.name = name; - this.version = null; - this.vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); - - baseIdentifier = String.format("%s/%s/%s", this.vault, "certificates/issuers", this.name); - identifier = baseIdentifier; - } - - /** - * Constructor. - * @param identifier the key vault issuer identifier. - */ - public IssuerIdentifier(String identifier) { - - identifier = verifyNonEmpty(identifier, "identifier"); - - URI baseUri; - try { - baseUri = new URI(identifier); - } catch (URISyntaxException e) { - throw new InvalidParameterException( - String.format("Invalid ObjectIdentifier: %s. Not a valid URI", identifier)); - } - - // Path is of the form "/collection/name[/version]" - String[] segments = baseUri.getPath().split("/"); - if (segments.length != 4) { - throw new InvalidParameterException(String - .format("Invalid ObjectIdentifier: %s. Bad number of segments: %d", identifier, segments.length)); - } - - if (!segments[1].equals("certificates")) { - throw new InvalidParameterException( - String.format("Invalid ObjectIdentifier: %s. Segment [1] should be '%s', found '%s'", identifier, - "certificates", segments[1])); - } - if (!segments[2].equals("issuers")) { - throw new InvalidParameterException( - String.format("Invalid ObjectIdentifier: %s. Segment [2] should be '%s', found '%s'", identifier, - "issuers", segments[2])); - } - - name = segments[3]; - version = ""; - vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); - baseIdentifier = String.format("%s/%s/%s", vault, "certificates/issuers", name); - this.identifier = baseIdentifier; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +import java.net.URI; +import java.net.URISyntaxException; +import java.security.InvalidParameterException; + +/** + * The issuer identifier. + */ +public final class IssuerIdentifier extends ObjectIdentifier { + + /** + * Verifies whether the identifier belongs to a key vault issuer. + * @param identifier the key vault issuer identifier. + * @return true if the identifier belongs to a key vault issuer. False otherwise. + */ + public static boolean isIssuerIdentifier(String identifier) { + identifier = verifyNonEmpty(identifier, "identifier"); + + URI baseUri; + try { + baseUri = new URI(identifier); + } catch (URISyntaxException e) { + return false; + } + + String[] segments = baseUri.getPath().split("/"); + if (segments.length != 4 || segments[1] != "certificates" || segments[2] != "issuers") { + return false; + } + + return true; + } + + /** + * Constructor. + * @param vault the vault url. + * @param name the name of issuer. + */ + public IssuerIdentifier(String vault, String name) { + vault = verifyNonEmpty(vault, "vault"); + + name = verifyNonEmpty(name, "name"); + + URI baseUri; + try { + baseUri = new URI(vault); + } catch (URISyntaxException e) { + throw new InvalidParameterException(String.format("Invalid ObjectIdentifier: %s. Not a valid URI", vault)); + } + + this.name = name; + this.version = null; + this.vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); + + baseIdentifier = String.format("%s/%s/%s", this.vault, "certificates/issuers", this.name); + identifier = baseIdentifier; + } + + /** + * Constructor. + * @param identifier the key vault issuer identifier. + */ + public IssuerIdentifier(String identifier) { + + identifier = verifyNonEmpty(identifier, "identifier"); + + URI baseUri; + try { + baseUri = new URI(identifier); + } catch (URISyntaxException e) { + throw new InvalidParameterException( + String.format("Invalid ObjectIdentifier: %s. Not a valid URI", identifier)); + } + + // Path is of the form "/collection/name[/version]" + String[] segments = baseUri.getPath().split("/"); + if (segments.length != 4) { + throw new InvalidParameterException(String + .format("Invalid ObjectIdentifier: %s. Bad number of segments: %d", identifier, segments.length)); + } + + if (!segments[1].equals("certificates")) { + throw new InvalidParameterException( + String.format("Invalid ObjectIdentifier: %s. Segment [1] should be '%s', found '%s'", identifier, + "certificates", segments[1])); + } + if (!segments[2].equals("issuers")) { + throw new InvalidParameterException( + String.format("Invalid ObjectIdentifier: %s. Segment [2] should be '%s', found '%s'", identifier, + "issuers", segments[2])); + } + + name = segments[3]; + version = ""; + vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); + baseIdentifier = String.format("%s/%s/%s", vault, "certificates/issuers", name); + this.identifier = baseIdentifier; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyIdentifier.java index 67dcd6f..493f409 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyIdentifier.java @@ -1,49 +1,49 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -/** - * The Key Vault key identifier. - */ -public final class KeyIdentifier extends ObjectIdentifier { - - /** - * Verifies whether the identifier belongs to a key vault key. - * @param identifier the key vault key identifier. - * @return true if the identifier belongs to a key vault key. False otherwise. - */ - public static boolean isKeyIdentifier(String identifier) { - return ObjectIdentifier.isObjectIdentifier("keys", identifier); - } - - /** - * Constructor. - * @param vault the vault url. - * @param name the name of key. - */ - public KeyIdentifier(String vault, String name) { - this(vault, name, ""); - } - - /** - * Constructor. - * @param vault the vault url. - * @param name the name of key. - * @param version the key version. - */ - public KeyIdentifier(String vault, String name, String version) { - super(vault, "keys", name, version); - } - - /** - * Constructor. - * @param identifier the key vault key identifier. - */ - public KeyIdentifier(String identifier) { - super("keys", identifier); - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +/** + * The Key Vault key identifier. + */ +public final class KeyIdentifier extends ObjectIdentifier { + + /** + * Verifies whether the identifier belongs to a key vault key. + * @param identifier the key vault key identifier. + * @return true if the identifier belongs to a key vault key. False otherwise. + */ + public static boolean isKeyIdentifier(String identifier) { + return ObjectIdentifier.isObjectIdentifier("keys", identifier); + } + + /** + * Constructor. + * @param vault the vault url. + * @param name the name of key. + */ + public KeyIdentifier(String vault, String name) { + this(vault, name, ""); + } + + /** + * Constructor. + * @param vault the vault url. + * @param name the name of key. + * @param version the key version. + */ + public KeyIdentifier(String vault, String name, String version) { + super(vault, "keys", name, version); + } + + /** + * Constructor. + * @param identifier the key vault key identifier. + */ + public KeyIdentifier(String identifier) { + super("keys", identifier); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java index cced528..7ebb555 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java @@ -1,29 +1,29 @@ -package com.microsoft.azure.keyvault; - -import com.microsoft.azure.keyvault.implementation.KeyVaultClientCustomImpl; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.credentials.ServiceClientCredentials; - -public final class KeyVaultClient extends KeyVaultClientCustomImpl implements KeyVaultClientCustom { - - /** - * Initializes an instance of KeyVaultClient client. - * - * @param credentials the management credentials for Azure - */ - public KeyVaultClient(ServiceClientCredentials credentials) { - super(credentials); - initializeService(); - } - /** - * Initializes an instance of KeyVaultClient client. - * - * @param restClient the REST client to connect to Azure. - */ - public KeyVaultClient(RestClient restClient) { - super(restClient); - initializeService(); - } - - +package com.microsoft.azure.keyvault; + +import com.microsoft.azure.keyvault.implementation.KeyVaultClientCustomImpl; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.credentials.ServiceClientCredentials; + +public final class KeyVaultClient extends KeyVaultClientCustomImpl implements KeyVaultClientCustom { + + /** + * Initializes an instance of KeyVaultClient client. + * + * @param credentials the management credentials for Azure + */ + public KeyVaultClient(ServiceClientCredentials credentials) { + super(credentials); + initializeService(); + } + /** + * Initializes an instance of KeyVaultClient client. + * + * @param restClient the REST client to connect to Azure. + */ + public KeyVaultClient(RestClient restClient) { + super(restClient); + initializeService(); + } + + } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java index 4e35066..06e31ec 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java @@ -1,6123 +1,6123 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault; - -import com.microsoft.azure.AzureClient; -import com.microsoft.azure.keyvault.models.BackupCertificateResult; -import com.microsoft.azure.keyvault.models.BackupKeyResult; -import com.microsoft.azure.keyvault.models.BackupSecretResult; -import com.microsoft.azure.keyvault.models.BackupStorageResult; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificateBundle; -import com.microsoft.azure.keyvault.models.CertificateIssuerItem; -import com.microsoft.azure.keyvault.models.CertificateItem; -import com.microsoft.azure.keyvault.models.CertificateOperation; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.Contacts; -import com.microsoft.azure.keyvault.models.DeletedCertificateBundle; -import com.microsoft.azure.keyvault.models.DeletedCertificateItem; -import com.microsoft.azure.keyvault.models.DeletedKeyBundle; -import com.microsoft.azure.keyvault.models.DeletedKeyItem; -import com.microsoft.azure.keyvault.models.DeletedSasDefinitionBundle; -import com.microsoft.azure.keyvault.models.DeletedSasDefinitionItem; -import com.microsoft.azure.keyvault.models.DeletedSecretBundle; -import com.microsoft.azure.keyvault.models.DeletedSecretItem; -import com.microsoft.azure.keyvault.models.DeletedStorageAccountItem; -import com.microsoft.azure.keyvault.models.DeletedStorageBundle; -import com.microsoft.azure.keyvault.models.IssuerAttributes; -import com.microsoft.azure.keyvault.models.IssuerBundle; -import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.models.KeyBundle; -import com.microsoft.azure.keyvault.models.KeyItem; -import com.microsoft.azure.keyvault.models.KeyOperationResult; -import com.microsoft.azure.keyvault.models.KeyVaultErrorException; -import com.microsoft.azure.keyvault.models.KeyVerifyResult; -import com.microsoft.azure.keyvault.models.OrganizationDetails; -import com.microsoft.azure.keyvault.models.SasDefinitionAttributes; -import com.microsoft.azure.keyvault.models.SasDefinitionBundle; -import com.microsoft.azure.keyvault.models.SasDefinitionItem; -import com.microsoft.azure.keyvault.models.SasTokenType; -import com.microsoft.azure.keyvault.models.SecretAttributes; -import com.microsoft.azure.keyvault.models.SecretBundle; -import com.microsoft.azure.keyvault.models.SecretItem; -import com.microsoft.azure.keyvault.models.StorageAccountAttributes; -import com.microsoft.azure.keyvault.models.StorageAccountItem; -import com.microsoft.azure.keyvault.models.StorageBundle; -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceResponse; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import rx.Observable; - -/** - * The interface for KeyVaultClientBase class. - */ -public interface KeyVaultClientBase { - /** - * Gets the REST client. - * - * @return the {@link RestClient} object. - */ - RestClient restClient(); - - /** - * Gets the {@link AzureClient} used for long running operations. - * @return the azure client; - */ - AzureClient getAzureClient(); - - /** - * Gets the User-Agent header for the client. - * - * @return the user agent string. - */ - String userAgent(); - - /** - * Gets Client API version.. - * - * @return the apiVersion value. - */ - String apiVersion(); - - /** - * Gets Gets or sets the preferred language for the response.. - * - * @return the acceptLanguage value. - */ - String acceptLanguage(); - - /** - * Sets Gets or sets the preferred language for the response.. - * - * @param acceptLanguage the acceptLanguage value. - * @return the service client itself - */ - KeyVaultClientBase withAcceptLanguage(String acceptLanguage); - - /** - * Gets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30.. - * - * @return the longRunningOperationRetryTimeout value. - */ - int longRunningOperationRetryTimeout(); - - /** - * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30.. - * - * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. - * @return the service client itself - */ - KeyVaultClientBase withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout); - - /** - * Gets 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. - */ - 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.. - * - * @param generateClientRequestId the generateClientRequestId value. - * @return the service client itself - */ - KeyVaultClientBase withGenerateClientRequestId(boolean generateClientRequestId); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty); - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve, final ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key); - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedKeyBundle object if successful. - */ - DeletedKeyBundle deleteKey(String vaultBaseUrl, String keyName); - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - Observable deleteKeyAsync(String vaultBaseUrl, String keyName); - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion); - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion); - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback); - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion); - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeyVersions(final String vaultBaseUrl, final String keyName); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName); - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeys(final String vaultBaseUrl); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable> getKeysAsync(final String vaultBaseUrl); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl); - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeys(final String vaultBaseUrl, final Integer maxresults); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupKeyResult object if successful. - */ - BackupKeyResult backupKey(String vaultBaseUrl, String keyName); - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupKeyResult object - */ - Observable backupKeyAsync(String vaultBaseUrl, String keyName); - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupKeyResult object - */ - Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup); - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback); - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup); - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 - */ - ServiceFuture encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 - */ - ServiceFuture decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url 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 - */ - ServiceFuture signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyVerifyResult object if successful. - */ - KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback); - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyVerifyResult object - */ - Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyVerifyResult object - */ - Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 - */ - ServiceFuture wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 - */ - ServiceFuture unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - PagedList getDeletedKeys(final String vaultBaseUrl); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - Observable> getDeletedKeysAsync(final String vaultBaseUrl); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl); - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - PagedList getDeletedKeys(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - Observable> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedKeyBundle object if successful. - */ - DeletedKeyBundle getDeletedKey(String vaultBaseUrl, String keyName); - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - Observable getDeletedKeyAsync(String vaultBaseUrl, String keyName); - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - Observable> getDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - void purgeDeletedKey(String vaultBaseUrl, String keyName); - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture purgeDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable purgeDeletedKeyAsync(String vaultBaseUrl, String keyName); - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable> purgeDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle recoverDeletedKey(String vaultBaseUrl, String keyName); - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture recoverDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable recoverDeletedKeyAsync(String vaultBaseUrl, String keyName); - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> recoverDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle setSecret(String vaultBaseUrl, String secretName, String value); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable setSecretAsync(String vaultBaseUrl, String secretName, String value); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value); - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSecretBundle object if successful. - */ - DeletedSecretBundle deleteSecret(String vaultBaseUrl, String secretName); - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - Observable deleteSecretAsync(String vaultBaseUrl, String secretName); - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion); - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion); - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback); - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion); - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecrets(final String vaultBaseUrl); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable> getSecretsAsync(final String vaultBaseUrl); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl); - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecretVersions(final String vaultBaseUrl, final String secretName); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName); - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - PagedList getDeletedSecrets(final String vaultBaseUrl); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - Observable> getDeletedSecretsAsync(final String vaultBaseUrl); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl); - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - PagedList getDeletedSecrets(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - Observable> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSecretBundle object if successful. - */ - DeletedSecretBundle getDeletedSecret(String vaultBaseUrl, String secretName); - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - Observable getDeletedSecretAsync(String vaultBaseUrl, String secretName); - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - Observable> getDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - void purgeDeletedSecret(String vaultBaseUrl, String secretName); - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture purgeDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable purgeDeletedSecretAsync(String vaultBaseUrl, String secretName); - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable> purgeDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle recoverDeletedSecret(String vaultBaseUrl, String secretName); - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture recoverDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable recoverDeletedSecretAsync(String vaultBaseUrl, String secretName); - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> recoverDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupSecretResult object if successful. - */ - BackupSecretResult backupSecret(String vaultBaseUrl, String secretName); - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture backupSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupSecretResult object - */ - Observable backupSecretAsync(String vaultBaseUrl, String secretName); - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupSecretResult object - */ - Observable> backupSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - SecretBundle restoreSecret(String vaultBaseUrl, byte[] secretBundleBackup); - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup, final ServiceCallback serviceCallback); - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup); - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - Observable> restoreSecretWithServiceResponseAsync(String vaultBaseUrl, byte[] secretBundleBackup); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificates(final String vaultBaseUrl); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable> getCertificatesAsync(final String vaultBaseUrl); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl); - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedCertificateBundle object if successful. - */ - DeletedCertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName); - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts); - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback); - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts); - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts); - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - Contacts getCertificateContacts(String vaultBaseUrl); - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback); - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable getCertificateContactsAsync(String vaultBaseUrl); - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl); - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - Contacts deleteCertificateContacts(String vaultBaseUrl); - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback); - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable deleteCertificateContactsAsync(String vaultBaseUrl); - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - PagedList getCertificateIssuers(final String vaultBaseUrl); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - Observable> getCertificateIssuersAsync(final String vaultBaseUrl); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl); - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider); - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName); - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName); - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName); - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName); - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - CertificateOperation createCertificate(String vaultBaseUrl, String certificateName); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable createCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName); - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults); - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificatePolicy object if successful. - */ - CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName); - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName); - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificatePolicy object if successful. - */ - CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback); - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion); - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion); - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback); - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion); - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion); - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested); - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback); - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested); - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested); - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName); - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName); - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName); - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName); - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates); - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupCertificateResult object if successful. - */ - BackupCertificateResult backupCertificate(String vaultBaseUrl, String certificateName); - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture backupCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupCertificateResult object - */ - Observable backupCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupCertificateResult object - */ - Observable> backupCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle restoreCertificate(String vaultBaseUrl, byte[] certificateBundleBackup); - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup, final ServiceCallback serviceCallback); - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup); - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> restoreCertificateWithServiceResponseAsync(String vaultBaseUrl, byte[] certificateBundleBackup); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - PagedList getDeletedCertificates(final String vaultBaseUrl); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable> getDeletedCertificatesAsync(final String vaultBaseUrl); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl); - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedCertificateBundle object if successful. - */ - DeletedCertificateBundle getDeletedCertificate(String vaultBaseUrl, String certificateName); - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - Observable getDeletedCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - Observable> getDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - void purgeDeletedCertificate(String vaultBaseUrl, String certificateName); - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable> purgeDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - CertificateBundle recoverDeletedCertificate(String vaultBaseUrl, String certificateName); - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName); - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - Observable> recoverDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - PagedList getStorageAccounts(final String vaultBaseUrl); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - Observable> getStorageAccountsAsync(final String vaultBaseUrl); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl); - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - PagedList getStorageAccounts(final String vaultBaseUrl, final Integer maxresults); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - Observable> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - PagedList getDeletedStorageAccounts(final String vaultBaseUrl); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl); - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - PagedList getDeletedStorageAccounts(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedStorageBundle object if successful. - */ - DeletedStorageBundle getDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - Observable getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - Observable> getDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - void purgeDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - Observable> purgeDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle recoverDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> recoverDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupStorageResult object if successful. - */ - BackupStorageResult backupStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupStorageResult object - */ - Observable backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupStorageResult object - */ - Observable> backupStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle restoreStorageAccount(String vaultBaseUrl, byte[] storageBundleBackup); - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup, final ServiceCallback serviceCallback); - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup); - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> restoreStorageAccountWithServiceResponseAsync(String vaultBaseUrl, byte[] storageBundleBackup); - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedStorageBundle object if successful. - */ - DeletedStorageBundle deleteStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - Observable deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - Observable> deleteStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle getStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable getStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> getStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, final ServiceCallback serviceCallback); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - StorageBundle regenerateStorageAccountKey(String vaultBaseUrl, String storageAccountName, String keyName); - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName, final ServiceCallback serviceCallback); - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName); - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - Observable> regenerateStorageAccountKeyWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String keyName); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName); - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName); - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSasDefinitionBundle object if successful. - */ - DeletedSasDefinitionBundle getDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - Observable getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - Observable> getDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle recoverDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> recoverDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSasDefinitionBundle object if successful. - */ - DeletedSasDefinitionBundle deleteSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - Observable deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - Observable> deleteSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle getSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> getSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, final ServiceCallback serviceCallback); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeyVersionsNext(final String nextPageLink); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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 - */ - ServiceFuture> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - Observable> getKeyVersionsNextAsync(final String nextPageLink); - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - PagedList getKeysNext(final String nextPageLink); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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 - */ - ServiceFuture> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - Observable> getKeysNextAsync(final String nextPageLink); - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - PagedList getDeletedKeysNext(final String nextPageLink); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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 - */ - ServiceFuture> getDeletedKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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<DeletedKeyItem> object - */ - Observable> getDeletedKeysNextAsync(final String nextPageLink); - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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<DeletedKeyItem> object - */ - Observable>> getDeletedKeysNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecretsNext(final String nextPageLink); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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 - */ - ServiceFuture> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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<SecretItem> object - */ - Observable> getSecretsNextAsync(final String nextPageLink); - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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<SecretItem> object - */ - Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - PagedList getSecretVersionsNext(final String nextPageLink); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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 - */ - ServiceFuture> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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<SecretItem> object - */ - Observable> getSecretVersionsNextAsync(final String nextPageLink); - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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<SecretItem> object - */ - Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - PagedList getDeletedSecretsNext(final String nextPageLink); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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 - */ - ServiceFuture> getDeletedSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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<DeletedSecretItem> object - */ - Observable> getDeletedSecretsNextAsync(final String nextPageLink); - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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<DeletedSecretItem> object - */ - Observable>> getDeletedSecretsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificatesNext(final String nextPageLink); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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 - */ - ServiceFuture> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - Observable> getCertificatesNextAsync(final String nextPageLink); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - PagedList getCertificateIssuersNext(final String nextPageLink); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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 - */ - ServiceFuture> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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<CertificateIssuerItem> object - */ - Observable> getCertificateIssuersNextAsync(final String nextPageLink); - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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<CertificateIssuerItem> object - */ - Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificateVersionsNext(final String nextPageLink); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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 - */ - ServiceFuture> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - Observable> getCertificateVersionsNextAsync(final String nextPageLink); - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - PagedList getDeletedCertificatesNext(final String nextPageLink); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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 - */ - ServiceFuture> getDeletedCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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<DeletedCertificateItem> object - */ - Observable> getDeletedCertificatesNextAsync(final String nextPageLink); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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<DeletedCertificateItem> object - */ - Observable>> getDeletedCertificatesNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - PagedList getStorageAccountsNext(final String nextPageLink); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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 - */ - ServiceFuture> getStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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<StorageAccountItem> object - */ - Observable> getStorageAccountsNextAsync(final String nextPageLink); - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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<StorageAccountItem> object - */ - Observable>> getStorageAccountsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - PagedList getDeletedStorageAccountsNext(final String nextPageLink); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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 - */ - ServiceFuture> getDeletedStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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<DeletedStorageAccountItem> object - */ - Observable> getDeletedStorageAccountsNextAsync(final String nextPageLink); - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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<DeletedStorageAccountItem> object - */ - Observable>> getDeletedStorageAccountsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - PagedList getSasDefinitionsNext(final String nextPageLink); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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 - */ - ServiceFuture> getSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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<SasDefinitionItem> object - */ - Observable> getSasDefinitionsNextAsync(final String nextPageLink); - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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<SasDefinitionItem> object - */ - Observable>> getSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - PagedList getDeletedSasDefinitionsNext(final String nextPageLink); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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 - */ - ServiceFuture> getDeletedSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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<DeletedSasDefinitionItem> object - */ - Observable> getDeletedSasDefinitionsNextAsync(final String nextPageLink); - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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<DeletedSasDefinitionItem> object - */ - Observable>> getDeletedSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink); - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault; + +import com.microsoft.azure.AzureClient; +import com.microsoft.azure.keyvault.models.BackupCertificateResult; +import com.microsoft.azure.keyvault.models.BackupKeyResult; +import com.microsoft.azure.keyvault.models.BackupSecretResult; +import com.microsoft.azure.keyvault.models.BackupStorageResult; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificateBundle; +import com.microsoft.azure.keyvault.models.CertificateIssuerItem; +import com.microsoft.azure.keyvault.models.CertificateItem; +import com.microsoft.azure.keyvault.models.CertificateOperation; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.Contacts; +import com.microsoft.azure.keyvault.models.DeletedCertificateBundle; +import com.microsoft.azure.keyvault.models.DeletedCertificateItem; +import com.microsoft.azure.keyvault.models.DeletedKeyBundle; +import com.microsoft.azure.keyvault.models.DeletedKeyItem; +import com.microsoft.azure.keyvault.models.DeletedSasDefinitionBundle; +import com.microsoft.azure.keyvault.models.DeletedSasDefinitionItem; +import com.microsoft.azure.keyvault.models.DeletedSecretBundle; +import com.microsoft.azure.keyvault.models.DeletedSecretItem; +import com.microsoft.azure.keyvault.models.DeletedStorageAccountItem; +import com.microsoft.azure.keyvault.models.DeletedStorageBundle; +import com.microsoft.azure.keyvault.models.IssuerAttributes; +import com.microsoft.azure.keyvault.models.IssuerBundle; +import com.microsoft.azure.keyvault.models.IssuerCredentials; +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.KeyItem; +import com.microsoft.azure.keyvault.models.KeyOperationResult; +import com.microsoft.azure.keyvault.models.KeyVaultErrorException; +import com.microsoft.azure.keyvault.models.KeyVerifyResult; +import com.microsoft.azure.keyvault.models.OrganizationDetails; +import com.microsoft.azure.keyvault.models.SasDefinitionAttributes; +import com.microsoft.azure.keyvault.models.SasDefinitionBundle; +import com.microsoft.azure.keyvault.models.SasDefinitionItem; +import com.microsoft.azure.keyvault.models.SasTokenType; +import com.microsoft.azure.keyvault.models.SecretAttributes; +import com.microsoft.azure.keyvault.models.SecretBundle; +import com.microsoft.azure.keyvault.models.SecretItem; +import com.microsoft.azure.keyvault.models.StorageAccountAttributes; +import com.microsoft.azure.keyvault.models.StorageAccountItem; +import com.microsoft.azure.keyvault.models.StorageBundle; +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.ServiceCallback; +import com.microsoft.rest.ServiceFuture; +import com.microsoft.rest.ServiceResponse; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import rx.Observable; + +/** + * The interface for KeyVaultClientBase class. + */ +public interface KeyVaultClientBase { + /** + * Gets the REST client. + * + * @return the {@link RestClient} object. + */ + RestClient restClient(); + + /** + * Gets the {@link AzureClient} used for long running operations. + * @return the azure client; + */ + AzureClient getAzureClient(); + + /** + * Gets the User-Agent header for the client. + * + * @return the user agent string. + */ + String userAgent(); + + /** + * Gets Client API version.. + * + * @return the apiVersion value. + */ + String apiVersion(); + + /** + * Gets Gets or sets the preferred language for the response.. + * + * @return the acceptLanguage value. + */ + String acceptLanguage(); + + /** + * Sets Gets or sets the preferred language for the response.. + * + * @param acceptLanguage the acceptLanguage value. + * @return the service client itself + */ + KeyVaultClientBase withAcceptLanguage(String acceptLanguage); + + /** + * Gets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30.. + * + * @return the longRunningOperationRetryTimeout value. + */ + int longRunningOperationRetryTimeout(); + + /** + * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30.. + * + * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. + * @return the service client itself + */ + KeyVaultClientBase withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout); + + /** + * Gets 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. + */ + 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.. + * + * @param generateClientRequestId the generateClientRequestId value. + * @return the service client itself + */ + KeyVaultClientBase withGenerateClientRequestId(boolean generateClientRequestId); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty); + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve, final ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key); + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags); + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedKeyBundle object if successful. + */ + DeletedKeyBundle deleteKey(String vaultBaseUrl, String keyName); + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + Observable deleteKeyAsync(String vaultBaseUrl, String keyName); + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion); + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion); + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback); + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion); + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeyVersions(final String vaultBaseUrl, final String keyName); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName); + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeys(final String vaultBaseUrl); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable> getKeysAsync(final String vaultBaseUrl); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl); + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeys(final String vaultBaseUrl, final Integer maxresults); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupKeyResult object if successful. + */ + BackupKeyResult backupKey(String vaultBaseUrl, String keyName); + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupKeyResult object + */ + Observable backupKeyAsync(String vaultBaseUrl, String keyName); + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupKeyResult object + */ + Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup); + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback); + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup); + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 + */ + ServiceFuture encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 + */ + ServiceFuture decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url 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 + */ + ServiceFuture signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value); + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyVerifyResult object if successful. + */ + KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback); + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyVerifyResult object + */ + Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyVerifyResult object + */ + Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 + */ + ServiceFuture wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 + */ + ServiceFuture unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + PagedList getDeletedKeys(final String vaultBaseUrl); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + Observable> getDeletedKeysAsync(final String vaultBaseUrl); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl); + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + PagedList getDeletedKeys(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + Observable> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedKeyBundle object if successful. + */ + DeletedKeyBundle getDeletedKey(String vaultBaseUrl, String keyName); + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + Observable getDeletedKeyAsync(String vaultBaseUrl, String keyName); + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + Observable> getDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + void purgeDeletedKey(String vaultBaseUrl, String keyName); + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture purgeDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable purgeDeletedKeyAsync(String vaultBaseUrl, String keyName); + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable> purgeDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle recoverDeletedKey(String vaultBaseUrl, String keyName); + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture recoverDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback); + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable recoverDeletedKeyAsync(String vaultBaseUrl, String keyName); + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> recoverDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle setSecret(String vaultBaseUrl, String secretName, String value); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable setSecretAsync(String vaultBaseUrl, String secretName, String value); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value); + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes); + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSecretBundle object if successful. + */ + DeletedSecretBundle deleteSecret(String vaultBaseUrl, String secretName); + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + Observable deleteSecretAsync(String vaultBaseUrl, String secretName); + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion); + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags); + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion); + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback); + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion); + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecrets(final String vaultBaseUrl); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable> getSecretsAsync(final String vaultBaseUrl); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl); + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecretVersions(final String vaultBaseUrl, final String secretName); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName); + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + PagedList getDeletedSecrets(final String vaultBaseUrl); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + Observable> getDeletedSecretsAsync(final String vaultBaseUrl); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl); + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + PagedList getDeletedSecrets(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + Observable> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSecretBundle object if successful. + */ + DeletedSecretBundle getDeletedSecret(String vaultBaseUrl, String secretName); + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + Observable getDeletedSecretAsync(String vaultBaseUrl, String secretName); + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + Observable> getDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + void purgeDeletedSecret(String vaultBaseUrl, String secretName); + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture purgeDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable purgeDeletedSecretAsync(String vaultBaseUrl, String secretName); + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable> purgeDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle recoverDeletedSecret(String vaultBaseUrl, String secretName); + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture recoverDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable recoverDeletedSecretAsync(String vaultBaseUrl, String secretName); + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> recoverDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupSecretResult object if successful. + */ + BackupSecretResult backupSecret(String vaultBaseUrl, String secretName); + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture backupSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupSecretResult object + */ + Observable backupSecretAsync(String vaultBaseUrl, String secretName); + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupSecretResult object + */ + Observable> backupSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName); + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + SecretBundle restoreSecret(String vaultBaseUrl, byte[] secretBundleBackup); + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup, final ServiceCallback serviceCallback); + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup); + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + Observable> restoreSecretWithServiceResponseAsync(String vaultBaseUrl, byte[] secretBundleBackup); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificates(final String vaultBaseUrl); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable> getCertificatesAsync(final String vaultBaseUrl); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl); + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedCertificateBundle object if successful. + */ + DeletedCertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName); + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts); + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback); + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts); + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts); + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + Contacts getCertificateContacts(String vaultBaseUrl); + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback); + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable getCertificateContactsAsync(String vaultBaseUrl); + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl); + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + Contacts deleteCertificateContacts(String vaultBaseUrl); + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback); + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable deleteCertificateContactsAsync(String vaultBaseUrl); + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + PagedList getCertificateIssuers(final String vaultBaseUrl); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + Observable> getCertificateIssuersAsync(final String vaultBaseUrl); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl); + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider); + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes); + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName); + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName); + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName); + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback); + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName); + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + CertificateOperation createCertificate(String vaultBaseUrl, String certificateName); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable createCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate); + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName); + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults); + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificatePolicy object if successful. + */ + CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName); + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName); + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificatePolicy object if successful. + */ + CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback); + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion); + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags); + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion); + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback); + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion); + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion); + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested); + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback); + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested); + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested); + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName); + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName); + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName); + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName); + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates); + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags); + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupCertificateResult object if successful. + */ + BackupCertificateResult backupCertificate(String vaultBaseUrl, String certificateName); + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture backupCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupCertificateResult object + */ + Observable backupCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupCertificateResult object + */ + Observable> backupCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle restoreCertificate(String vaultBaseUrl, byte[] certificateBundleBackup); + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup, final ServiceCallback serviceCallback); + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup); + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> restoreCertificateWithServiceResponseAsync(String vaultBaseUrl, byte[] certificateBundleBackup); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + PagedList getDeletedCertificates(final String vaultBaseUrl); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable> getDeletedCertificatesAsync(final String vaultBaseUrl); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl); + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending); + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedCertificateBundle object if successful. + */ + DeletedCertificateBundle getDeletedCertificate(String vaultBaseUrl, String certificateName); + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + Observable getDeletedCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + Observable> getDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + void purgeDeletedCertificate(String vaultBaseUrl, String certificateName); + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable> purgeDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + CertificateBundle recoverDeletedCertificate(String vaultBaseUrl, String certificateName); + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName); + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + Observable> recoverDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + PagedList getStorageAccounts(final String vaultBaseUrl); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + Observable> getStorageAccountsAsync(final String vaultBaseUrl); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl); + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + PagedList getStorageAccounts(final String vaultBaseUrl, final Integer maxresults); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + Observable> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + PagedList getDeletedStorageAccounts(final String vaultBaseUrl); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl); + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + PagedList getDeletedStorageAccounts(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedStorageBundle object if successful. + */ + DeletedStorageBundle getDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + Observable getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + Observable> getDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + void purgeDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + Observable> purgeDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle recoverDeletedStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> recoverDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupStorageResult object if successful. + */ + BackupStorageResult backupStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupStorageResult object + */ + Observable backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupStorageResult object + */ + Observable> backupStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle restoreStorageAccount(String vaultBaseUrl, byte[] storageBundleBackup); + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup, final ServiceCallback serviceCallback); + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup); + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> restoreStorageAccountWithServiceResponseAsync(String vaultBaseUrl, byte[] storageBundleBackup); + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedStorageBundle object if successful. + */ + DeletedStorageBundle deleteStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + Observable deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + Observable> deleteStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle getStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable getStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> getStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, final ServiceCallback serviceCallback); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey); + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName); + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags); + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + StorageBundle regenerateStorageAccountKey(String vaultBaseUrl, String storageAccountName, String keyName); + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName, final ServiceCallback serviceCallback); + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName); + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + Observable> regenerateStorageAccountKeyWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String keyName); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName); + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName); + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults); + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSasDefinitionBundle object if successful. + */ + DeletedSasDefinitionBundle getDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + Observable getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + Observable> getDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle recoverDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> recoverDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSasDefinitionBundle object if successful. + */ + DeletedSasDefinitionBundle deleteSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + Observable deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + Observable> deleteSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle getSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> getSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, final ServiceCallback serviceCallback); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod); + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName); + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeyVersionsNext(final String nextPageLink); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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 + */ + ServiceFuture> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + Observable> getKeyVersionsNextAsync(final String nextPageLink); + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + PagedList getKeysNext(final String nextPageLink); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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 + */ + ServiceFuture> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + Observable> getKeysNextAsync(final String nextPageLink); + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + PagedList getDeletedKeysNext(final String nextPageLink); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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 + */ + ServiceFuture> getDeletedKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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<DeletedKeyItem> object + */ + Observable> getDeletedKeysNextAsync(final String nextPageLink); + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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<DeletedKeyItem> object + */ + Observable>> getDeletedKeysNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecretsNext(final String nextPageLink); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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 + */ + ServiceFuture> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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<SecretItem> object + */ + Observable> getSecretsNextAsync(final String nextPageLink); + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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<SecretItem> object + */ + Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + PagedList getSecretVersionsNext(final String nextPageLink); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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 + */ + ServiceFuture> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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<SecretItem> object + */ + Observable> getSecretVersionsNextAsync(final String nextPageLink); + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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<SecretItem> object + */ + Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + PagedList getDeletedSecretsNext(final String nextPageLink); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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 + */ + ServiceFuture> getDeletedSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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<DeletedSecretItem> object + */ + Observable> getDeletedSecretsNextAsync(final String nextPageLink); + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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<DeletedSecretItem> object + */ + Observable>> getDeletedSecretsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificatesNext(final String nextPageLink); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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 + */ + ServiceFuture> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + Observable> getCertificatesNextAsync(final String nextPageLink); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + PagedList getCertificateIssuersNext(final String nextPageLink); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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 + */ + ServiceFuture> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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<CertificateIssuerItem> object + */ + Observable> getCertificateIssuersNextAsync(final String nextPageLink); + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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<CertificateIssuerItem> object + */ + Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificateVersionsNext(final String nextPageLink); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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 + */ + ServiceFuture> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + Observable> getCertificateVersionsNextAsync(final String nextPageLink); + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + PagedList getDeletedCertificatesNext(final String nextPageLink); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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 + */ + ServiceFuture> getDeletedCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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<DeletedCertificateItem> object + */ + Observable> getDeletedCertificatesNextAsync(final String nextPageLink); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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<DeletedCertificateItem> object + */ + Observable>> getDeletedCertificatesNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + PagedList getStorageAccountsNext(final String nextPageLink); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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 + */ + ServiceFuture> getStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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<StorageAccountItem> object + */ + Observable> getStorageAccountsNextAsync(final String nextPageLink); + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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<StorageAccountItem> object + */ + Observable>> getStorageAccountsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + PagedList getDeletedStorageAccountsNext(final String nextPageLink); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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 + */ + ServiceFuture> getDeletedStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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<DeletedStorageAccountItem> object + */ + Observable> getDeletedStorageAccountsNextAsync(final String nextPageLink); + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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<DeletedStorageAccountItem> object + */ + Observable>> getDeletedStorageAccountsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + PagedList getSasDefinitionsNext(final String nextPageLink); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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 + */ + ServiceFuture> getSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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<SasDefinitionItem> object + */ + Observable> getSasDefinitionsNextAsync(final String nextPageLink); + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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<SasDefinitionItem> object + */ + Observable>> getSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + PagedList getDeletedSasDefinitionsNext(final String nextPageLink); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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 + */ + ServiceFuture> getDeletedSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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<DeletedSasDefinitionItem> object + */ + Observable> getDeletedSasDefinitionsNextAsync(final String nextPageLink); + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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<DeletedSasDefinitionItem> object + */ + Observable>> getDeletedSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink); + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java index c037e56..c16be66 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java @@ -1,988 +1,988 @@ -package com.microsoft.azure.keyvault; - -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; -import com.microsoft.azure.keyvault.models.*; -import com.microsoft.azure.keyvault.requests.*; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceResponse; -import com.microsoft.rest.protocol.SerializerAdapter; -import okhttp3.OkHttpClient; -import retrofit2.Retrofit; -import rx.Observable; - -import java.util.List; -import java.util.Map; - -public interface KeyVaultClientCustom extends KeyVaultClientBase { - - /** - * @return the Retrofit instance.e - */ - Retrofit retrofit(); - - /** - * @return the HTTP client. - */ - OkHttpClient httpClient(); - - /** - * @return the adapter to a Jackson {@link com.fasterxml.jackson.databind.ObjectMapper}. - */ - SerializerAdapter serializerAdapter(); - - void initializeService(); - - /** - * @return the {@link RestClient} instance. - */ - RestClient restClient(); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param createKeyRequest the grouped properties for creating a key request - * @return the KeyBundle if successful. - */ - KeyBundle createKey(CreateKeyRequest createKeyRequest); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param createKeyRequest the grouped properties for creating a key request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param importKeyRequest the grouped properties for importing a key request - * - * @return the KeyBundle if successful. - */ - KeyBundle importKey(ImportKeyRequest importKeyRequest); - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param importKeyRequest the grouped properties for importing a key request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param updateKeyRequest the grouped properties for updating a key request - * - * @return the KeyBundle if successful. - */ - KeyBundle updateKey(UpdateKeyRequest updateKeyRequest); - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param updateKeyRequest the grouped properties for updating a key request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback); - - /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param keyIdentifier The full key identifier - * - * @return the KeyBundle if successful. - */ - KeyBundle getKey(String keyIdentifier); - - /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param keyIdentifier The full key identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback); - - /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @return the KeyBundle if successful. - */ - KeyBundle getKey(String vaultBaseUrl, String keyName); - - /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) ; - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * - * @return the PagedList<KeyItem> if successful. - */ - PagedList listKeyVersions(final String vaultBaseUrl, final String keyName); - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback); - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<KeyItem> if successful. - */ - PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults); - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * - * @return the PagedList<KeyItem> if successful. - */ - PagedList listKeys(final String vaultBaseUrl); - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<KeyItem> if successful. - */ - PagedList listKeys(final String vaultBaseUrl, final Integer maxresults); - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Wraps a symmetric key using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * - * @return the KeyOperationResult if successful. - */ - KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Wraps a symmetric key using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * - * @return the KeyOperationResult if successful. - */ - KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * - * @return the KeyOperationResult if successful. - */ - KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Decrypts a single block of encrypted data. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * - * @return the KeyOperationResult if successful. - */ - KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); - - /** - * Decrypts a single block of encrypted data. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Creates a signature from a digest using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * - * @return the KeyOperationResult if successful. - */ - KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value); - - /** - * Creates a signature from a digest using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); - - /** - * Verifies a signature using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * - * @return the KeyVerifyResult if successful. - */ - KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); - - /** - * Verifies a signature using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback); - - /** - * Sets a secret in the specified vault. - * - * @param setSecretRequest the grouped properties for setting a secret request - * - * @return the SecretBundle if successful. - */ - SecretBundle setSecret(SetSecretRequest setSecretRequest); - - /** - * Sets a secret in the specified vault. - * - * @param setSecretRequest the grouped properties for setting a secret request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback); - - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param updateSecretRequest the grouped properties for updating a secret request - * - * @return the SecretBundle if successful. - */ - SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest); - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param updateSecretRequest the grouped properties for updating a secret request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback); - /** - * Get a specified secret from a given key vault. - * - * @param secretIdentifier The URL for the secret. - * - * @return the SecretBundle if successful. - */ - SecretBundle getSecret(String secretIdentifier); - /** - * Get a specified secret from a given key vault. - * - * @param secretIdentifier The URL for the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback); - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * - * @return the SecretBundle if successful. - */ - SecretBundle getSecret(String vaultBaseUrl, String secretName); - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - - ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * - * @return the PagedList<SecretItem> if successful. - */ - PagedList listSecrets(final String vaultBaseUrl); - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) ; - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<SecretItem> if successful. - */ - PagedList listSecrets(final String vaultBaseUrl, final Integer maxresults); - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * - * @return the PagedList<SecretItem> if successful. - */ - PagedList listSecretVersions(final String vaultBaseUrl, final String secretName); - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback); - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<SecretItem> if successful. - */ - PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults); - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * - * @return the PagedList<CertificateItem> if successful. - */ - PagedList listCertificates(final String vaultBaseUrl) ; - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<CertificateItem> if successful. - */ - PagedList listCertificates(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * - * @return the PagedList<CertificateIssuerItem> if successful. - */ - PagedList listCertificateIssuers(final String vaultBaseUrl); - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<CertificateIssuerItem> if successful. - */ - PagedList listCertificateIssuers(final String vaultBaseUrl, final Integer maxresults); - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Sets the certificate contacts for the specified vault. - * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request - * - * @return the IssuerBundle if successful. - */ - IssuerBundle setCertificateIssuer(SetCertificateIssuerRequest setCertificateIssuerRequest); - - /** - * Sets the certificate contacts for the specified vault. - * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback); - - /** - * Updates the specified certificate issuer. - * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request - * - * @return the IssuerBundle if successful. - */ - IssuerBundle updateCertificateIssuer(UpdateCertificateIssuerRequest updateCertificateIssuerRequest); - - /** - * Updates the specified certificate issuer. - * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if callback is null - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback); - - /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. - * - * @param createCertificateRequest the grouped properties for creating a certificate request - * - * @return the CertificateOperation if successful. - */ - CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest); - - /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. - * - * @param createCertificateRequest the grouped properties for creating a certificate request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback); - - /** - * Imports a certificate into the specified vault. - * - * @param importCertificateRequest the grouped properties for importing a certificate request - * - * @return the CertificateBundle if successful. - */ - CertificateBundle importCertificate(ImportCertificateRequest importCertificateRequest); - - /** - * Imports a certificate into the specified vault. - * - * @param importCertificateRequest the grouped properties for importing a certificate request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback); - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * - * @return the PagedList<CertificateItem> if successful. - */ - PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName); - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback); - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * - * @return the PagedList<CertificateItem> if successful. - */ - PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults); - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. - * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request - * - * @return the CertificatePolicy if successful. - */ - CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest); - - /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. - * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback); - - /** - * Updates the attributes associated with the specified certificate. - * - * @param updateCertificateRequest the grouped properties for updating a certificate request - * - * @return the CertificateBundle if successful. - */ - CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest); - - /** - * Updates the attributes associated with the specified certificate. - * - * @param updateCertificateRequest the grouped properties for updating a certificate request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback); - - /** - * Gets information about a specified certificate. - * - * @param certificateIdentifier The certificate identifier - * - * @return the CertificateBundle if successful. - */ - CertificateBundle getCertificate(String certificateIdentifier); - - /** - * Gets information about a specified certificate. - * - * @param certificateIdentifier The certificate identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback); - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault - * - * @return the CertificateBundle if successful. - */ - CertificateBundle getCertificate(String vaultBaseUrl, String certificateName); - - /** - * Updates a certificate operation. - * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request - * - * @return the CertificateOperation if successful. - */ - CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest); - - /** - * Updates a certificate operation. - * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback); - - - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param mergeCertificateRequest the grouped properties for merging a certificate request - * - * @return the CertificateBundle if successful. - */ - CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest); - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param mergeCertificateRequest the grouped properties for merging a certificate request - * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback); - - - /** - * Gets the pending certificate signing request response. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * - * @return the String if successful. - */ - String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName); - /** - * Gets the pending certificate signing request response. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceFuture} object - */ - ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); - +package com.microsoft.azure.keyvault; + +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; +import com.microsoft.azure.keyvault.models.*; +import com.microsoft.azure.keyvault.requests.*; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.ServiceCallback; +import com.microsoft.rest.ServiceFuture; +import com.microsoft.rest.ServiceResponse; +import com.microsoft.rest.protocol.SerializerAdapter; +import okhttp3.OkHttpClient; +import retrofit2.Retrofit; +import rx.Observable; + +import java.util.List; +import java.util.Map; + +public interface KeyVaultClientCustom extends KeyVaultClientBase { + + /** + * @return the Retrofit instance.e + */ + Retrofit retrofit(); + + /** + * @return the HTTP client. + */ + OkHttpClient httpClient(); + + /** + * @return the adapter to a Jackson {@link com.fasterxml.jackson.databind.ObjectMapper}. + */ + SerializerAdapter serializerAdapter(); + + void initializeService(); + + /** + * @return the {@link RestClient} instance. + */ + RestClient restClient(); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param createKeyRequest the grouped properties for creating a key request + * @return the KeyBundle if successful. + */ + KeyBundle createKey(CreateKeyRequest createKeyRequest); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param createKeyRequest the grouped properties for creating a key request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param importKeyRequest the grouped properties for importing a key request + * + * @return the KeyBundle if successful. + */ + KeyBundle importKey(ImportKeyRequest importKeyRequest); + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param importKeyRequest the grouped properties for importing a key request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param updateKeyRequest the grouped properties for updating a key request + * + * @return the KeyBundle if successful. + */ + KeyBundle updateKey(UpdateKeyRequest updateKeyRequest); + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param updateKeyRequest the grouped properties for updating a key request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback); + + /** + * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param keyIdentifier The full key identifier + * + * @return the KeyBundle if successful. + */ + KeyBundle getKey(String keyIdentifier); + + /** + * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param keyIdentifier The full key identifier + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback); + + /** + * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @return the KeyBundle if successful. + */ + KeyBundle getKey(String vaultBaseUrl, String keyName); + + /** + * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) ; + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * + * @return the PagedList<KeyItem> if successful. + */ + PagedList listKeyVersions(final String vaultBaseUrl, final String keyName); + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback); + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<KeyItem> if successful. + */ + PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults); + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * + * @return the PagedList<KeyItem> if successful. + */ + PagedList listKeys(final String vaultBaseUrl); + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<KeyItem> if successful. + */ + PagedList listKeys(final String vaultBaseUrl, final Integer maxresults); + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Wraps a symmetric key using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be wrapped + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be unwrapped + * + * @return the KeyOperationResult if successful. + */ + KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be unwrapped + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Wraps a symmetric key using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be wrapped + * + * @return the KeyOperationResult if successful. + */ + KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be encrypted + * + * @return the KeyOperationResult if successful. + */ + KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be encrypted + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Decrypts a single block of encrypted data. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be decrypted + * + * @return the KeyOperationResult if successful. + */ + KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); + + /** + * Decrypts a single block of encrypted data. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be decrypted + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Creates a signature from a digest using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be signed + * + * @return the KeyOperationResult if successful. + */ + KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value); + + /** + * Creates a signature from a digest using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be signed + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + + /** + * Verifies a signature using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest The digest used for signing + * @param signature The signature to be verified + * + * @return the KeyVerifyResult if successful. + */ + KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); + + /** + * Verifies a signature using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest The digest used for signing + * @param signature The signature to be verified + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback); + + /** + * Sets a secret in the specified vault. + * + * @param setSecretRequest the grouped properties for setting a secret request + * + * @return the SecretBundle if successful. + */ + SecretBundle setSecret(SetSecretRequest setSecretRequest); + + /** + * Sets a secret in the specified vault. + * + * @param setSecretRequest the grouped properties for setting a secret request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback); + + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param updateSecretRequest the grouped properties for updating a secret request + * + * @return the SecretBundle if successful. + */ + SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest); + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param updateSecretRequest the grouped properties for updating a secret request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback); + /** + * Get a specified secret from a given key vault. + * + * @param secretIdentifier The URL for the secret. + * + * @return the SecretBundle if successful. + */ + SecretBundle getSecret(String secretIdentifier); + /** + * Get a specified secret from a given key vault. + * + * @param secretIdentifier The URL for the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback); + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * + * @return the SecretBundle if successful. + */ + SecretBundle getSecret(String vaultBaseUrl, String secretName); + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + + ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * + * @return the PagedList<SecretItem> if successful. + */ + PagedList listSecrets(final String vaultBaseUrl); + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) ; + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<SecretItem> if successful. + */ + PagedList listSecrets(final String vaultBaseUrl, final Integer maxresults); + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * + * @return the PagedList<SecretItem> if successful. + */ + PagedList listSecretVersions(final String vaultBaseUrl, final String secretName); + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback); + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<SecretItem> if successful. + */ + PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults); + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * + * @return the PagedList<CertificateItem> if successful. + */ + PagedList listCertificates(final String vaultBaseUrl) ; + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<CertificateItem> if successful. + */ + PagedList listCertificates(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * + * @return the PagedList<CertificateIssuerItem> if successful. + */ + PagedList listCertificateIssuers(final String vaultBaseUrl); + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<CertificateIssuerItem> if successful. + */ + PagedList listCertificateIssuers(final String vaultBaseUrl, final Integer maxresults); + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Sets the certificate contacts for the specified vault. + * + * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * + * @return the IssuerBundle if successful. + */ + IssuerBundle setCertificateIssuer(SetCertificateIssuerRequest setCertificateIssuerRequest); + + /** + * Sets the certificate contacts for the specified vault. + * + * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback); + + /** + * Updates the specified certificate issuer. + * + * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * + * @return the IssuerBundle if successful. + */ + IssuerBundle updateCertificateIssuer(UpdateCertificateIssuerRequest updateCertificateIssuerRequest); + + /** + * Updates the specified certificate issuer. + * + * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if callback is null + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback); + + /** + * Creates a new certificate version. If this is the first version, the certificate resource is created. + * + * @param createCertificateRequest the grouped properties for creating a certificate request + * + * @return the CertificateOperation if successful. + */ + CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest); + + /** + * Creates a new certificate version. If this is the first version, the certificate resource is created. + * + * @param createCertificateRequest the grouped properties for creating a certificate request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback); + + /** + * Imports a certificate into the specified vault. + * + * @param importCertificateRequest the grouped properties for importing a certificate request + * + * @return the CertificateBundle if successful. + */ + CertificateBundle importCertificate(ImportCertificateRequest importCertificateRequest); + + /** + * Imports a certificate into the specified vault. + * + * @param importCertificateRequest the grouped properties for importing a certificate request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback); + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * + * @return the PagedList<CertificateItem> if successful. + */ + PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName); + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback); + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * + * @return the PagedList<CertificateItem> if successful. + */ + PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults); + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * + * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * + * @return the CertificatePolicy if successful. + */ + CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest); + + /** + * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * + * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback); + + /** + * Updates the attributes associated with the specified certificate. + * + * @param updateCertificateRequest the grouped properties for updating a certificate request + * + * @return the CertificateBundle if successful. + */ + CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest); + + /** + * Updates the attributes associated with the specified certificate. + * + * @param updateCertificateRequest the grouped properties for updating a certificate request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback); + + /** + * Gets information about a specified certificate. + * + * @param certificateIdentifier The certificate identifier + * + * @return the CertificateBundle if successful. + */ + CertificateBundle getCertificate(String certificateIdentifier); + + /** + * Gets information about a specified certificate. + * + * @param certificateIdentifier The certificate identifier + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback); + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate in the given vault + * + * @return the CertificateBundle if successful. + */ + CertificateBundle getCertificate(String vaultBaseUrl, String certificateName); + + /** + * Updates a certificate operation. + * + * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * + * @return the CertificateOperation if successful. + */ + CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest); + + /** + * Updates a certificate operation. + * + * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback); + + + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param mergeCertificateRequest the grouped properties for merging a certificate request + * + * @return the CertificateBundle if successful. + */ + CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest); + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param mergeCertificateRequest the grouped properties for merging a certificate request + * + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback); + + + /** + * Gets the pending certificate signing request response. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * + * @return the String if successful. + */ + String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName); + /** + * Gets the pending certificate signing request response. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceFuture} object + */ + ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java index 8e68433..1444064 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java @@ -1,6823 +1,6823 @@ -/** - * 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 1.0.0.0 - * Changes may cause incorrect behavior and will be lost if the code is - * regenerated. - */ - -package com.microsoft.azure.keyvault; - -import com.google.common.base.Joiner; -import com.google.common.reflect.TypeToken; -import com.microsoft.azure.AzureClient; -import com.microsoft.azure.AzureServiceFuture; -import com.microsoft.azure.AzureServiceClient; -import com.microsoft.azure.keyvault.models.BackupKeyResult; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificateBundle; -import com.microsoft.azure.keyvault.models.CertificateCreateParameters; -import com.microsoft.azure.keyvault.models.CertificateImportParameters; -import com.microsoft.azure.keyvault.models.CertificateIssuerItem; -import com.microsoft.azure.keyvault.models.CertificateIssuerSetParameters; -import com.microsoft.azure.keyvault.models.CertificateIssuerUpdateParameters; -import com.microsoft.azure.keyvault.models.CertificateItem; -import com.microsoft.azure.keyvault.models.CertificateMergeParameters; -import com.microsoft.azure.keyvault.models.CertificateOperation; -import com.microsoft.azure.keyvault.models.CertificateOperationUpdateParameter; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.CertificateUpdateParameters; -import com.microsoft.azure.keyvault.models.Contacts; -import com.microsoft.azure.keyvault.models.IssuerAttributes; -import com.microsoft.azure.keyvault.models.IssuerBundle; -import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.models.KeyBundle; -import com.microsoft.azure.keyvault.models.KeyCreateParameters; -import com.microsoft.azure.keyvault.models.KeyImportParameters; -import com.microsoft.azure.keyvault.models.KeyItem; -import com.microsoft.azure.keyvault.models.KeyOperationResult; -import com.microsoft.azure.keyvault.models.KeyOperationsParameters; -import com.microsoft.azure.keyvault.models.KeyRestoreParameters; -import com.microsoft.azure.keyvault.models.KeySignParameters; -import com.microsoft.azure.keyvault.models.KeyUpdateParameters; -import com.microsoft.azure.keyvault.models.KeyVaultErrorException; -import com.microsoft.azure.keyvault.models.KeyVerifyParameters; -import com.microsoft.azure.keyvault.models.KeyVerifyResult; -import com.microsoft.azure.keyvault.models.OrganizationDetails; -import com.microsoft.azure.keyvault.models.PageImpl; -import com.microsoft.azure.keyvault.models.SecretAttributes; -import com.microsoft.azure.keyvault.models.SecretBundle; -import com.microsoft.azure.keyvault.models.SecretItem; -import com.microsoft.azure.keyvault.models.SecretSetParameters; -import com.microsoft.azure.keyvault.models.SecretUpdateParameters; -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; -import com.microsoft.rest.credentials.ServiceClientCredentials; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceResponse; -import com.microsoft.rest.Validator; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import okhttp3.ResponseBody; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.HTTP; -import retrofit2.http.PATCH; -import retrofit2.http.Path; -import retrofit2.http.POST; -import retrofit2.http.PUT; -import retrofit2.http.Query; -import retrofit2.http.Url; -import retrofit2.Response; -import rx.functions.Func1; -import rx.Observable; - -/** - * Initializes a new instance of the KeyVaultClientImpl class. - */ -final class KeyVaultClientImpl extends AzureServiceClient { - /** The Retrofit service to perform REST calls. */ - private KeyVaultClientService service; - /** the {@link AzureClient} used for long running operations. */ - private AzureClient azureClient; - - /** - * Gets the {@link AzureClient} used for long running operations. - * @return the azure client; - */ - public AzureClient getAzureClient() { - return this.azureClient; - } - - /** Client API version. */ - private String apiVersion; - - /** - * Gets Client API version. - * - * @return the apiVersion value. - */ - public String apiVersion() { - return this.apiVersion; - } - - /** Gets or sets the preferred language for the response. */ - private String acceptLanguage; - - /** - * Gets Gets or sets the preferred language for the response. - * - * @return the acceptLanguage value. - */ - public String acceptLanguage() { - return this.acceptLanguage; - } - - /** - * Sets Gets or sets the preferred language for the response. - * - * @param acceptLanguage the acceptLanguage value. - * @return the service client itself - */ - public KeyVaultClientImpl withAcceptLanguage(String acceptLanguage) { - this.acceptLanguage = acceptLanguage; - return this; - } - - /** Gets or sets 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. - * - * @return the longRunningOperationRetryTimeout value. - */ - public int longRunningOperationRetryTimeout() { - return this.longRunningOperationRetryTimeout; - } - - /** - * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. - * - * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. - * @return the service client itself - */ - public KeyVaultClientImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) { - this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout; - return this; - } - - /** 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. - * - * @return the generateClientRequestId value. - */ - public boolean generateClientRequestId() { - return this.generateClientRequestId; - } - - /** - * Sets 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 - */ - public KeyVaultClientImpl withGenerateClientRequestId(boolean generateClientRequestId) { - this.generateClientRequestId = generateClientRequestId; - return this; - } - - /** - * Initializes an instance of KeyVaultClient client. - * - * @param credentials the management credentials for Azure - */ - public KeyVaultClientImpl(ServiceClientCredentials credentials) { - this("https://{vaultBaseUrl}", credentials); - } - - /** - * Initializes an instance of KeyVaultClient client. - * - * @param baseUrl the base URL of the host - * @param credentials the management credentials for Azure - */ - private KeyVaultClientImpl(String baseUrl, ServiceClientCredentials credentials) { - super(baseUrl, credentials); - initialize(); - } - - /** - * Initializes an instance of KeyVaultClient client. - * - * @param restClient the REST client to connect to Azure. - */ - public KeyVaultClientImpl(RestClient restClient) { - super(restClient); - initialize(); - } - - protected void initialize() { - this.apiVersion = "2016-10-01"; - this.acceptLanguage = "en-US"; - this.longRunningOperationRetryTimeout = 30; - this.generateClientRequestId = true; - this.azureClient = new AzureClient(this); - initializeService(); - } - - /** - * Gets the User-Agent header for the client. - * - * @return the user agent string. - */ - @Override - public String userAgent() { - return String.format("Azure-SDK-For-Java/%s (%s)", - getClass().getPackage().getImplementationVersion(), - "KeyVaultClient, 2016-10-01"); - } - - private void initializeService() { - service = restClient().retrofit().create(KeyVaultClientService.class); - } - - /** - * The interface defining all the services for KeyVaultClient to be - * used by Retrofit to perform actually REST calls. - */ - interface KeyVaultClientService { - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey" }) - @POST("keys/{key-name}/create") - Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey" }) - @PUT("keys/{key-name}") - Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey" }) - @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) - Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey" }) - @PATCH("keys/{key-name}/{key-version}") - Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey" }) - @GET("keys/{key-name}/{key-version}") - Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions" }) - @GET("keys/{key-name}/versions") - Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys" }) - @GET("keys") - Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey" }) - @POST("keys/{key-name}/backup") - Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey" }) - @POST("keys/restore") - Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt" }) - @POST("keys/{key-name}/{key-version}/encrypt") - Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt" }) - @POST("keys/{key-name}/{key-version}/decrypt") - Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign" }) - @POST("keys/{key-name}/{key-version}/sign") - Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify" }) - @POST("keys/{key-name}/{key-version}/verify") - Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey" }) - @POST("keys/{key-name}/{key-version}/wrapkey") - Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey" }) - @POST("keys/{key-name}/{key-version}/unwrapkey") - Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret" }) - @PUT("secrets/{secret-name}") - Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret" }) - @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) - Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret" }) - @PATCH("secrets/{secret-name}/{secret-version}") - Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret" }) - @GET("secrets/{secret-name}/{secret-version}") - Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets" }) - @GET("secrets") - Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions" }) - @GET("secrets/{secret-name}/versions") - Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates" }) - @GET("certificates") - Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate" }) - @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts" }) - @PUT("certificates/contacts") - Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts" }) - @GET("certificates/contacts") - Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts" }) - @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) - Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers" }) - @GET("certificates/issuers") - Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer" }) - @PUT("certificates/issuers/{issuer-name}") - Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer" }) - @PATCH("certificates/issuers/{issuer-name}") - Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer" }) - @GET("certificates/issuers/{issuer-name}") - Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer" }) - @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate" }) - @POST("certificates/{certificate-name}/create") - Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate" }) - @POST("certificates/{certificate-name}/import") - Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions" }) - @GET("certificates/{certificate-name}/versions") - Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy" }) - @GET("certificates/{certificate-name}/policy") - Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy" }) - @PATCH("certificates/{certificate-name}/policy") - Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate" }) - @PATCH("certificates/{certificate-name}/{certificate-version}") - Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate" }) - @GET("certificates/{certificate-name}/{certificate-version}") - Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation" }) - @PATCH("certificates/{certificate-name}/pending") - Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation" }) - @GET("certificates/{certificate-name}/pending") - Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation" }) - @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) - Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate" }) - @POST("certificates/{certificate-name}/pending/merge") - Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext" }) - @GET - Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClient getKeysNext" }) - @GET - Observable> getKeysNext(@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.keyvault.KeyVaultClient getSecretsNext" }) - @GET - Observable> getSecretsNext(@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.keyvault.KeyVaultClient getSecretVersionsNext" }) - @GET - Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClient getCertificatesNext" }) - @GET - Observable> getCertificatesNext(@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.keyvault.KeyVaultClient getCertificateIssuersNext" }) - @GET - Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClient getCertificateVersionsNext" }) - @GET - Observable> getCertificateVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); - - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @return the KeyBundle object if successful. - */ - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).toBlocking().single().body(); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty), serviceCallback); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @return the observable to the KeyBundle object - */ - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @return the observable to the KeyBundle object - */ - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (kty == null) { - throw new IllegalArgumentException("Parameter kty is required and cannot be null."); - } - final Integer keySize = null; - final List keyOps = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - KeyCreateParameters parameters = new KeyCreateParameters(); - parameters.withKty(kty); - parameters.withKeySize(null); - parameters.withKeyOps(null); - parameters.withKeyAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the KeyBundle object if successful. - */ - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags).toBlocking().single().body(); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags), serviceCallback); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (kty == null) { - throw new IllegalArgumentException("Parameter kty is required and cannot be null."); - } - Validator.validate(keyOps); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyCreateParameters parameters = new KeyCreateParameters(); - parameters.withKty(kty); - parameters.withKeySize(keySize); - parameters.withKeyOps(keyOps); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse createKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @return the KeyBundle object if successful. - */ - public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).toBlocking().single().body(); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key), serviceCallback); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @return the observable to the KeyBundle object - */ - public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @return the observable to the KeyBundle object - */ - public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (key == null) { - throw new IllegalArgumentException("Parameter key is required and cannot be null."); - } - Validator.validate(key); - final Boolean hsm = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - KeyImportParameters parameters = new KeyImportParameters(); - parameters.withHsm(null); - parameters.withKey(key); - parameters.withKeyAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the KeyBundle object if successful. - */ - public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).toBlocking().single().body(); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags), serviceCallback); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (key == null) { - throw new IllegalArgumentException("Parameter key is required and cannot be null."); - } - Validator.validate(key); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyImportParameters parameters = new KeyImportParameters(); - parameters.withHsm(hsm); - parameters.withKey(key); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse importKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @return the KeyBundle object if successful. - */ - public KeyBundle deleteKey(String vaultBaseUrl, String keyName) { - return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @return the observable to the KeyBundle object - */ - public Observable deleteKeyAsync(String vaultBaseUrl, String keyName) { - return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @return the observable to the KeyBundle object - */ - public Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @return the KeyBundle object if successful. - */ - public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @return the observable to the KeyBundle object - */ - public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @return the observable to the KeyBundle object - */ - public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final List keyOps = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - KeyUpdateParameters parameters = new KeyUpdateParameters(); - parameters.withKeyOps(null); - parameters.withKeyAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the KeyBundle object if successful. - */ - public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).toBlocking().single().body(); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags), serviceCallback); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the KeyBundle object - */ - public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(keyOps); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyUpdateParameters parameters = new KeyUpdateParameters(); - parameters.withKeyOps(keyOps); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @return the KeyBundle object if successful. - */ - public KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion) { - return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @return the observable to the KeyBundle object - */ - public Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { - return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @return the observable to the KeyBundle object - */ - public Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName) { - ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName) { - return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName) { - return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName) - .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults) - .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeyVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeys(final String vaultBaseUrl) { - ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeysAsync(final String vaultBaseUrl) { - return getKeysWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl) { - return getKeysSinglePageAsync(vaultBaseUrl) - .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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeys(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults) { - return getKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getKeysSinglePageAsync(vaultBaseUrl, maxresults) - .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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the BackupKeyResult object if successful. - */ - public BackupKeyResult backupKey(String vaultBaseUrl, String keyName) { - return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the observable to the BackupKeyResult object - */ - public Observable backupKeyAsync(String vaultBaseUrl, String keyName) { - return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, BackupKeyResult>() { - @Override - public BackupKeyResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @return the observable to the BackupKeyResult object - */ - public Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.backupKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = backupKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse backupKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Restores a backed up key to a vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @return the KeyBundle object if successful. - */ - public KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup) { - return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).toBlocking().single().body(); - } - - /** - * Restores a backed up key to a vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup), serviceCallback); - } - - /** - * Restores a backed up key to a vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @return the observable to the KeyBundle object - */ - public Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup) { - return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Restores a backed up key to a vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @return the observable to the KeyBundle object - */ - public Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (keyBundleBackup == null) { - throw new IllegalArgumentException("Parameter keyBundleBackup is required and cannot be null."); - } - KeyRestoreParameters parameters = new KeyRestoreParameters(); - parameters.withKeyBundleBackup(keyBundleBackup); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.restoreKey(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = restoreKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse restoreKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.encrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = encryptDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse encryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.decrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = decryptDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse decryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param value the Base64Url value - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param value the Base64Url value - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeySignParameters parameters = new KeySignParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.sign(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = signDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse signDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Verifies a signature using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @return the KeyVerifyResult object if successful. - */ - public KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).toBlocking().single().body(); - } - - /** - * Verifies a signature using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature), serviceCallback); - } - - /** - * Verifies a signature using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @return the observable to the KeyVerifyResult object - */ - public Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).map(new Func1, KeyVerifyResult>() { - @Override - public KeyVerifyResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Verifies a signature using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @return the observable to the KeyVerifyResult object - */ - public Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (digest == null) { - throw new IllegalArgumentException("Parameter digest is required and cannot be null."); - } - if (signature == null) { - throw new IllegalArgumentException("Parameter signature is required and cannot be null."); - } - KeyVerifyParameters parameters = new KeyVerifyParameters(); - parameters.withAlgorithm(algorithm); - parameters.withDigest(digest); - parameters.withSignature(signature); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.verify(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = verifyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse verifyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Wraps a symmetric key using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Wraps a symmetric key using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Wraps a symmetric key using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Wraps a symmetric key using a specified key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.wrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = wrapKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse wrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' - * @param value the Base64Url value - * @return the observable to the KeyOperationResult object - */ - public Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.unwrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = unwrapKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse unwrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @return the SecretBundle object if successful. - */ - public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).toBlocking().single().body(); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value), serviceCallback); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @return the observable to the SecretBundle object - */ - public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @return the observable to the SecretBundle object - */ - public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - final Map tags = null; - final String contentType = null; - final SecretAttributes secretAttributes = null; - SecretSetParameters parameters = new SecretSetParameters(); - parameters.withValue(value); - parameters.withTags(null); - parameters.withContentType(null); - parameters.withSecretAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @return the SecretBundle object if successful. - */ - public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).toBlocking().single().body(); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes), serviceCallback); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @return the observable to the SecretBundle object - */ - public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets a secret in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @return the observable to the SecretBundle object - */ - public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - Validator.validate(tags); - Validator.validate(secretAttributes); - SecretSetParameters parameters = new SecretSetParameters(); - parameters.withValue(value); - parameters.withTags(tags); - parameters.withContentType(contentType); - parameters.withSecretAttributes(secretAttributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a secret from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the SecretBundle object if successful. - */ - public SecretBundle deleteSecret(String vaultBaseUrl, String secretName) { - return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Deletes a secret from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Deletes a secret from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the observable to the SecretBundle object - */ - public Observable deleteSecretAsync(String vaultBaseUrl, String secretName) { - return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a secret from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the observable to the SecretBundle object - */ - public Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the SecretBundle object if successful. - */ - public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the observable to the SecretBundle object - */ - public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the observable to the SecretBundle object - */ - public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String contentType = null; - final SecretAttributes secretAttributes = null; - final Map tags = null; - SecretUpdateParameters parameters = new SecretUpdateParameters(); - parameters.withContentType(null); - parameters.withSecretAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the SecretBundle object if successful. - */ - public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags), serviceCallback); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the SecretBundle object - */ - public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the SecretBundle object - */ - public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(secretAttributes); - Validator.validate(tags); - SecretUpdateParameters parameters = new SecretUpdateParameters(); - parameters.withContentType(contentType); - parameters.withSecretAttributes(secretAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the SecretBundle object if successful. - */ - public SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion) { - return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the observable to the SecretBundle object - */ - public Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { - return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @return the observable to the SecretBundle object - */ - public Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecrets(final String vaultBaseUrl) { - ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretsAsync(final String vaultBaseUrl) { - return getSecretsWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl) { - return getSecretsSinglePageAsync(vaultBaseUrl) - .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { - return getSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getSecretsSinglePageAsync(vaultBaseUrl, maxresults) - .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName) { - ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName) { - return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName) { - return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName) - .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults) - .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificates(final String vaultBaseUrl) { - ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificatesAsync(final String vaultBaseUrl) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { - return getCertificatesSinglePageAsync(vaultBaseUrl) - .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificates(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificatesSinglePageAsync(vaultBaseUrl, maxresults) - .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificates(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a certificate from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName) { - return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Deletes a certificate from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Deletes a certificate from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName) { - return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a certificate from a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets the certificate contacts for the specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @return the Contacts object if successful. - */ - public Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts) { - return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).toBlocking().single().body(); - } - - /** - * Sets the certificate contacts for the specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts), serviceCallback); - } - - /** - * Sets the certificate contacts for the specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @return the observable to the Contacts object - */ - public Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts) { - return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the certificate contacts for the specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @return the observable to the Contacts object - */ - public Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (contacts == null) { - throw new IllegalArgumentException("Parameter contacts is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(contacts); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateContacts(contacts, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the Contacts object if successful. - */ - public Contacts getCertificateContacts(String vaultBaseUrl) { - return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); - } - - /** - * Lists the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); - } - - /** - * Lists the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the Contacts object - */ - public Observable getCertificateContactsAsync(String vaultBaseUrl) { - return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the Contacts object - */ - public Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the Contacts object if successful. - */ - public Contacts deleteCertificateContacts(String vaultBaseUrl) { - return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the Contacts object - */ - public Observable deleteCertificateContactsAsync(String vaultBaseUrl) { - return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the Contacts object - */ - public Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuers(final String vaultBaseUrl) { - ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersAsync(final String vaultBaseUrl) { - return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl) { - return getCertificateIssuersSinglePageAsync(vaultBaseUrl) - .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults) - .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateIssuersDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).toBlocking().single().body(); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider), serviceCallback); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @return the observable to the IssuerBundle object - */ - public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @return the observable to the IssuerBundle object - */ - public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (provider == null) { - throw new IllegalArgumentException("Parameter provider is required and cannot be null."); - } - final IssuerCredentials credentials = null; - final OrganizationDetails organizationDetails = null; - final IssuerAttributes attributes = null; - CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); - parameter.withProvider(provider); - parameter.withCredentials(null); - parameter.withOrganizationDetails(null); - parameter.withAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the observable to the IssuerBundle object - */ - public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the observable to the IssuerBundle object - */ - public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (provider == null) { - throw new IllegalArgumentException("Parameter provider is required and cannot be null."); - } - Validator.validate(credentials); - Validator.validate(organizationDetails); - Validator.validate(attributes); - CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); - parameter.withProvider(provider); - parameter.withCredentials(credentials); - parameter.withOrganizationDetails(organizationDetails); - parameter.withAttributes(attributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String provider = null; - final IssuerCredentials credentials = null; - final OrganizationDetails organizationDetails = null; - final IssuerAttributes attributes = null; - CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); - parameter.withProvider(null); - parameter.withCredentials(null); - parameter.withOrganizationDetails(null); - parameter.withAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the observable to the IssuerBundle object - */ - public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @return the observable to the IssuerBundle object - */ - public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(credentials); - Validator.validate(organizationDetails); - Validator.validate(attributes); - CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); - parameter.withProvider(provider); - parameter.withCredentials(credentials); - parameter.withOrganizationDetails(organizationDetails); - parameter.withAttributes(attributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName) { - return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Lists the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Lists the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the IssuerBundle object if successful. - */ - public IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName) { - return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Deletes the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Deletes the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the specified certificate issuer. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @return the observable to the IssuerBundle object - */ - public Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the CertificateOperation object if successful. - */ - public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable createCertificateAsync(String vaultBaseUrl, String certificateName) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateCreateParameters parameters = new CertificateCreateParameters(); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the CertificateOperation object if successful. - */ - public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateOperation object - */ - public Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new certificate. If this is the first version, the certificate resource is created. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateOperation object - */ - public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateCreateParameters parameters = new CertificateCreateParameters(); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse createCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(202, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).toBlocking().single().body(); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate), serviceCallback); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @return the observable to the CertificateBundle object - */ - public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @return the observable to the CertificateBundle object - */ - public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (base64EncodedCertificate == null) { - throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); - } - final String password = null; - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateImportParameters parameters = new CertificateImportParameters(); - parameters.withBase64EncodedCertificate(base64EncodedCertificate); - parameters.withPassword(null); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (base64EncodedCertificate == null) { - throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateImportParameters parameters = new CertificateImportParameters(); - parameters.withBase64EncodedCertificate(base64EncodedCertificate); - parameters.withPassword(password); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse importCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName) { - ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName) { - return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName) { - return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName) - .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults) - .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the policy for a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @return the CertificatePolicy object if successful. - */ - public CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName) { - return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Lists the policy for a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Lists the policy for a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @return the observable to the CertificatePolicy object - */ - public Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName) { - return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificatePolicy>() { - @Override - public CertificatePolicy call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the policy for a certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @return the observable to the CertificatePolicy object - */ - public Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificatePolicy(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificatePolicyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @return the CertificatePolicy object if successful. - */ - public CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).toBlocking().single().body(); - } - - /** - * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy), serviceCallback); - } - - /** - * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @return the observable to the CertificatePolicy object - */ - public Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).map(new Func1, CertificatePolicy>() { - @Override - public CertificatePolicy call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @return the observable to the CertificatePolicy object - */ - public Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificatePolicy == null) { - throw new IllegalArgumentException("Parameter certificatePolicy is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificatePolicy(certificateName, certificatePolicy, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificatePolicyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateUpdateParameters parameters = new CertificateUpdateParameters(); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateUpdateParameters parameters = new CertificateUpdateParameters(); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { - return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @return the observable to the CertificateBundle object - */ - public Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates a certificate operation. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @return the CertificateOperation object if successful. - */ - public CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).toBlocking().single().body(); - } - - /** - * Updates a certificate operation. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested), serviceCallback); - } - - /** - * Updates a certificate operation. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @return the observable to the CertificateOperation object - */ - public Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates a certificate operation. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @return the observable to the CertificateOperation object - */ - public Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - CertificateOperationUpdateParameter certificateOperation = new CertificateOperationUpdateParameter(); - certificateOperation.withCancellationRequested(cancellationRequested); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), certificateOperation, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the operation associated with a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the CertificateOperation object if successful. - */ - public CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName) { - return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Gets the operation associated with a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Gets the operation associated with a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName) { - return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the operation associated with a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the operation for a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the CertificateOperation object if successful. - */ - public CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName) { - return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Deletes the operation for a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Deletes the operation for a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName) { - return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the operation for a specified certificate. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @return the observable to the CertificateOperation object - */ - public Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).toBlocking().single().body(); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates), serviceCallback); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @return the observable to the CertificateBundle object - */ - public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @return the observable to the CertificateBundle object - */ - public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (x509Certificates == null) { - throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); - } - Validator.validate(x509Certificates); - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateMergeParameters parameters = new CertificateMergeParameters(); - parameters.withX509Certificates(x509Certificates); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = mergeCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the CertificateBundle object if successful. - */ - public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags), serviceCallback); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @return the observable to the CertificateBundle object - */ - public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (x509Certificates == null) { - throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); - } - Validator.validate(x509Certificates); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateMergeParameters parameters = new CertificateMergeParameters(); - parameters.withX509Certificates(x509Certificates); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = mergeCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse mergeCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(201, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeyVersionsNext(final String nextPageLink) { - ServiceResponse> response = getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeyVersionsNextAsync(final String nextPageLink) { - return getKeyVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsNextSinglePageAsync(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.getKeyVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeyVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List keys in the specified vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<KeyItem> object if successful. - */ - public PagedList getKeysNext(final String nextPageLink) { - ServiceResponse> response = getKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeysNextAsync(final String nextPageLink) { - return getKeysNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink) { - return getKeysNextSinglePageAsync(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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysNextSinglePageAsync(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.getKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List secrets in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecretsNext(final String nextPageLink) { - ServiceResponse> response = getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretsNextAsync(final String nextPageLink) { - return getSecretsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink) { - return getSecretsNextSinglePageAsync(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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsNextSinglePageAsync(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.getSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of the specified secret. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<SecretItem> object if successful. - */ - public PagedList getSecretVersionsNext(final String nextPageLink) { - ServiceResponse> response = getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of the specified secret. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of the specified secret. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretVersionsNextAsync(final String nextPageLink) { - return getSecretVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of the specified secret. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsNextSinglePageAsync(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.getSecretVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificates in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificatesNext(final String nextPageLink) { - ServiceResponse> response = getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificatesNextAsync(final String nextPageLink) { - return getCertificatesNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificatesNextSinglePageAsync(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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesNextSinglePageAsync(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.getCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuersNext(final String nextPageLink) { - ServiceResponse> response = getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersNextAsync(final String nextPageLink) { - return getCertificateIssuersNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersNextSinglePageAsync(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.getCertificateIssuersNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateIssuersNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of a certificate. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateItem> object if successful. - */ - public PagedList getCertificateVersionsNext(final String nextPageLink) { - ServiceResponse> response = getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @param serviceFuture the ServiceCall object tracking the Retrofit calls - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificateVersionsNextAsync(final String nextPageLink) { - return getCertificateVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsNextSinglePageAsync(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.getCertificateVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - -} +/** + * 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 1.0.0.0 + * Changes may cause incorrect behavior and will be lost if the code is + * regenerated. + */ + +package com.microsoft.azure.keyvault; + +import com.google.common.base.Joiner; +import com.google.common.reflect.TypeToken; +import com.microsoft.azure.AzureClient; +import com.microsoft.azure.AzureServiceFuture; +import com.microsoft.azure.AzureServiceClient; +import com.microsoft.azure.keyvault.models.BackupKeyResult; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificateBundle; +import com.microsoft.azure.keyvault.models.CertificateCreateParameters; +import com.microsoft.azure.keyvault.models.CertificateImportParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerItem; +import com.microsoft.azure.keyvault.models.CertificateIssuerSetParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerUpdateParameters; +import com.microsoft.azure.keyvault.models.CertificateItem; +import com.microsoft.azure.keyvault.models.CertificateMergeParameters; +import com.microsoft.azure.keyvault.models.CertificateOperation; +import com.microsoft.azure.keyvault.models.CertificateOperationUpdateParameter; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.CertificateUpdateParameters; +import com.microsoft.azure.keyvault.models.Contacts; +import com.microsoft.azure.keyvault.models.IssuerAttributes; +import com.microsoft.azure.keyvault.models.IssuerBundle; +import com.microsoft.azure.keyvault.models.IssuerCredentials; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.KeyCreateParameters; +import com.microsoft.azure.keyvault.models.KeyImportParameters; +import com.microsoft.azure.keyvault.models.KeyItem; +import com.microsoft.azure.keyvault.models.KeyOperationResult; +import com.microsoft.azure.keyvault.models.KeyOperationsParameters; +import com.microsoft.azure.keyvault.models.KeyRestoreParameters; +import com.microsoft.azure.keyvault.models.KeySignParameters; +import com.microsoft.azure.keyvault.models.KeyUpdateParameters; +import com.microsoft.azure.keyvault.models.KeyVaultErrorException; +import com.microsoft.azure.keyvault.models.KeyVerifyParameters; +import com.microsoft.azure.keyvault.models.KeyVerifyResult; +import com.microsoft.azure.keyvault.models.OrganizationDetails; +import com.microsoft.azure.keyvault.models.PageImpl; +import com.microsoft.azure.keyvault.models.SecretAttributes; +import com.microsoft.azure.keyvault.models.SecretBundle; +import com.microsoft.azure.keyvault.models.SecretItem; +import com.microsoft.azure.keyvault.models.SecretSetParameters; +import com.microsoft.azure.keyvault.models.SecretUpdateParameters; +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; +import com.microsoft.rest.credentials.ServiceClientCredentials; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.ServiceFuture; +import com.microsoft.rest.ServiceCallback; +import com.microsoft.rest.ServiceResponse; +import com.microsoft.rest.Validator; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import okhttp3.ResponseBody; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.HTTP; +import retrofit2.http.PATCH; +import retrofit2.http.Path; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Query; +import retrofit2.http.Url; +import retrofit2.Response; +import rx.functions.Func1; +import rx.Observable; + +/** + * Initializes a new instance of the KeyVaultClientImpl class. + */ +final class KeyVaultClientImpl extends AzureServiceClient { + /** The Retrofit service to perform REST calls. */ + private KeyVaultClientService service; + /** the {@link AzureClient} used for long running operations. */ + private AzureClient azureClient; + + /** + * Gets the {@link AzureClient} used for long running operations. + * @return the azure client; + */ + public AzureClient getAzureClient() { + return this.azureClient; + } + + /** Client API version. */ + private String apiVersion; + + /** + * Gets Client API version. + * + * @return the apiVersion value. + */ + public String apiVersion() { + return this.apiVersion; + } + + /** Gets or sets the preferred language for the response. */ + private String acceptLanguage; + + /** + * Gets Gets or sets the preferred language for the response. + * + * @return the acceptLanguage value. + */ + public String acceptLanguage() { + return this.acceptLanguage; + } + + /** + * Sets Gets or sets the preferred language for the response. + * + * @param acceptLanguage the acceptLanguage value. + * @return the service client itself + */ + public KeyVaultClientImpl withAcceptLanguage(String acceptLanguage) { + this.acceptLanguage = acceptLanguage; + return this; + } + + /** Gets or sets 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. + * + * @return the longRunningOperationRetryTimeout value. + */ + public int longRunningOperationRetryTimeout() { + return this.longRunningOperationRetryTimeout; + } + + /** + * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. + * + * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. + * @return the service client itself + */ + public KeyVaultClientImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) { + this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout; + return this; + } + + /** 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. + * + * @return the generateClientRequestId value. + */ + public boolean generateClientRequestId() { + return this.generateClientRequestId; + } + + /** + * Sets 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 + */ + public KeyVaultClientImpl withGenerateClientRequestId(boolean generateClientRequestId) { + this.generateClientRequestId = generateClientRequestId; + return this; + } + + /** + * Initializes an instance of KeyVaultClient client. + * + * @param credentials the management credentials for Azure + */ + public KeyVaultClientImpl(ServiceClientCredentials credentials) { + this("https://{vaultBaseUrl}", credentials); + } + + /** + * Initializes an instance of KeyVaultClient client. + * + * @param baseUrl the base URL of the host + * @param credentials the management credentials for Azure + */ + private KeyVaultClientImpl(String baseUrl, ServiceClientCredentials credentials) { + super(baseUrl, credentials); + initialize(); + } + + /** + * Initializes an instance of KeyVaultClient client. + * + * @param restClient the REST client to connect to Azure. + */ + public KeyVaultClientImpl(RestClient restClient) { + super(restClient); + initialize(); + } + + protected void initialize() { + this.apiVersion = "2016-10-01"; + this.acceptLanguage = "en-US"; + this.longRunningOperationRetryTimeout = 30; + this.generateClientRequestId = true; + this.azureClient = new AzureClient(this); + initializeService(); + } + + /** + * Gets the User-Agent header for the client. + * + * @return the user agent string. + */ + @Override + public String userAgent() { + return String.format("Azure-SDK-For-Java/%s (%s)", + getClass().getPackage().getImplementationVersion(), + "KeyVaultClient, 2016-10-01"); + } + + private void initializeService() { + service = restClient().retrofit().create(KeyVaultClientService.class); + } + + /** + * The interface defining all the services for KeyVaultClient to be + * used by Retrofit to perform actually REST calls. + */ + interface KeyVaultClientService { + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey" }) + @POST("keys/{key-name}/create") + Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey" }) + @PUT("keys/{key-name}") + Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey" }) + @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) + Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey" }) + @PATCH("keys/{key-name}/{key-version}") + Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey" }) + @GET("keys/{key-name}/{key-version}") + Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions" }) + @GET("keys/{key-name}/versions") + Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys" }) + @GET("keys") + Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey" }) + @POST("keys/{key-name}/backup") + Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey" }) + @POST("keys/restore") + Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt" }) + @POST("keys/{key-name}/{key-version}/encrypt") + Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt" }) + @POST("keys/{key-name}/{key-version}/decrypt") + Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign" }) + @POST("keys/{key-name}/{key-version}/sign") + Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify" }) + @POST("keys/{key-name}/{key-version}/verify") + Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey" }) + @POST("keys/{key-name}/{key-version}/wrapkey") + Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey" }) + @POST("keys/{key-name}/{key-version}/unwrapkey") + Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret" }) + @PUT("secrets/{secret-name}") + Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret" }) + @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) + Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret" }) + @PATCH("secrets/{secret-name}/{secret-version}") + Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret" }) + @GET("secrets/{secret-name}/{secret-version}") + Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets" }) + @GET("secrets") + Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions" }) + @GET("secrets/{secret-name}/versions") + Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates" }) + @GET("certificates") + Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate" }) + @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts" }) + @PUT("certificates/contacts") + Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts" }) + @GET("certificates/contacts") + Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts" }) + @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) + Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers" }) + @GET("certificates/issuers") + Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer" }) + @PUT("certificates/issuers/{issuer-name}") + Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer" }) + @PATCH("certificates/issuers/{issuer-name}") + Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer" }) + @GET("certificates/issuers/{issuer-name}") + Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer" }) + @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate" }) + @POST("certificates/{certificate-name}/create") + Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate" }) + @POST("certificates/{certificate-name}/import") + Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions" }) + @GET("certificates/{certificate-name}/versions") + Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy" }) + @GET("certificates/{certificate-name}/policy") + Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy" }) + @PATCH("certificates/{certificate-name}/policy") + Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate" }) + @PATCH("certificates/{certificate-name}/{certificate-version}") + Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate" }) + @GET("certificates/{certificate-name}/{certificate-version}") + Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation" }) + @PATCH("certificates/{certificate-name}/pending") + Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation" }) + @GET("certificates/{certificate-name}/pending") + Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation" }) + @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) + Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate" }) + @POST("certificates/{certificate-name}/pending/merge") + Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext" }) + @GET + Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClient getKeysNext" }) + @GET + Observable> getKeysNext(@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.keyvault.KeyVaultClient getSecretsNext" }) + @GET + Observable> getSecretsNext(@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.keyvault.KeyVaultClient getSecretVersionsNext" }) + @GET + Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClient getCertificatesNext" }) + @GET + Observable> getCertificatesNext(@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.keyvault.KeyVaultClient getCertificateIssuersNext" }) + @GET + Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClient getCertificateVersionsNext" }) + @GET + Observable> getCertificateVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @return the KeyBundle object if successful. + */ + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).toBlocking().single().body(); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty), serviceCallback); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @return the observable to the KeyBundle object + */ + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @return the observable to the KeyBundle object + */ + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (kty == null) { + throw new IllegalArgumentException("Parameter kty is required and cannot be null."); + } + final Integer keySize = null; + final List keyOps = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + KeyCreateParameters parameters = new KeyCreateParameters(); + parameters.withKty(kty); + parameters.withKeySize(null); + parameters.withKeyOps(null); + parameters.withKeyAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the KeyBundle object if successful. + */ + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags).toBlocking().single().body(); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags), serviceCallback); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bytes. For example, 1024 or 2048. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (kty == null) { + throw new IllegalArgumentException("Parameter kty is required and cannot be null."); + } + Validator.validate(keyOps); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyCreateParameters parameters = new KeyCreateParameters(); + parameters.withKty(kty); + parameters.withKeySize(keySize); + parameters.withKeyOps(keyOps); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse createKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @return the KeyBundle object if successful. + */ + public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).toBlocking().single().body(); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key), serviceCallback); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @return the observable to the KeyBundle object + */ + public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @return the observable to the KeyBundle object + */ + public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (key == null) { + throw new IllegalArgumentException("Parameter key is required and cannot be null."); + } + Validator.validate(key); + final Boolean hsm = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + KeyImportParameters parameters = new KeyImportParameters(); + parameters.withHsm(null); + parameters.withKey(key); + parameters.withKeyAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the KeyBundle object if successful. + */ + public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).toBlocking().single().body(); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags), serviceCallback); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (key == null) { + throw new IllegalArgumentException("Parameter key is required and cannot be null."); + } + Validator.validate(key); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyImportParameters parameters = new KeyImportParameters(); + parameters.withHsm(hsm); + parameters.withKey(key); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse importKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @return the KeyBundle object if successful. + */ + public KeyBundle deleteKey(String vaultBaseUrl, String keyName) { + return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @return the observable to the KeyBundle object + */ + public Observable deleteKeyAsync(String vaultBaseUrl, String keyName) { + return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. Authorization: Requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @return the observable to the KeyBundle object + */ + public Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @return the KeyBundle object if successful. + */ + public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @return the observable to the KeyBundle object + */ + public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @return the observable to the KeyBundle object + */ + public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final List keyOps = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + KeyUpdateParameters parameters = new KeyUpdateParameters(); + parameters.withKeyOps(null); + parameters.withKeyAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the KeyBundle object if successful. + */ + public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).toBlocking().single().body(); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags), serviceCallback); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the KeyBundle object + */ + public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(keyOps); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyUpdateParameters parameters = new KeyUpdateParameters(); + parameters.withKeyOps(keyOps); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @return the KeyBundle object if successful. + */ + public KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion) { + return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @return the observable to the KeyBundle object + */ + public Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { + return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @return the observable to the KeyBundle object + */ + public Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName) { + ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName) { + return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName) { + return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName) + .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults) + .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeyVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeys(final String vaultBaseUrl) { + ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeysAsync(final String vaultBaseUrl) { + return getKeysWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl) { + return getKeysSinglePageAsync(vaultBaseUrl) + .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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeys(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults) { + return getKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getKeysSinglePageAsync(vaultBaseUrl, maxresults) + .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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the BackupKeyResult object if successful. + */ + public BackupKeyResult backupKey(String vaultBaseUrl, String keyName) { + return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the observable to the BackupKeyResult object + */ + public Observable backupKeyAsync(String vaultBaseUrl, String keyName) { + return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, BackupKeyResult>() { + @Override + public BackupKeyResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @return the observable to the BackupKeyResult object + */ + public Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.backupKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = backupKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse backupKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Restores a backed up key to a vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @return the KeyBundle object if successful. + */ + public KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup) { + return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).toBlocking().single().body(); + } + + /** + * Restores a backed up key to a vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup), serviceCallback); + } + + /** + * Restores a backed up key to a vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @return the observable to the KeyBundle object + */ + public Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup) { + return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Restores a backed up key to a vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @return the observable to the KeyBundle object + */ + public Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (keyBundleBackup == null) { + throw new IllegalArgumentException("Parameter keyBundleBackup is required and cannot be null."); + } + KeyRestoreParameters parameters = new KeyRestoreParameters(); + parameters.withKeyBundleBackup(keyBundleBackup); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.restoreKey(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = restoreKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse restoreKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.encrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = encryptDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse encryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.decrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = decryptDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse decryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param value the Base64Url value + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param value the Base64Url value + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeySignParameters parameters = new KeySignParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.sign(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = signDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse signDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Verifies a signature using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @return the KeyVerifyResult object if successful. + */ + public KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).toBlocking().single().body(); + } + + /** + * Verifies a signature using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature), serviceCallback); + } + + /** + * Verifies a signature using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @return the observable to the KeyVerifyResult object + */ + public Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).map(new Func1, KeyVerifyResult>() { + @Override + public KeyVerifyResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Verifies a signature using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'RS256', 'RS384', 'RS512', 'RSNULL' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @return the observable to the KeyVerifyResult object + */ + public Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (digest == null) { + throw new IllegalArgumentException("Parameter digest is required and cannot be null."); + } + if (signature == null) { + throw new IllegalArgumentException("Parameter signature is required and cannot be null."); + } + KeyVerifyParameters parameters = new KeyVerifyParameters(); + parameters.withAlgorithm(algorithm); + parameters.withDigest(digest); + parameters.withSignature(signature); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.verify(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = verifyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse verifyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Wraps a symmetric key using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Wraps a symmetric key using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Wraps a symmetric key using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Wraps a symmetric key using a specified key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.wrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = wrapKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse wrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA1_5' + * @param value the Base64Url value + * @return the observable to the KeyOperationResult object + */ + public Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.unwrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = unwrapKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse unwrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @return the SecretBundle object if successful. + */ + public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).toBlocking().single().body(); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value), serviceCallback); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @return the observable to the SecretBundle object + */ + public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @return the observable to the SecretBundle object + */ + public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + final Map tags = null; + final String contentType = null; + final SecretAttributes secretAttributes = null; + SecretSetParameters parameters = new SecretSetParameters(); + parameters.withValue(value); + parameters.withTags(null); + parameters.withContentType(null); + parameters.withSecretAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @return the SecretBundle object if successful. + */ + public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).toBlocking().single().body(); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes), serviceCallback); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @return the observable to the SecretBundle object + */ + public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets a secret in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @return the observable to the SecretBundle object + */ + public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + Validator.validate(tags); + Validator.validate(secretAttributes); + SecretSetParameters parameters = new SecretSetParameters(); + parameters.withValue(value); + parameters.withTags(tags); + parameters.withContentType(contentType); + parameters.withSecretAttributes(secretAttributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a secret from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the SecretBundle object if successful. + */ + public SecretBundle deleteSecret(String vaultBaseUrl, String secretName) { + return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Deletes a secret from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Deletes a secret from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the observable to the SecretBundle object + */ + public Observable deleteSecretAsync(String vaultBaseUrl, String secretName) { + return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a secret from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the observable to the SecretBundle object + */ + public Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the SecretBundle object if successful. + */ + public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the observable to the SecretBundle object + */ + public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the observable to the SecretBundle object + */ + public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String contentType = null; + final SecretAttributes secretAttributes = null; + final Map tags = null; + SecretUpdateParameters parameters = new SecretUpdateParameters(); + parameters.withContentType(null); + parameters.withSecretAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the SecretBundle object if successful. + */ + public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags), serviceCallback); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the SecretBundle object + */ + public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the SecretBundle object + */ + public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(secretAttributes); + Validator.validate(tags); + SecretUpdateParameters parameters = new SecretUpdateParameters(); + parameters.withContentType(contentType); + parameters.withSecretAttributes(secretAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the SecretBundle object if successful. + */ + public SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion) { + return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the observable to the SecretBundle object + */ + public Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { + return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @return the observable to the SecretBundle object + */ + public Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecrets(final String vaultBaseUrl) { + ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretsAsync(final String vaultBaseUrl) { + return getSecretsWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl) { + return getSecretsSinglePageAsync(vaultBaseUrl) + .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { + return getSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getSecretsSinglePageAsync(vaultBaseUrl, maxresults) + .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName) { + ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName) { + return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName) { + return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName) + .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults) + .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificates(final String vaultBaseUrl) { + ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificatesAsync(final String vaultBaseUrl) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { + return getCertificatesSinglePageAsync(vaultBaseUrl) + .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificates(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificatesSinglePageAsync(vaultBaseUrl, maxresults) + .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificates(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a certificate from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName) { + return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Deletes a certificate from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Deletes a certificate from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName) { + return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a certificate from a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets the certificate contacts for the specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @return the Contacts object if successful. + */ + public Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts) { + return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).toBlocking().single().body(); + } + + /** + * Sets the certificate contacts for the specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts), serviceCallback); + } + + /** + * Sets the certificate contacts for the specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @return the observable to the Contacts object + */ + public Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts) { + return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the certificate contacts for the specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @return the observable to the Contacts object + */ + public Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (contacts == null) { + throw new IllegalArgumentException("Parameter contacts is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(contacts); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateContacts(contacts, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the Contacts object if successful. + */ + public Contacts getCertificateContacts(String vaultBaseUrl) { + return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); + } + + /** + * Lists the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); + } + + /** + * Lists the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the Contacts object + */ + public Observable getCertificateContactsAsync(String vaultBaseUrl) { + return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the Contacts object + */ + public Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the Contacts object if successful. + */ + public Contacts deleteCertificateContacts(String vaultBaseUrl) { + return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the Contacts object + */ + public Observable deleteCertificateContactsAsync(String vaultBaseUrl) { + return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the Contacts object + */ + public Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuers(final String vaultBaseUrl) { + ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersAsync(final String vaultBaseUrl) { + return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl) { + return getCertificateIssuersSinglePageAsync(vaultBaseUrl) + .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults) + .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateIssuersDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).toBlocking().single().body(); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider), serviceCallback); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @return the observable to the IssuerBundle object + */ + public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @return the observable to the IssuerBundle object + */ + public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (provider == null) { + throw new IllegalArgumentException("Parameter provider is required and cannot be null."); + } + final IssuerCredentials credentials = null; + final OrganizationDetails organizationDetails = null; + final IssuerAttributes attributes = null; + CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); + parameter.withProvider(provider); + parameter.withCredentials(null); + parameter.withOrganizationDetails(null); + parameter.withAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the observable to the IssuerBundle object + */ + public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the observable to the IssuerBundle object + */ + public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (provider == null) { + throw new IllegalArgumentException("Parameter provider is required and cannot be null."); + } + Validator.validate(credentials); + Validator.validate(organizationDetails); + Validator.validate(attributes); + CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); + parameter.withProvider(provider); + parameter.withCredentials(credentials); + parameter.withOrganizationDetails(organizationDetails); + parameter.withAttributes(attributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String provider = null; + final IssuerCredentials credentials = null; + final OrganizationDetails organizationDetails = null; + final IssuerAttributes attributes = null; + CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); + parameter.withProvider(null); + parameter.withCredentials(null); + parameter.withOrganizationDetails(null); + parameter.withAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the observable to the IssuerBundle object + */ + public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @return the observable to the IssuerBundle object + */ + public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(credentials); + Validator.validate(organizationDetails); + Validator.validate(attributes); + CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); + parameter.withProvider(provider); + parameter.withCredentials(credentials); + parameter.withOrganizationDetails(organizationDetails); + parameter.withAttributes(attributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName) { + return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Lists the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Lists the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the IssuerBundle object if successful. + */ + public IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName) { + return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Deletes the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Deletes the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the specified certificate issuer. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @return the observable to the IssuerBundle object + */ + public Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the CertificateOperation object if successful. + */ + public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable createCertificateAsync(String vaultBaseUrl, String certificateName) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateCreateParameters parameters = new CertificateCreateParameters(); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the CertificateOperation object if successful. + */ + public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateOperation object + */ + public Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new certificate. If this is the first version, the certificate resource is created. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateOperation object + */ + public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateCreateParameters parameters = new CertificateCreateParameters(); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse createCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(202, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).toBlocking().single().body(); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate), serviceCallback); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @return the observable to the CertificateBundle object + */ + public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @return the observable to the CertificateBundle object + */ + public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (base64EncodedCertificate == null) { + throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); + } + final String password = null; + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateImportParameters parameters = new CertificateImportParameters(); + parameters.withBase64EncodedCertificate(base64EncodedCertificate); + parameters.withPassword(null); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (base64EncodedCertificate == null) { + throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateImportParameters parameters = new CertificateImportParameters(); + parameters.withBase64EncodedCertificate(base64EncodedCertificate); + parameters.withPassword(password); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse importCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName) { + ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName) { + return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName) { + return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName) + .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults) + .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the policy for a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @return the CertificatePolicy object if successful. + */ + public CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName) { + return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Lists the policy for a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Lists the policy for a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @return the observable to the CertificatePolicy object + */ + public Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName) { + return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificatePolicy>() { + @Override + public CertificatePolicy call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the policy for a certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @return the observable to the CertificatePolicy object + */ + public Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificatePolicy(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificatePolicyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @return the CertificatePolicy object if successful. + */ + public CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).toBlocking().single().body(); + } + + /** + * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy), serviceCallback); + } + + /** + * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @return the observable to the CertificatePolicy object + */ + public Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).map(new Func1, CertificatePolicy>() { + @Override + public CertificatePolicy call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the policy for a certificate. Set specified members in the certificate policy. Leave others as null. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @return the observable to the CertificatePolicy object + */ + public Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificatePolicy == null) { + throw new IllegalArgumentException("Parameter certificatePolicy is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificatePolicy(certificateName, certificatePolicy, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificatePolicyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateUpdateParameters parameters = new CertificateUpdateParameters(); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateUpdateParameters parameters = new CertificateUpdateParameters(); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { + return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @return the observable to the CertificateBundle object + */ + public Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates a certificate operation. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @return the CertificateOperation object if successful. + */ + public CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).toBlocking().single().body(); + } + + /** + * Updates a certificate operation. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested), serviceCallback); + } + + /** + * Updates a certificate operation. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @return the observable to the CertificateOperation object + */ + public Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates a certificate operation. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @return the observable to the CertificateOperation object + */ + public Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + CertificateOperationUpdateParameter certificateOperation = new CertificateOperationUpdateParameter(); + certificateOperation.withCancellationRequested(cancellationRequested); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), certificateOperation, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the operation associated with a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the CertificateOperation object if successful. + */ + public CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName) { + return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Gets the operation associated with a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Gets the operation associated with a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName) { + return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the operation associated with a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the operation for a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the CertificateOperation object if successful. + */ + public CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName) { + return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Deletes the operation for a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Deletes the operation for a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName) { + return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the operation for a specified certificate. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @return the observable to the CertificateOperation object + */ + public Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).toBlocking().single().body(); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates), serviceCallback); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @return the observable to the CertificateBundle object + */ + public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @return the observable to the CertificateBundle object + */ + public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (x509Certificates == null) { + throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); + } + Validator.validate(x509Certificates); + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateMergeParameters parameters = new CertificateMergeParameters(); + parameters.withX509Certificates(x509Certificates); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = mergeCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the CertificateBundle object if successful. + */ + public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags), serviceCallback); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @return the observable to the CertificateBundle object + */ + public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (x509Certificates == null) { + throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); + } + Validator.validate(x509Certificates); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateMergeParameters parameters = new CertificateMergeParameters(); + parameters.withX509Certificates(x509Certificates); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = mergeCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse mergeCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(201, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeyVersionsNext(final String nextPageLink) { + ServiceResponse> response = getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeyVersionsNextAsync(final String nextPageLink) { + return getKeyVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsNextSinglePageAsync(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.getKeyVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeyVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List keys in the specified vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<KeyItem> object if successful. + */ + public PagedList getKeysNext(final String nextPageLink) { + ServiceResponse> response = getKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeysNextAsync(final String nextPageLink) { + return getKeysNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink) { + return getKeysNextSinglePageAsync(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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysNextSinglePageAsync(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.getKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List secrets in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecretsNext(final String nextPageLink) { + ServiceResponse> response = getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretsNextAsync(final String nextPageLink) { + return getSecretsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink) { + return getSecretsNextSinglePageAsync(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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsNextSinglePageAsync(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.getSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of the specified secret. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<SecretItem> object if successful. + */ + public PagedList getSecretVersionsNext(final String nextPageLink) { + ServiceResponse> response = getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of the specified secret. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of the specified secret. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretVersionsNextAsync(final String nextPageLink) { + return getSecretVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of the specified secret. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsNextSinglePageAsync(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.getSecretVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificates in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificatesNext(final String nextPageLink) { + ServiceResponse> response = getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificatesNextAsync(final String nextPageLink) { + return getCertificatesNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificatesNextSinglePageAsync(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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesNextSinglePageAsync(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.getCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuersNext(final String nextPageLink) { + ServiceResponse> response = getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersNextAsync(final String nextPageLink) { + return getCertificateIssuersNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersNextSinglePageAsync(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.getCertificateIssuersNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateIssuersNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of a certificate. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateItem> object if successful. + */ + public PagedList getCertificateVersionsNext(final String nextPageLink) { + ServiceResponse> response = getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @param serviceFuture the ServiceCall object tracking the Retrofit calls + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificateVersionsNextAsync(final String nextPageLink) { + return getCertificateVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsNextSinglePageAsync(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.getCertificateVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/ObjectIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/ObjectIdentifier.java index e026b82..cdd9309 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/ObjectIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/ObjectIdentifier.java @@ -1,222 +1,222 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -import java.net.URI; -import java.net.URISyntaxException; -import java.security.InvalidParameterException; - -/** - * The key vault object identifier. - */ -public class ObjectIdentifier { - - /** - * Verifies whether the identifier belongs to a key vault object. - * @param collection the object collection e.g. 'keys', 'secrets' and 'certificates'. - * @param identifier the key vault object identifier. - * @return true if the identifier belongs to a key vault object. False otherwise. - */ - protected static boolean isObjectIdentifier(String collection, String identifier) { - - collection = verifyNonEmpty(collection, "collection"); - identifier = verifyNonEmpty(identifier, "identifier"); - - URI baseUri; - try { - baseUri = new URI(identifier); - } catch (URISyntaxException e) { - return false; - } - - // Path is of the form "/collection/name[/version]" - String[] segments = baseUri.getPath().split("/"); - if (segments.length != 3 && segments.length != 4) { - return false; - } - - if (!collection.equals(segments[1])) { - return false; - } - - return true; - } - - /** - * Verifies a value is null or empty. Returns the value if non-empty and throws exception if empty. - * @param value the value to verify. - * @param argName the name of the value. - * @return Returns the value if non-empty. - */ - protected static String verifyNonEmpty(String value, String argName) { - if (value != null) { - value = value.trim(); - if (value.isEmpty()) { - value = null; - } - } - if (value == null) { - throw new IllegalArgumentException(argName); - } - return value; - } - - protected String vault; - protected String name; - protected String version; - protected String baseIdentifier; - protected String identifier; - - /** - * Constructor. - */ - protected ObjectIdentifier() { - } - - /** - * Constructor. - * @param vault the vault url. - * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. - * @param name the object name. - */ - protected ObjectIdentifier(String vault, String collection, String name) { - this(vault, collection, name, null); - } - - /** - * Constructor. - * @param vault the vault url. - * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. - * @param name the object name. - * @param version the object version. - */ - protected ObjectIdentifier(String vault, String collection, String name, String version) { - - vault = verifyNonEmpty(vault, "vault"); - collection = verifyNonEmpty(collection, "collection"); - name = verifyNonEmpty(name, "name"); - - if (version != null) { - version = version.trim(); - } else { - version = ""; - } - - URI baseUri; - try { - baseUri = new URI(vault); - } catch (URISyntaxException e) { - throw new InvalidParameterException(String.format("Invalid ObjectIdentifier: %s. Not a valid URI", vault)); - } - - this.name = name; - this.version = version; - this.vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); - baseIdentifier = String.format("%s/%s/%s", this.vault, collection, this.name); - identifier = (version == null || version.isEmpty()) ? baseIdentifier - : String.format("%s/%s", baseIdentifier, version); - } - - /** - * Constructor. - * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. - * @param identifier the object identifier. - */ - protected ObjectIdentifier(String collection, String identifier) { - - if (collection == null || collection.length() == 0) { - throw new IllegalArgumentException("collection"); - } - - if (identifier == null || identifier.length() == 0) { - throw new IllegalArgumentException("identifier"); - } - - URI baseUri; - try { - baseUri = new URI(identifier); - } catch (URISyntaxException e) { - throw new InvalidParameterException( - String.format("Invalid ObjectIdentifier: %s. Not a valid URI", identifier)); - } - - // Path is of the form "/collection/name[/version]" - String[] segments = baseUri.getPath().split("/"); - if (segments.length != 3 && segments.length != 4) { - throw new InvalidParameterException(String - .format("Invalid ObjectIdentifier: %s. Bad number of segments: %d", identifier, segments.length)); - } - - if (!collection.equals(segments[1])) { - throw new InvalidParameterException( - String.format("Invalid ObjectIdentifier: %s. segment [1] should be '%s', found '%s'", identifier, - collection, segments[1])); - } - - name = segments[2]; - version = segments.length == 4 ? segments[3] : null; - vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); - baseIdentifier = String.format("%s/%s/%s", vault, collection, name); - this.identifier = (version == null || version.equals("")) ? baseIdentifier - : String.format("%s/%s", baseIdentifier, version); - } - - /** - * Gets full authority for a URL by appending port to the url authority. - * @param uri the URL to get the full authority for. - * @return the full authority. - */ - protected String getFullAuthority(URI uri) { - String authority = uri.getAuthority(); - if (!authority.contains(":") && uri.getPort() > 0) { - // Append port for complete authority - authority = String.format("%s:%d", uri.getAuthority(), uri.getPort()); - } - return authority; - } - - /** - * @return The base identifier for an object, does not include the object - * version. - */ - public String baseIdentifier() { - return baseIdentifier; - } - - /** - * @return The identifier for an object, includes the objects version. - */ - public String identifier() { - return identifier; - } - - /** - * @return The name of the object. - */ - public String name() { - return name; - } - - /** - * @return The vault containing the object. - */ - public String vault() { - return vault; - } - - /** - * @return The version of the object. - */ - public String version() { - return version; - } - - @Override - public String toString() { - return identifier; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +import java.net.URI; +import java.net.URISyntaxException; +import java.security.InvalidParameterException; + +/** + * The key vault object identifier. + */ +public class ObjectIdentifier { + + /** + * Verifies whether the identifier belongs to a key vault object. + * @param collection the object collection e.g. 'keys', 'secrets' and 'certificates'. + * @param identifier the key vault object identifier. + * @return true if the identifier belongs to a key vault object. False otherwise. + */ + protected static boolean isObjectIdentifier(String collection, String identifier) { + + collection = verifyNonEmpty(collection, "collection"); + identifier = verifyNonEmpty(identifier, "identifier"); + + URI baseUri; + try { + baseUri = new URI(identifier); + } catch (URISyntaxException e) { + return false; + } + + // Path is of the form "/collection/name[/version]" + String[] segments = baseUri.getPath().split("/"); + if (segments.length != 3 && segments.length != 4) { + return false; + } + + if (!collection.equals(segments[1])) { + return false; + } + + return true; + } + + /** + * Verifies a value is null or empty. Returns the value if non-empty and throws exception if empty. + * @param value the value to verify. + * @param argName the name of the value. + * @return Returns the value if non-empty. + */ + protected static String verifyNonEmpty(String value, String argName) { + if (value != null) { + value = value.trim(); + if (value.isEmpty()) { + value = null; + } + } + if (value == null) { + throw new IllegalArgumentException(argName); + } + return value; + } + + protected String vault; + protected String name; + protected String version; + protected String baseIdentifier; + protected String identifier; + + /** + * Constructor. + */ + protected ObjectIdentifier() { + } + + /** + * Constructor. + * @param vault the vault url. + * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. + * @param name the object name. + */ + protected ObjectIdentifier(String vault, String collection, String name) { + this(vault, collection, name, null); + } + + /** + * Constructor. + * @param vault the vault url. + * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. + * @param name the object name. + * @param version the object version. + */ + protected ObjectIdentifier(String vault, String collection, String name, String version) { + + vault = verifyNonEmpty(vault, "vault"); + collection = verifyNonEmpty(collection, "collection"); + name = verifyNonEmpty(name, "name"); + + if (version != null) { + version = version.trim(); + } else { + version = ""; + } + + URI baseUri; + try { + baseUri = new URI(vault); + } catch (URISyntaxException e) { + throw new InvalidParameterException(String.format("Invalid ObjectIdentifier: %s. Not a valid URI", vault)); + } + + this.name = name; + this.version = version; + this.vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); + baseIdentifier = String.format("%s/%s/%s", this.vault, collection, this.name); + identifier = (version == null || version.isEmpty()) ? baseIdentifier + : String.format("%s/%s", baseIdentifier, version); + } + + /** + * Constructor. + * @param collection the object collection name. e.g. 'keys', 'secrets' and 'certificates'. + * @param identifier the object identifier. + */ + protected ObjectIdentifier(String collection, String identifier) { + + if (collection == null || collection.length() == 0) { + throw new IllegalArgumentException("collection"); + } + + if (identifier == null || identifier.length() == 0) { + throw new IllegalArgumentException("identifier"); + } + + URI baseUri; + try { + baseUri = new URI(identifier); + } catch (URISyntaxException e) { + throw new InvalidParameterException( + String.format("Invalid ObjectIdentifier: %s. Not a valid URI", identifier)); + } + + // Path is of the form "/collection/name[/version]" + String[] segments = baseUri.getPath().split("/"); + if (segments.length != 3 && segments.length != 4) { + throw new InvalidParameterException(String + .format("Invalid ObjectIdentifier: %s. Bad number of segments: %d", identifier, segments.length)); + } + + if (!collection.equals(segments[1])) { + throw new InvalidParameterException( + String.format("Invalid ObjectIdentifier: %s. segment [1] should be '%s', found '%s'", identifier, + collection, segments[1])); + } + + name = segments[2]; + version = segments.length == 4 ? segments[3] : null; + vault = String.format("%s://%s", baseUri.getScheme(), getFullAuthority(baseUri)); + baseIdentifier = String.format("%s/%s/%s", vault, collection, name); + this.identifier = (version == null || version.equals("")) ? baseIdentifier + : String.format("%s/%s", baseIdentifier, version); + } + + /** + * Gets full authority for a URL by appending port to the url authority. + * @param uri the URL to get the full authority for. + * @return the full authority. + */ + protected String getFullAuthority(URI uri) { + String authority = uri.getAuthority(); + if (!authority.contains(":") && uri.getPort() > 0) { + // Append port for complete authority + authority = String.format("%s:%d", uri.getAuthority(), uri.getPort()); + } + return authority; + } + + /** + * @return The base identifier for an object, does not include the object + * version. + */ + public String baseIdentifier() { + return baseIdentifier; + } + + /** + * @return The identifier for an object, includes the objects version. + */ + public String identifier() { + return identifier; + } + + /** + * @return The name of the object. + */ + public String name() { + return name; + } + + /** + * @return The vault containing the object. + */ + public String vault() { + return vault; + } + + /** + * @return The version of the object. + */ + public String version() { + return version; + } + + @Override + public String toString() { + return identifier; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/SecretIdentifier.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/SecretIdentifier.java index c256468..f667437 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/SecretIdentifier.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/SecretIdentifier.java @@ -1,49 +1,49 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault; - -/** - * Key Vault secret identifier. - */ -public final class SecretIdentifier extends ObjectIdentifier { - - /** - * Verifies whether the identifier belongs to a key vault secret. - * @param identifier the key vault secret identifier. - * @return true if the identifier belongs to a key vault secret. False otherwise. - */ - public static boolean isSecretIdentifier(String identifier) { - return ObjectIdentifier.isObjectIdentifier("secrets", identifier); - } - - /** - * Constructor. - * @param vault the vault url. - * @param name the name of secret. - */ - public SecretIdentifier(String vault, String name) { - this(vault, name, ""); - } - - /** - * Constructor. - * @param vault the vault url. - * @param name the name of secret. - * @param version the secret version. - */ - public SecretIdentifier(String vault, String name, String version) { - super(vault, "secrets", name, version); - } - - /** - * Constructor. - * @param identifier the object identifier. - */ - public SecretIdentifier(String identifier) { - super("secrets", identifier); - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault; + +/** + * Key Vault secret identifier. + */ +public final class SecretIdentifier extends ObjectIdentifier { + + /** + * Verifies whether the identifier belongs to a key vault secret. + * @param identifier the key vault secret identifier. + * @return true if the identifier belongs to a key vault secret. False otherwise. + */ + public static boolean isSecretIdentifier(String identifier) { + return ObjectIdentifier.isObjectIdentifier("secrets", identifier); + } + + /** + * Constructor. + * @param vault the vault url. + * @param name the name of secret. + */ + public SecretIdentifier(String vault, String name) { + this(vault, name, ""); + } + + /** + * Constructor. + * @param vault the vault url. + * @param name the name of secret. + * @param version the secret version. + */ + public SecretIdentifier(String vault, String name, String version) { + super(vault, "secrets", name, version); + } + + /** + * Constructor. + * @param identifier the object identifier. + */ + public SecretIdentifier(String identifier) { + super("secrets", identifier); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java index 8e64a3e..4981f0a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java @@ -1,45 +1,45 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ -package com.microsoft.azure.keyvault.authentication; - -/** - * Stores authentication token and client key used for proof of possession authentication. - */ -public class AuthenticationResult{ - private String authToken; - private String popKey; - - /** - * Constructor - * - * @param authToken - * authentication token string. - * @param popKey - * serialized json web key used for pop authentication. - */ - public AuthenticationResult(String authToken, String popKey){ - this.authToken = authToken; - this.popKey = popKey; - } - - /** - * Retrieve stored authentication token. - * - * @return authentication token. - */ - public String getAuthToken(){ - return authToken; - } - - /** - * Retrieve stored PoP key. - * - * @return proof of possession key. - */ - public String getPopKey(){ - return popKey; - } +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ +package com.microsoft.azure.keyvault.authentication; + +/** + * Stores authentication token and client key used for proof of possession authentication. + */ +public class AuthenticationResult{ + private String authToken; + private String popKey; + + /** + * Constructor + * + * @param authToken + * authentication token string. + * @param popKey + * serialized json web key used for pop authentication. + */ + public AuthenticationResult(String authToken, String popKey){ + this.authToken = authToken; + this.popKey = popKey; + } + + /** + * Retrieve stored authentication token. + * + * @return authentication token. + */ + public String getAuthToken(){ + return authToken; + } + + /** + * Retrieve stored PoP key. + * + * @return proof of possession key. + */ + public String getPopKey(){ + return popKey; + } } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/ChallengeCache.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/ChallengeCache.java index a070060..4559cac 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/ChallengeCache.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/ChallengeCache.java @@ -1,76 +1,76 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.authentication; - -import java.util.HashMap; -import java.util.Locale; -import java.util.Map; - -import okhttp3.HttpUrl; - -/** - * Handles caching of the challenge. - */ -class ChallengeCache { - - private final HashMap> cachedChallenges = new HashMap>(); - - /** - * Uses authority to retrieve the cached values. - * - * @param url - * the url that is used as a cache key. - * @return cached value or null if value is not available. - */ - public Map getCachedChallenge(HttpUrl url) { - if (url == null) { - return null; - } - String authority = getAuthority(url); - authority = authority.toLowerCase(Locale.ENGLISH); - return cachedChallenges.get(authority); - } - - /** - * Uses authority to cache challenge. - * - * @param url - * the url that is used as a cache key. - * @param challenge - * the challenge to cache. - */ - public void addCachedChallenge(HttpUrl url, Map challenge) { - if (url == null || challenge == null) { - return; - } - String authority = getAuthority(url); - authority = authority.toLowerCase(Locale.ENGLISH); - cachedChallenges.put(authority, challenge); - } - - /** - * Gets authority of a url. - * - * @param url - * the url to get the authority for. - * @return the authority. - */ - public String getAuthority(HttpUrl url) { - String scheme = url.scheme(); - String host = url.host(); - int port = url.port(); - StringBuilder builder = new StringBuilder(); - if (scheme != null) { - builder.append(scheme).append("://"); - } - builder.append(host); - if (port >= 0) { - builder.append(':').append(port); - } - return builder.toString(); - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.authentication; + +import java.util.HashMap; +import java.util.Locale; +import java.util.Map; + +import okhttp3.HttpUrl; + +/** + * Handles caching of the challenge. + */ +class ChallengeCache { + + private final HashMap> cachedChallenges = new HashMap>(); + + /** + * Uses authority to retrieve the cached values. + * + * @param url + * the url that is used as a cache key. + * @return cached value or null if value is not available. + */ + public Map getCachedChallenge(HttpUrl url) { + if (url == null) { + return null; + } + String authority = getAuthority(url); + authority = authority.toLowerCase(Locale.ENGLISH); + return cachedChallenges.get(authority); + } + + /** + * Uses authority to cache challenge. + * + * @param url + * the url that is used as a cache key. + * @param challenge + * the challenge to cache. + */ + public void addCachedChallenge(HttpUrl url, Map challenge) { + if (url == null || challenge == null) { + return; + } + String authority = getAuthority(url); + authority = authority.toLowerCase(Locale.ENGLISH); + cachedChallenges.put(authority, challenge); + } + + /** + * Gets authority of a url. + * + * @param url + * the url to get the authority for. + * @return the authority. + */ + public String getAuthority(HttpUrl url) { + String scheme = url.scheme(); + String host = url.host(); + int port = url.port(); + StringBuilder builder = new StringBuilder(); + if (scheme != null) { + builder.append(scheme).append("://"); + } + builder.append(host); + if (port >= 0) { + builder.append(':').append(port); + } + return builder.toString(); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java index f7f75c9..e045e67 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java @@ -1,392 +1,392 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.authentication; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; -import java.util.Arrays; -import java.util.List; - -import com.microsoft.rest.credentials.ServiceClientCredentials; -import com.microsoft.azure.keyvault.messagesecurity.HttpMessageSecurity; - -import okhttp3.HttpUrl; -import okhttp3.Interceptor; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.MediaType; -import okhttp3.Response; - -import org.apache.commons.lang3.tuple.Pair; - -/** - * An implementation of {@link ServiceClientCredentials} that supports automatic bearer token refresh. - * - */ -public abstract class KeyVaultCredentials implements ServiceClientCredentials { - - private static final String WWW_AUTHENTICATE = "WWW-Authenticate"; - private static final String BEARER_TOKEP_REFIX = "Bearer "; - private List supportedMethods = Arrays.asList("sign", "verify", "encrypt", "decrypt", "wrapkey", "unwrapkey"); - - private final ChallengeCache cache = new ChallengeCache(); - - @Override - public void applyCredentialsFilter(OkHttpClient.Builder clientBuilder) { - - clientBuilder.addInterceptor(new Interceptor() { - - @Override - public Response intercept(Chain chain) throws IOException { - - Request originalRequest = chain.request(); - HttpUrl url = chain.request().url(); - - Map challengeMap = cache.getCachedChallenge(url); - Response response; - Pair authenticatedRequestPair; - - if (challengeMap != null) { - // challenge is cached, so there is no need to send an empty auth request. - authenticatedRequestPair = buildAuthenticatedRequest(originalRequest, challengeMap); - } else { - // challenge is new for the URL and is not cached, - // so the request is sent out to get the challenges in - // response - response = chain.proceed(buildEmptyRequest(originalRequest)); - - if (response.code() == 200){ - return response; - } else if (response.code() != 401){ - throw new IOException("Unexpected unauthorized response."); - } - authenticatedRequestPair = buildAuthenticatedRequest(originalRequest, response); - } - - response = chain.proceed(authenticatedRequestPair.getLeft()); - - if (response.code() == 200){ - return authenticatedRequestPair.getRight().unprotectResponse(response); - } - else{ - return response; - } - } - }); - } - - /** - * Builds request with authenticated header. Protects request body if supported. - * - * @param originalRequest - * unprotected request without auth token. - * @param challengeMap - * the challenge map. - * @return Pair of protected request and HttpMessageSecurity used for encryption. - */ - private Pair buildAuthenticatedRequest(Request originalRequest, Map challengeMap) throws IOException{ - - Boolean supportsPop = supportsMessageProtection(originalRequest.url().toString(), challengeMap); - AuthenticationResult authResult = getAuthenticationCredentials(supportsPop, challengeMap); - - if (authResult == null) { - return null; - } - - HttpMessageSecurity httpMessageSecurity = - new HttpMessageSecurity( - authResult.getAuthToken(), - supportsPop ? authResult.getPopKey() : "", - supportsPop ? challengeMap.get("x-ms-message-encryption-key") : "", - supportsPop ? challengeMap.get("x-ms-message-signing-key") : ""); - - Request request = httpMessageSecurity.protectRequest(originalRequest); - return Pair.of(request, httpMessageSecurity); - } - - /** - * Builds request with authenticated header. Protects request body if supported. - * - * @param originalRequest - * unprotected request without auth token. - * @param response - * response with unauthorized return code. - * @return Pair of protected request and HttpMessageSecurity used for encryption. - */ - private Pair buildAuthenticatedRequest(Request originalRequest, Response response) throws IOException{ - String authenticateHeader = response.header(WWW_AUTHENTICATE); - - Map challengeMap = extractChallenge(authenticateHeader, BEARER_TOKEP_REFIX); - - challengeMap.put("x-ms-message-encryption-key", response.header("x-ms-message-encryption-key")); - challengeMap.put("x-ms-message-signing-key", response.header("x-ms-message-signing-key")); - - // Cache the challenge - cache.addCachedChallenge(originalRequest.url(), challengeMap); - - return buildAuthenticatedRequest(originalRequest, challengeMap); - } - - /** - * Removes request body used for EKV authorization. - * - * @param request - * unprotected request without auth token. - * @return request with removed body. - */ - private Request buildEmptyRequest(Request request){ - RequestBody body = RequestBody.create(MediaType.parse("application/json"), "{}"); - if (request.method().equalsIgnoreCase("get")){ - return request; - } - else { - return request.newBuilder().method(request.method(), body).build(); - } - } - - /** - * Checks if resource supports message protection. - * - * @param url - * resource url. - * @param challengeMap - * the challenge map. - * @return true if message protection is supported. - */ - private Boolean supportsMessageProtection(String url, Map challengeMap) { - - if (!"true".equals(challengeMap.get("supportspop"))){ - return false; - } - - // Message protection is enabled only for subset of keys operations. - if (!url.toLowerCase().contains("/keys/")){ - return false; - } - - String[] tokens = url.split("\\?")[0].split("/"); - return supportedMethods.contains(tokens[tokens.length - 1]); - } - - /** - * Extracts the authentication challenges from the challenge map and calls - * the authentication callback to get the bearer token and return it. - * - * @param supportsPop - * is resource supports pop authentication. - * @param challengeMap - * the challenge map. - * @return AuthenticationResult with bearer token and PoP key. - */ - private AuthenticationResult getAuthenticationCredentials(Boolean supportsPop, Map challengeMap) { - - String authorization = challengeMap.get("authorization"); - if (authorization == null) { - authorization = challengeMap.get("authorization_uri"); - } - - String resource = challengeMap.get("resource"); - String scope = challengeMap.get("scope"); - String schema = supportsPop ? "pop" : "bearer"; - return doAuthenticate(authorization, resource, scope, schema); - } - - /** - * Extracts the challenge off the authentication header. - * - * @param authenticateHeader - * the authentication header containing all the challenges. - * @param authChallengePrefix - * the authentication challenge name. - * @return a challenge map. - */ - private static Map extractChallenge(String authenticateHeader, String authChallengePrefix) { - if (!isValidChallenge(authenticateHeader, authChallengePrefix)) { - return null; - } - - authenticateHeader = authenticateHeader.toLowerCase().replace(authChallengePrefix.toLowerCase(), ""); - - String[] challenges = authenticateHeader.split(", "); - Map challengeMap = new HashMap(); - for (String pair : challenges) { - String[] keyValue = pair.split("="); - challengeMap.put(keyValue[0].replaceAll("\"", ""), keyValue[1].replaceAll("\"", "")); - } - return challengeMap; - } - - /** - * Verifies whether a challenge is bearer or not. - * - * @param authenticateHeader - * the authentication header containing all the challenges. - * @param authChallengePrefix - * the authentication challenge name. - * @return - */ - private static boolean isValidChallenge(String authenticateHeader, String authChallengePrefix) { - if (authenticateHeader != null && !authenticateHeader.isEmpty() - && authenticateHeader.toLowerCase().startsWith(authChallengePrefix.toLowerCase())) { - return true; - } - return false; - } - - /** - * Abstract method to be implemented. - * - * @param authorization - * Identifier of the authority, a URL. - * @param resource - * Identifier of the target resource that is the recipient of the - * requested token, a URL. - * - * @return AuthenticationResult with authorization token and PoP key. - * - * Answers a server challenge with a token header. - *

- * Implementations typically use ADAL to get a token, as performed - * in the sample below: - *

- * - *
-     * @Override
-     * public String doAuthenticate(String authorization, String resource, String scope) {
-     *     String clientId = ...; // client GUID as shown in Azure portal.
-     *     String clientKey = ...; // client key as provided by Azure portal.
-     *     AuthenticationResult token = getAccessTokenFromClientCredentials(authorization, resource, clientId, clientKey);
-     *     return token.getAccessToken();;
-     * }
-     *
-     * private static AuthenticationResult getAccessTokenFromClientCredentials(String authorization, String resource, String clientId, String clientKey) {
-     *     AuthenticationContext context = null;
-     *     AuthenticationResult result = null;
-     *     ExecutorService service = null;
-     *     try {
-     *         service = Executors.newFixedThreadPool(1);
-     *         context = new AuthenticationContext(authorization, false, service);
-     *         ClientCredential credentials = new ClientCredential(clientId, clientKey);
-     *         Future<AuthenticationResult> future = context.acquireToken(resource, credentials, null);
-     *         result = future.get();
-     *     } catch (Exception e) {
-     *         throw new RuntimeException(e);
-     *     } finally {
-     *         service.shutdown();
-     *     }
-     *
-     *     if (result == null) {
-     *         throw new RuntimeException("authentication result was null");
-     *     }
-     *     return result;
-     * }
-     *         
- * - *

- * Note: The client key must be securely stored. It's advised to - * use two client applications - one for development and other for - * production - managed by separate parties. - *

- * - */ - public String doAuthenticate(String authorization, String resource, String scope){ - return ""; - } - - /** - * Method to be implemented. - * - * @param authorization - * Identifier of the authority, a URL. - * @param resource - * Identifier of the target resource that is the recipient of the - * requested token, a URL. - * @param scope - * The scope of the authentication request. - * - * @param schema - * Authentication schema. Can be 'pop' or 'bearer'. - * - * @return AuthenticationResult with authorization token and PoP key. - * - * Answers a server challenge with a token header. - *

- * Implementations sends POST request to receive authentication token like in example below. - * ADAL currently doesn't support POP authentication. - *

- * - *
-     *  public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema) {
-     *      JsonWebKey clientJwk = GenerateJsonWebKey();
-     *      JsonWebKey clientPublicJwk = GetJwkWithPublicKeyOnly(clientJwk);
-     *      String token = GetAccessToken(authorization, resource, "pop".equals(schema), clientPublicJwk);
-     *
-     *      return new AuthenticationResult(token, clientJwk.toString());
-     *  }
-     *
-     *  private JsonWebKey GenerateJsonWebKey()
-     *  {
-     *      final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
-     *      generator.initialize(2048);
-     *      KeyPair clientRsaKeyPair  = generator.generateKeyPair();
-     *      JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair);
-     *      result.withKid(UUID.randomUUID().toString());
-     *      return result;
-     *  }
-     *
-     *  public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){
-     *      KeyPair publicOnly = jwk.toRSA(false);
-     *      JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly);
-     *      jsonkeyPublic.withKid(jwk.kid());
-     *      jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY));
-     *      return jsonkeyPublic;
-     *  }
-     *
-     *  private String GetAccessToken(String authorization, String resource, boolean supportspop, JsonWebKey jwkPublic){
-     *      CloseableHttpClient  httpclient = HttpClients.createDefault();
-     *      HttpPost httppost = new HttpPost(authorization + "/oauth2/token");
-     *      
-     *      // Request parameters and other properties.
-     *      List<NameValuePair> params = new ArrayList<NameValuePair>(2);
-     *      params.add(new BasicNameValuePair("resource", resource));
-     *      params.add(new BasicNameValuePair("response_type", "token"));
-     *      params.add(new BasicNameValuePair("grant_type", "client_credentials"));
-     *      params.add(new BasicNameValuePair("client_id", this.getApplicationId()));
-     *      params.add(new BasicNameValuePair("client_secret", this.getApplicationSecret()));
-     *
-     *      if (supportspop)
-     *      {
-     *          params.add(new BasicNameValuePair("pop_jwk", jwkPublic.toString()));
-     *      }
-     *
-     *      httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
-     *
-     *      HttpResponse response = httpclient.execute(httppost);
-     *      HttpEntity entity = response.getEntity();
-     *
-     *      // Read the contents of an entity and return it as a String.
-     *      String content = EntityUtils.toString(entity);
-     *
-     *      ObjectMapper mapper = new ObjectMapper();
-     *      authreply reply = mapper.readValue(content, authreply.class);
-     *
-     *      return reply.access_token;
-     *  }
-     *  
- * - *

- * Note: The client key must be securely stored. It's advised to - * use two client applications - one for development and other for - * production - managed by separate parties. - *

- */ - public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema){ - return new AuthenticationResult(doAuthenticate(authorization, resource, scope), ""); - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.authentication; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.Arrays; +import java.util.List; + +import com.microsoft.rest.credentials.ServiceClientCredentials; +import com.microsoft.azure.keyvault.messagesecurity.HttpMessageSecurity; + +import okhttp3.HttpUrl; +import okhttp3.Interceptor; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.MediaType; +import okhttp3.Response; + +import org.apache.commons.lang3.tuple.Pair; + +/** + * An implementation of {@link ServiceClientCredentials} that supports automatic bearer token refresh. + * + */ +public abstract class KeyVaultCredentials implements ServiceClientCredentials { + + private static final String WWW_AUTHENTICATE = "WWW-Authenticate"; + private static final String BEARER_TOKEP_REFIX = "Bearer "; + private List supportedMethods = Arrays.asList("sign", "verify", "encrypt", "decrypt", "wrapkey", "unwrapkey"); + + private final ChallengeCache cache = new ChallengeCache(); + + @Override + public void applyCredentialsFilter(OkHttpClient.Builder clientBuilder) { + + clientBuilder.addInterceptor(new Interceptor() { + + @Override + public Response intercept(Chain chain) throws IOException { + + Request originalRequest = chain.request(); + HttpUrl url = chain.request().url(); + + Map challengeMap = cache.getCachedChallenge(url); + Response response; + Pair authenticatedRequestPair; + + if (challengeMap != null) { + // challenge is cached, so there is no need to send an empty auth request. + authenticatedRequestPair = buildAuthenticatedRequest(originalRequest, challengeMap); + } else { + // challenge is new for the URL and is not cached, + // so the request is sent out to get the challenges in + // response + response = chain.proceed(buildEmptyRequest(originalRequest)); + + if (response.code() == 200){ + return response; + } else if (response.code() != 401){ + throw new IOException("Unexpected unauthorized response."); + } + authenticatedRequestPair = buildAuthenticatedRequest(originalRequest, response); + } + + response = chain.proceed(authenticatedRequestPair.getLeft()); + + if (response.code() == 200){ + return authenticatedRequestPair.getRight().unprotectResponse(response); + } + else{ + return response; + } + } + }); + } + + /** + * Builds request with authenticated header. Protects request body if supported. + * + * @param originalRequest + * unprotected request without auth token. + * @param challengeMap + * the challenge map. + * @return Pair of protected request and HttpMessageSecurity used for encryption. + */ + private Pair buildAuthenticatedRequest(Request originalRequest, Map challengeMap) throws IOException{ + + Boolean supportsPop = supportsMessageProtection(originalRequest.url().toString(), challengeMap); + AuthenticationResult authResult = getAuthenticationCredentials(supportsPop, challengeMap); + + if (authResult == null) { + return null; + } + + HttpMessageSecurity httpMessageSecurity = + new HttpMessageSecurity( + authResult.getAuthToken(), + supportsPop ? authResult.getPopKey() : "", + supportsPop ? challengeMap.get("x-ms-message-encryption-key") : "", + supportsPop ? challengeMap.get("x-ms-message-signing-key") : ""); + + Request request = httpMessageSecurity.protectRequest(originalRequest); + return Pair.of(request, httpMessageSecurity); + } + + /** + * Builds request with authenticated header. Protects request body if supported. + * + * @param originalRequest + * unprotected request without auth token. + * @param response + * response with unauthorized return code. + * @return Pair of protected request and HttpMessageSecurity used for encryption. + */ + private Pair buildAuthenticatedRequest(Request originalRequest, Response response) throws IOException{ + String authenticateHeader = response.header(WWW_AUTHENTICATE); + + Map challengeMap = extractChallenge(authenticateHeader, BEARER_TOKEP_REFIX); + + challengeMap.put("x-ms-message-encryption-key", response.header("x-ms-message-encryption-key")); + challengeMap.put("x-ms-message-signing-key", response.header("x-ms-message-signing-key")); + + // Cache the challenge + cache.addCachedChallenge(originalRequest.url(), challengeMap); + + return buildAuthenticatedRequest(originalRequest, challengeMap); + } + + /** + * Removes request body used for EKV authorization. + * + * @param request + * unprotected request without auth token. + * @return request with removed body. + */ + private Request buildEmptyRequest(Request request){ + RequestBody body = RequestBody.create(MediaType.parse("application/json"), "{}"); + if (request.method().equalsIgnoreCase("get")){ + return request; + } + else { + return request.newBuilder().method(request.method(), body).build(); + } + } + + /** + * Checks if resource supports message protection. + * + * @param url + * resource url. + * @param challengeMap + * the challenge map. + * @return true if message protection is supported. + */ + private Boolean supportsMessageProtection(String url, Map challengeMap) { + + if (!"true".equals(challengeMap.get("supportspop"))){ + return false; + } + + // Message protection is enabled only for subset of keys operations. + if (!url.toLowerCase().contains("/keys/")){ + return false; + } + + String[] tokens = url.split("\\?")[0].split("/"); + return supportedMethods.contains(tokens[tokens.length - 1]); + } + + /** + * Extracts the authentication challenges from the challenge map and calls + * the authentication callback to get the bearer token and return it. + * + * @param supportsPop + * is resource supports pop authentication. + * @param challengeMap + * the challenge map. + * @return AuthenticationResult with bearer token and PoP key. + */ + private AuthenticationResult getAuthenticationCredentials(Boolean supportsPop, Map challengeMap) { + + String authorization = challengeMap.get("authorization"); + if (authorization == null) { + authorization = challengeMap.get("authorization_uri"); + } + + String resource = challengeMap.get("resource"); + String scope = challengeMap.get("scope"); + String schema = supportsPop ? "pop" : "bearer"; + return doAuthenticate(authorization, resource, scope, schema); + } + + /** + * Extracts the challenge off the authentication header. + * + * @param authenticateHeader + * the authentication header containing all the challenges. + * @param authChallengePrefix + * the authentication challenge name. + * @return a challenge map. + */ + private static Map extractChallenge(String authenticateHeader, String authChallengePrefix) { + if (!isValidChallenge(authenticateHeader, authChallengePrefix)) { + return null; + } + + authenticateHeader = authenticateHeader.toLowerCase().replace(authChallengePrefix.toLowerCase(), ""); + + String[] challenges = authenticateHeader.split(", "); + Map challengeMap = new HashMap(); + for (String pair : challenges) { + String[] keyValue = pair.split("="); + challengeMap.put(keyValue[0].replaceAll("\"", ""), keyValue[1].replaceAll("\"", "")); + } + return challengeMap; + } + + /** + * Verifies whether a challenge is bearer or not. + * + * @param authenticateHeader + * the authentication header containing all the challenges. + * @param authChallengePrefix + * the authentication challenge name. + * @return + */ + private static boolean isValidChallenge(String authenticateHeader, String authChallengePrefix) { + if (authenticateHeader != null && !authenticateHeader.isEmpty() + && authenticateHeader.toLowerCase().startsWith(authChallengePrefix.toLowerCase())) { + return true; + } + return false; + } + + /** + * Abstract method to be implemented. + * + * @param authorization + * Identifier of the authority, a URL. + * @param resource + * Identifier of the target resource that is the recipient of the + * requested token, a URL. + * + * @return AuthenticationResult with authorization token and PoP key. + * + * Answers a server challenge with a token header. + *

+ * Implementations typically use ADAL to get a token, as performed + * in the sample below: + *

+ * + *
+     * @Override
+     * public String doAuthenticate(String authorization, String resource, String scope) {
+     *     String clientId = ...; // client GUID as shown in Azure portal.
+     *     String clientKey = ...; // client key as provided by Azure portal.
+     *     AuthenticationResult token = getAccessTokenFromClientCredentials(authorization, resource, clientId, clientKey);
+     *     return token.getAccessToken();;
+     * }
+     *
+     * private static AuthenticationResult getAccessTokenFromClientCredentials(String authorization, String resource, String clientId, String clientKey) {
+     *     AuthenticationContext context = null;
+     *     AuthenticationResult result = null;
+     *     ExecutorService service = null;
+     *     try {
+     *         service = Executors.newFixedThreadPool(1);
+     *         context = new AuthenticationContext(authorization, false, service);
+     *         ClientCredential credentials = new ClientCredential(clientId, clientKey);
+     *         Future<AuthenticationResult> future = context.acquireToken(resource, credentials, null);
+     *         result = future.get();
+     *     } catch (Exception e) {
+     *         throw new RuntimeException(e);
+     *     } finally {
+     *         service.shutdown();
+     *     }
+     *
+     *     if (result == null) {
+     *         throw new RuntimeException("authentication result was null");
+     *     }
+     *     return result;
+     * }
+     *         
+ * + *

+ * Note: The client key must be securely stored. It's advised to + * use two client applications - one for development and other for + * production - managed by separate parties. + *

+ * + */ + public String doAuthenticate(String authorization, String resource, String scope){ + return ""; + } + + /** + * Method to be implemented. + * + * @param authorization + * Identifier of the authority, a URL. + * @param resource + * Identifier of the target resource that is the recipient of the + * requested token, a URL. + * @param scope + * The scope of the authentication request. + * + * @param schema + * Authentication schema. Can be 'pop' or 'bearer'. + * + * @return AuthenticationResult with authorization token and PoP key. + * + * Answers a server challenge with a token header. + *

+ * Implementations sends POST request to receive authentication token like in example below. + * ADAL currently doesn't support POP authentication. + *

+ * + *
+     *  public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema) {
+     *      JsonWebKey clientJwk = GenerateJsonWebKey();
+     *      JsonWebKey clientPublicJwk = GetJwkWithPublicKeyOnly(clientJwk);
+     *      String token = GetAccessToken(authorization, resource, "pop".equals(schema), clientPublicJwk);
+     *
+     *      return new AuthenticationResult(token, clientJwk.toString());
+     *  }
+     *
+     *  private JsonWebKey GenerateJsonWebKey()
+     *  {
+     *      final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
+     *      generator.initialize(2048);
+     *      KeyPair clientRsaKeyPair  = generator.generateKeyPair();
+     *      JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair);
+     *      result.withKid(UUID.randomUUID().toString());
+     *      return result;
+     *  }
+     *
+     *  public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){
+     *      KeyPair publicOnly = jwk.toRSA(false);
+     *      JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly);
+     *      jsonkeyPublic.withKid(jwk.kid());
+     *      jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY));
+     *      return jsonkeyPublic;
+     *  }
+     *
+     *  private String GetAccessToken(String authorization, String resource, boolean supportspop, JsonWebKey jwkPublic){
+     *      CloseableHttpClient  httpclient = HttpClients.createDefault();
+     *      HttpPost httppost = new HttpPost(authorization + "/oauth2/token");
+     *      
+     *      // Request parameters and other properties.
+     *      List<NameValuePair> params = new ArrayList<NameValuePair>(2);
+     *      params.add(new BasicNameValuePair("resource", resource));
+     *      params.add(new BasicNameValuePair("response_type", "token"));
+     *      params.add(new BasicNameValuePair("grant_type", "client_credentials"));
+     *      params.add(new BasicNameValuePair("client_id", this.getApplicationId()));
+     *      params.add(new BasicNameValuePair("client_secret", this.getApplicationSecret()));
+     *
+     *      if (supportspop)
+     *      {
+     *          params.add(new BasicNameValuePair("pop_jwk", jwkPublic.toString()));
+     *      }
+     *
+     *      httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
+     *
+     *      HttpResponse response = httpclient.execute(httppost);
+     *      HttpEntity entity = response.getEntity();
+     *
+     *      // Read the contents of an entity and return it as a String.
+     *      String content = EntityUtils.toString(entity);
+     *
+     *      ObjectMapper mapper = new ObjectMapper();
+     *      authreply reply = mapper.readValue(content, authreply.class);
+     *
+     *      return reply.access_token;
+     *  }
+     *  
+ * + *

+ * Note: The client key must be securely stored. It's advised to + * use two client applications - one for development and other for + * production - managed by separate parties. + *

+ */ + public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema){ + return new AuthenticationResult(doAuthenticate(authorization, resource, scope), ""); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/package-info.java index 8b2adca..a565f18 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/package-info.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/package-info.java @@ -1,9 +1,9 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for -// license information. - -/** - * This package contains the classes for KeyVaultClient. Performs cryptographic - * key operations and vault operations against the Key Vault service. - */ -package com.microsoft.azure.keyvault.authentication; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for +// license information. + +/** + * This package contains the classes for KeyVaultClient. Performs cryptographic + * key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.authentication; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientBaseImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientBaseImpl.java index 921eb57..a6a6b05 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientBaseImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientBaseImpl.java @@ -1,13313 +1,13313 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.implementation; - -import com.google.common.base.Joiner; -import com.google.common.reflect.TypeToken; -import com.microsoft.azure.AzureClient; -import com.microsoft.azure.AzureServiceClient; -import com.microsoft.azure.AzureServiceFuture; -import com.microsoft.azure.keyvault.KeyVaultClientBase; -import com.microsoft.azure.keyvault.models.BackupCertificateResult; -import com.microsoft.azure.keyvault.models.BackupKeyResult; -import com.microsoft.azure.keyvault.models.BackupSecretResult; -import com.microsoft.azure.keyvault.models.BackupStorageResult; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificateBundle; -import com.microsoft.azure.keyvault.models.CertificateCreateParameters; -import com.microsoft.azure.keyvault.models.CertificateImportParameters; -import com.microsoft.azure.keyvault.models.CertificateIssuerItem; -import com.microsoft.azure.keyvault.models.CertificateIssuerSetParameters; -import com.microsoft.azure.keyvault.models.CertificateIssuerUpdateParameters; -import com.microsoft.azure.keyvault.models.CertificateItem; -import com.microsoft.azure.keyvault.models.CertificateMergeParameters; -import com.microsoft.azure.keyvault.models.CertificateOperation; -import com.microsoft.azure.keyvault.models.CertificateOperationUpdateParameter; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.CertificateRestoreParameters; -import com.microsoft.azure.keyvault.models.CertificateUpdateParameters; -import com.microsoft.azure.keyvault.models.Contacts; -import com.microsoft.azure.keyvault.models.DeletedCertificateBundle; -import com.microsoft.azure.keyvault.models.DeletedCertificateItem; -import com.microsoft.azure.keyvault.models.DeletedKeyBundle; -import com.microsoft.azure.keyvault.models.DeletedKeyItem; -import com.microsoft.azure.keyvault.models.DeletedSasDefinitionBundle; -import com.microsoft.azure.keyvault.models.DeletedSasDefinitionItem; -import com.microsoft.azure.keyvault.models.DeletedSecretBundle; -import com.microsoft.azure.keyvault.models.DeletedSecretItem; -import com.microsoft.azure.keyvault.models.DeletedStorageAccountItem; -import com.microsoft.azure.keyvault.models.DeletedStorageBundle; -import com.microsoft.azure.keyvault.models.IssuerAttributes; -import com.microsoft.azure.keyvault.models.IssuerBundle; -import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.models.KeyBundle; -import com.microsoft.azure.keyvault.models.KeyCreateParameters; -import com.microsoft.azure.keyvault.models.KeyImportParameters; -import com.microsoft.azure.keyvault.models.KeyItem; -import com.microsoft.azure.keyvault.models.KeyOperationResult; -import com.microsoft.azure.keyvault.models.KeyOperationsParameters; -import com.microsoft.azure.keyvault.models.KeyRestoreParameters; -import com.microsoft.azure.keyvault.models.KeySignParameters; -import com.microsoft.azure.keyvault.models.KeyUpdateParameters; -import com.microsoft.azure.keyvault.models.KeyVaultErrorException; -import com.microsoft.azure.keyvault.models.KeyVerifyParameters; -import com.microsoft.azure.keyvault.models.KeyVerifyResult; -import com.microsoft.azure.keyvault.models.OrganizationDetails; -import com.microsoft.azure.keyvault.models.PageImpl; -import com.microsoft.azure.keyvault.models.SasDefinitionAttributes; -import com.microsoft.azure.keyvault.models.SasDefinitionBundle; -import com.microsoft.azure.keyvault.models.SasDefinitionCreateParameters; -import com.microsoft.azure.keyvault.models.SasDefinitionItem; -import com.microsoft.azure.keyvault.models.SasDefinitionUpdateParameters; -import com.microsoft.azure.keyvault.models.SasTokenType; -import com.microsoft.azure.keyvault.models.SecretAttributes; -import com.microsoft.azure.keyvault.models.SecretBundle; -import com.microsoft.azure.keyvault.models.SecretItem; -import com.microsoft.azure.keyvault.models.SecretRestoreParameters; -import com.microsoft.azure.keyvault.models.SecretSetParameters; -import com.microsoft.azure.keyvault.models.SecretUpdateParameters; -import com.microsoft.azure.keyvault.models.StorageAccountAttributes; -import com.microsoft.azure.keyvault.models.StorageAccountCreateParameters; -import com.microsoft.azure.keyvault.models.StorageAccountItem; -import com.microsoft.azure.keyvault.models.StorageAccountRegenerteKeyParameters; -import com.microsoft.azure.keyvault.models.StorageAccountUpdateParameters; -import com.microsoft.azure.keyvault.models.StorageBundle; -import com.microsoft.azure.keyvault.models.StorageRestoreParameters; -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; -import com.microsoft.rest.credentials.ServiceClientCredentials; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceResponse; -import com.microsoft.rest.Validator; -import java.io.IOException; -import java.util.List; -import java.util.Map; -import okhttp3.ResponseBody; -import retrofit2.http.Body; -import retrofit2.http.GET; -import retrofit2.http.Header; -import retrofit2.http.Headers; -import retrofit2.http.HTTP; -import retrofit2.http.PATCH; -import retrofit2.http.Path; -import retrofit2.http.POST; -import retrofit2.http.PUT; -import retrofit2.http.Query; -import retrofit2.http.Url; -import retrofit2.Response; -import rx.functions.Func1; -import rx.Observable; - -/** - * Initializes a new instance of the KeyVaultClientBaseImpl class. - */ -public class KeyVaultClientBaseImpl extends AzureServiceClient implements KeyVaultClientBase { - /** The Retrofit service to perform REST calls. */ - private KeyVaultClientBaseService service; - /** the {@link AzureClient} used for long running operations. */ - private AzureClient azureClient; - - /** - * Gets the {@link AzureClient} used for long running operations. - * @return the azure client; - */ - public AzureClient getAzureClient() { - return this.azureClient; - } - - /** Client API version. */ - private String apiVersion; - - /** - * Gets Client API version. - * - * @return the apiVersion value. - */ - public String apiVersion() { - return this.apiVersion; - } - - /** Gets or sets the preferred language for the response. */ - private String acceptLanguage; - - /** - * Gets Gets or sets the preferred language for the response. - * - * @return the acceptLanguage value. - */ - public String acceptLanguage() { - return this.acceptLanguage; - } - - /** - * Sets Gets or sets the preferred language for the response. - * - * @param acceptLanguage the acceptLanguage value. - * @return the service client itself - */ - public KeyVaultClientBaseImpl withAcceptLanguage(String acceptLanguage) { - this.acceptLanguage = acceptLanguage; - return this; - } - - /** Gets or sets 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. - * - * @return the longRunningOperationRetryTimeout value. - */ - public int longRunningOperationRetryTimeout() { - return this.longRunningOperationRetryTimeout; - } - - /** - * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. - * - * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. - * @return the service client itself - */ - public KeyVaultClientBaseImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) { - this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout; - return this; - } - - /** 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. - * - * @return the generateClientRequestId value. - */ - public boolean generateClientRequestId() { - return this.generateClientRequestId; - } - - /** - * Sets 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 - */ - public KeyVaultClientBaseImpl withGenerateClientRequestId(boolean generateClientRequestId) { - this.generateClientRequestId = generateClientRequestId; - return this; - } - - /** - * Initializes an instance of KeyVaultClientBase client. - * - * @param credentials the management credentials for Azure - */ - public KeyVaultClientBaseImpl(ServiceClientCredentials credentials) { - this("https://{vaultBaseUrl}", credentials); - } - - /** - * Initializes an instance of KeyVaultClientBase client. - * - * @param baseUrl the base URL of the host - * @param credentials the management credentials for Azure - */ - private KeyVaultClientBaseImpl(String baseUrl, ServiceClientCredentials credentials) { - super(baseUrl, credentials); - initialize(); - } - - /** - * Initializes an instance of KeyVaultClientBase client. - * - * @param restClient the REST client to connect to Azure. - */ - public KeyVaultClientBaseImpl(RestClient restClient) { - super(restClient); - initialize(); - } - - protected void initialize() { - this.apiVersion = "7.0-preview"; - this.acceptLanguage = "en-US"; - this.longRunningOperationRetryTimeout = 30; - this.generateClientRequestId = true; - this.azureClient = new AzureClient(this); - initializeService(); - } - - /** - * Gets the User-Agent header for the client. - * - * @return the user agent string. - */ - @Override - public String userAgent() { - return String.format("%s (%s, %s)", super.userAgent(), "KeyVaultClientBase", "7.0-preview"); - } - - private void initializeService() { - service = restClient().retrofit().create(KeyVaultClientBaseService.class); - } - - /** - * The interface defining all the services for KeyVaultClientBase to be - * used by Retrofit to perform actually REST calls. - */ - interface KeyVaultClientBaseService { - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase createKey" }) - @POST("keys/{key-name}/create") - Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase importKey" }) - @PUT("keys/{key-name}") - Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteKey" }) - @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) - Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateKey" }) - @PATCH("keys/{key-name}/{key-version}") - Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKey" }) - @GET("keys/{key-name}/{key-version}") - Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeyVersions" }) - @GET("keys/{key-name}/versions") - Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeys" }) - @GET("keys") - Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupKey" }) - @POST("keys/{key-name}/backup") - Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreKey" }) - @POST("keys/restore") - Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase encrypt" }) - @POST("keys/{key-name}/{key-version}/encrypt") - Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase decrypt" }) - @POST("keys/{key-name}/{key-version}/decrypt") - Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase sign" }) - @POST("keys/{key-name}/{key-version}/sign") - Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase verify" }) - @POST("keys/{key-name}/{key-version}/verify") - Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase wrapKey" }) - @POST("keys/{key-name}/{key-version}/wrapkey") - Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase unwrapKey" }) - @POST("keys/{key-name}/{key-version}/unwrapkey") - Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedKeys" }) - @GET("deletedkeys") - Observable> getDeletedKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedKey" }) - @GET("deletedkeys/{key-name}") - Observable> getDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedKey" }) - @HTTP(path = "deletedkeys/{key-name}", method = "DELETE", hasBody = true) - Observable> purgeDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedKey" }) - @POST("deletedkeys/{key-name}/recover") - Observable> recoverDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setSecret" }) - @PUT("secrets/{secret-name}") - Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteSecret" }) - @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) - Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateSecret" }) - @PATCH("secrets/{secret-name}/{secret-version}") - Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecret" }) - @GET("secrets/{secret-name}/{secret-version}") - Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecrets" }) - @GET("secrets") - Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecretVersions" }) - @GET("secrets/{secret-name}/versions") - Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSecrets" }) - @GET("deletedsecrets") - Observable> getDeletedSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSecret" }) - @GET("deletedsecrets/{secret-name}") - Observable> getDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedSecret" }) - @HTTP(path = "deletedsecrets/{secret-name}", method = "DELETE", hasBody = true) - Observable> purgeDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedSecret" }) - @POST("deletedsecrets/{secret-name}/recover") - Observable> recoverDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupSecret" }) - @POST("secrets/{secret-name}/backup") - Observable> backupSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreSecret" }) - @POST("secrets/restore") - Observable> restoreSecret(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificates" }) - @GET("certificates") - Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("includePending") Boolean includePending, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificate" }) - @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setCertificateContacts" }) - @PUT("certificates/contacts") - Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateContacts" }) - @GET("certificates/contacts") - Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateContacts" }) - @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) - Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateIssuers" }) - @GET("certificates/issuers") - Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setCertificateIssuer" }) - @PUT("certificates/issuers/{issuer-name}") - Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificateIssuer" }) - @PATCH("certificates/issuers/{issuer-name}") - Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateIssuer" }) - @GET("certificates/issuers/{issuer-name}") - Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateIssuer" }) - @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase createCertificate" }) - @POST("certificates/{certificate-name}/create") - Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase importCertificate" }) - @POST("certificates/{certificate-name}/import") - Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateVersions" }) - @GET("certificates/{certificate-name}/versions") - Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificatePolicy" }) - @GET("certificates/{certificate-name}/policy") - Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificatePolicy" }) - @PATCH("certificates/{certificate-name}/policy") - Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificate" }) - @PATCH("certificates/{certificate-name}/{certificate-version}") - Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificate" }) - @GET("certificates/{certificate-name}/{certificate-version}") - Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificateOperation" }) - @PATCH("certificates/{certificate-name}/pending") - Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateOperation" }) - @GET("certificates/{certificate-name}/pending") - Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateOperation" }) - @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) - Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase mergeCertificate" }) - @POST("certificates/{certificate-name}/pending/merge") - Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupCertificate" }) - @POST("certificates/{certificate-name}/backup") - Observable> backupCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreCertificate" }) - @POST("certificates/restore") - Observable> restoreCertificate(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedCertificates" }) - @GET("deletedcertificates") - Observable> getDeletedCertificates(@Query("maxresults") Integer maxresults, @Query("includePending") Boolean includePending, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedCertificate" }) - @GET("deletedcertificates/{certificate-name}") - Observable> getDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedCertificate" }) - @HTTP(path = "deletedcertificates/{certificate-name}", method = "DELETE", hasBody = true) - Observable> purgeDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedCertificate" }) - @POST("deletedcertificates/{certificate-name}/recover") - Observable> recoverDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getStorageAccounts" }) - @GET("storage") - Observable> getStorageAccounts(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedStorageAccounts" }) - @GET("deletedstorage") - Observable> getDeletedStorageAccounts(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedStorageAccount" }) - @GET("deletedstorage/{storage-account-name}") - Observable> getDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedStorageAccount" }) - @HTTP(path = "deletedstorage/{storage-account-name}", method = "DELETE", hasBody = true) - Observable> purgeDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedStorageAccount" }) - @POST("deletedstorage/{storage-account-name}/recover") - Observable> recoverDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupStorageAccount" }) - @POST("storage/{storage-account-name}/backup") - Observable> backupStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreStorageAccount" }) - @POST("storage/restore") - Observable> restoreStorageAccount(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteStorageAccount" }) - @HTTP(path = "storage/{storage-account-name}", method = "DELETE", hasBody = true) - Observable> deleteStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getStorageAccount" }) - @GET("storage/{storage-account-name}") - Observable> getStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setStorageAccount" }) - @PUT("storage/{storage-account-name}") - Observable> setStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateStorageAccount" }) - @PATCH("storage/{storage-account-name}") - Observable> updateStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase regenerateStorageAccountKey" }) - @POST("storage/{storage-account-name}/regeneratekey") - Observable> regenerateStorageAccountKey(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountRegenerteKeyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSasDefinitions" }) - @GET("storage/{storage-account-name}/sas") - Observable> getSasDefinitions(@Path("storage-account-name") String storageAccountName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSasDefinitions" }) - @GET("deletedstorage/{storage-account-name}/sas") - Observable> getDeletedSasDefinitions(@Path("storage-account-name") String storageAccountName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSasDefinition" }) - @GET("deletedstorage/{storage-account-name}/sas/{sas-definition-name}") - Observable> getDeletedSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedSasDefinition" }) - @POST("deletedstorage/{storage-account-name}/sas/{sas-definition-name}/recover") - Observable> recoverDeletedSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteSasDefinition" }) - @HTTP(path = "storage/{storage-account-name}/sas/{sas-definition-name}", method = "DELETE", hasBody = true) - Observable> deleteSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSasDefinition" }) - @GET("storage/{storage-account-name}/sas/{sas-definition-name}") - Observable> getSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setSasDefinition" }) - @PUT("storage/{storage-account-name}/sas/{sas-definition-name}") - Observable> setSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SasDefinitionCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateSasDefinition" }) - @PATCH("storage/{storage-account-name}/sas/{sas-definition-name}") - Observable> updateSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SasDefinitionUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeyVersionsNext" }) - @GET - Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClientBase getKeysNext" }) - @GET - Observable> getKeysNext(@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.keyvault.KeyVaultClientBase getDeletedKeysNext" }) - @GET - Observable> getDeletedKeysNext(@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.keyvault.KeyVaultClientBase getSecretsNext" }) - @GET - Observable> getSecretsNext(@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.keyvault.KeyVaultClientBase getSecretVersionsNext" }) - @GET - Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClientBase getDeletedSecretsNext" }) - @GET - Observable> getDeletedSecretsNext(@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.keyvault.KeyVaultClientBase getCertificatesNext" }) - @GET - Observable> getCertificatesNext(@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.keyvault.KeyVaultClientBase getCertificateIssuersNext" }) - @GET - Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClientBase getCertificateVersionsNext" }) - @GET - Observable> getCertificateVersionsNext(@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.keyvault.KeyVaultClientBase getDeletedCertificatesNext" }) - @GET - Observable> getDeletedCertificatesNext(@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.keyvault.KeyVaultClientBase getStorageAccountsNext" }) - @GET - Observable> getStorageAccountsNext(@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.keyvault.KeyVaultClientBase getDeletedStorageAccountsNext" }) - @GET - Observable> getDeletedStorageAccountsNext(@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.keyvault.KeyVaultClientBase getSasDefinitionsNext" }) - @GET - Observable> getSasDefinitionsNext(@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.keyvault.KeyVaultClientBase getDeletedSasDefinitionsNext" }) - @GET - Observable> getDeletedSasDefinitionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); - - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).toBlocking().single().body(); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @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 createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty), serviceCallback); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (kty == null) { - throw new IllegalArgumentException("Parameter kty is required and cannot be null."); - } - final Integer keySize = null; - final List keyOps = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - final JsonWebKeyCurveName curve = null; - KeyCreateParameters parameters = new KeyCreateParameters(); - parameters.withKty(kty); - parameters.withKeySize(null); - parameters.withKeyOps(null); - parameters.withKeyAttributes(null); - parameters.withTags(null); - parameters.withCurve(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve).toBlocking().single().body(); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @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 createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve), serviceCallback); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'SECP256K1' - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (kty == null) { - throw new IllegalArgumentException("Parameter kty is required and cannot be null."); - } - Validator.validate(keyOps); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyCreateParameters parameters = new KeyCreateParameters(); - parameters.withKty(kty); - parameters.withKeySize(keySize); - parameters.withKeyOps(keyOps); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - parameters.withCurve(curve); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse createKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).toBlocking().single().body(); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @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 importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key), serviceCallback); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (key == null) { - throw new IllegalArgumentException("Parameter key is required and cannot be null."); - } - Validator.validate(key); - final Boolean hsm = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - KeyImportParameters parameters = new KeyImportParameters(); - parameters.withHsm(null); - parameters.withKey(key); - parameters.withKeyAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).toBlocking().single().body(); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags), serviceCallback); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. - * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName Name for the imported key. - * @param key The Json web key - * @param hsm Whether to import as a hardware key (HSM) or software key. - * @param keyAttributes The key management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (key == null) { - throw new IllegalArgumentException("Parameter key is required and cannot be null."); - } - Validator.validate(key); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyImportParameters parameters = new KeyImportParameters(); - parameters.withHsm(hsm); - parameters.withKey(key); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse importKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedKeyBundle object if successful. - */ - public DeletedKeyBundle deleteKey(String vaultBaseUrl, String keyName) { - return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @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 deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - public Observable deleteKeyAsync(String vaultBaseUrl, String keyName) { - return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, DeletedKeyBundle>() { - @Override - public DeletedKeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a key of any type from storage in Azure Key Vault. - * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to delete. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - public Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @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 updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final List keyOps = null; - final KeyAttributes keyAttributes = null; - final Map tags = null; - KeyUpdateParameters parameters = new KeyUpdateParameters(); - parameters.withKeyOps(null); - parameters.withKeyAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).toBlocking().single().body(); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @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 updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags), serviceCallback); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. - * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of key to update. - * @param keyVersion The version of the key to update. - * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(keyOps); - Validator.validate(keyAttributes); - Validator.validate(tags); - KeyUpdateParameters parameters = new KeyUpdateParameters(); - parameters.withKeyOps(keyOps); - parameters.withKeyAttributes(keyAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion) { - return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); - } - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @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 getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); - } - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { - return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the public part of a stored key. - * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key to get. - * @param keyVersion Adding the version parameter retrieves a specific version of a key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName) { - ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @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> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName) { - return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName) { - return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName) - .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults) - .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeyVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeys(final String vaultBaseUrl) { - ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeysAsync(final String vaultBaseUrl) { - return getKeysWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl) { - return getKeysSinglePageAsync(vaultBaseUrl) - .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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeys(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults) { - return getKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<KeyItem> object - */ - public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getKeysSinglePageAsync(vaultBaseUrl, maxresults) - .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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupKeyResult object if successful. - */ - public BackupKeyResult backupKey(String vaultBaseUrl, String keyName) { - return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @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 backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupKeyResult object - */ - public Observable backupKeyAsync(String vaultBaseUrl, String keyName) { - return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, BackupKeyResult>() { - @Override - public BackupKeyResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Requests that a backup of the specified key be downloaded to the client. - * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupKeyResult object - */ - public Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.backupKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = backupKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse backupKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup) { - return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).toBlocking().single().body(); - } - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @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 restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup), serviceCallback); - } - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup) { - return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Restores a backed up key to a vault. - * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyBundleBackup The backup blob associated with a key bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (keyBundleBackup == null) { - throw new IllegalArgumentException("Parameter keyBundleBackup is required and cannot be null."); - } - KeyRestoreParameters parameters = new KeyRestoreParameters(); - parameters.withKeyBundleBackup(keyBundleBackup); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.restoreKey(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = restoreKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse restoreKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.encrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = encryptDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse encryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Decrypts a single block of encrypted data. - * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.decrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = decryptDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse decryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url 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 signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a signature from a digest using the specified key. - * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeySignParameters parameters = new KeySignParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.sign(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = signDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse signDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyVerifyResult object if successful. - */ - public KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).toBlocking().single().body(); - } - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @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 verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature), serviceCallback); - } - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyVerifyResult object - */ - public Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).map(new Func1, KeyVerifyResult>() { - @Override - public KeyVerifyResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Verifies a signature using a specified key. - * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256' - * @param digest The digest used for signing. - * @param signature The signature to be verified. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyVerifyResult object - */ - public Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (digest == null) { - throw new IllegalArgumentException("Parameter digest is required and cannot be null."); - } - if (signature == null) { - throw new IllegalArgumentException("Parameter signature is required and cannot be null."); - } - KeyVerifyParameters parameters = new KeyVerifyParameters(); - parameters.withAlgorithm(algorithm); - parameters.withDigest(digest); - parameters.withSignature(signature); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.verify(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = verifyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse verifyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Wraps a symmetric key using a specified key. - * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.wrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = wrapKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse wrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyOperationResult object if successful. - */ - public KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url 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 unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { - @Override - public KeyOperationResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. - * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @param keyVersion The version of the key. - * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' - * @param value the Base64Url value - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyOperationResult object - */ - public Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (keyVersion == null) { - throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (algorithm == null) { - throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - KeyOperationsParameters parameters = new KeyOperationsParameters(); - parameters.withAlgorithm(algorithm); - parameters.withValue(value); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.unwrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = unwrapKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse unwrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - public PagedList getDeletedKeys(final String vaultBaseUrl) { - ServiceResponse> response = getDeletedKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getDeletedKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedKeysSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - public Observable> getDeletedKeysAsync(final String vaultBaseUrl) { - return getDeletedKeysWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - public Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl) { - return getDeletedKeysSinglePageAsync(vaultBaseUrl) - .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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedKeysSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - public PagedList getDeletedKeys(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - public Observable> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedKeyItem> object - */ - public Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults) - .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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedKeysDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedKeyBundle object if successful. - */ - public DeletedKeyBundle getDeletedKey(String vaultBaseUrl, String keyName) { - return getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @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 getDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - public Observable getDeletedKeyAsync(String vaultBaseUrl, String keyName) { - return getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, DeletedKeyBundle>() { - @Override - public DeletedKeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the public part of a deleted key. - * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedKeyBundle object - */ - public Observable> getDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getDeletedKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - public void purgeDeletedKey(String vaultBaseUrl, String keyName) { - purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @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 purgeDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable purgeDeletedKeyAsync(String vaultBaseUrl, String keyName) { - return purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, Void>() { - @Override - public Void call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Permanently deletes the specified key. - * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the key - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable> purgeDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.purgeDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = purgeDeletedKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse purgeDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(204, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the KeyBundle object if successful. - */ - public KeyBundle recoverDeletedKey(String vaultBaseUrl, String keyName) { - return recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); - } - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @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 recoverDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); - } - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable recoverDeletedKeyAsync(String vaultBaseUrl, String keyName) { - return recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, KeyBundle>() { - @Override - public KeyBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Recovers the deleted key to its latest version. - * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name of the deleted key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the KeyBundle object - */ - public Observable> recoverDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.recoverDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = recoverDeletedKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse recoverDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).toBlocking().single().body(); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @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 setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value), serviceCallback); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - final Map tags = null; - final String contentType = null; - final SecretAttributes secretAttributes = null; - SecretSetParameters parameters = new SecretSetParameters(); - parameters.withValue(value); - parameters.withTags(null); - parameters.withContentType(null); - parameters.withSecretAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).toBlocking().single().body(); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @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 setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes), serviceCallback); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets a secret in a specified key vault. - * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param value The value of the secret. - * @param tags Application specific metadata in the form of key-value pairs. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (value == null) { - throw new IllegalArgumentException("Parameter value is required and cannot be null."); - } - Validator.validate(tags); - Validator.validate(secretAttributes); - SecretSetParameters parameters = new SecretSetParameters(); - parameters.withValue(value); - parameters.withTags(tags); - parameters.withContentType(contentType); - parameters.withSecretAttributes(secretAttributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSecretBundle object if successful. - */ - public DeletedSecretBundle deleteSecret(String vaultBaseUrl, String secretName) { - return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @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 deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - public Observable deleteSecretAsync(String vaultBaseUrl, String secretName) { - return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, DeletedSecretBundle>() { - @Override - public DeletedSecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a secret from a specified key vault. - * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - public Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @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 updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String contentType = null; - final SecretAttributes secretAttributes = null; - final Map tags = null; - SecretUpdateParameters parameters = new SecretUpdateParameters(); - parameters.withContentType(null); - parameters.withSecretAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags), serviceCallback); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @param contentType Type of the secret value such as a password. - * @param secretAttributes The secret management attributes. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(secretAttributes); - Validator.validate(tags); - SecretUpdateParameters parameters = new SecretUpdateParameters(); - parameters.withContentType(contentType); - parameters.withSecretAttributes(secretAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion) { - return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); - } - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @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 getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); - } - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { - return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Get a specified secret from a given key vault. - * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param secretVersion The version of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (secretVersion == null) { - throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecrets(final String vaultBaseUrl) { - ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretsAsync(final String vaultBaseUrl) { - return getSecretsWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl) { - return getSecretsSinglePageAsync(vaultBaseUrl) - .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @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> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { - return getSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getSecretsSinglePageAsync(vaultBaseUrl, maxresults) - .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName) { - ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @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> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName) { - return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName) { - return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName) - .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @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> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SecretItem> object - */ - public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults) - .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - public PagedList getDeletedSecrets(final String vaultBaseUrl) { - ServiceResponse> response = getDeletedSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getDeletedSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSecretsSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - public Observable> getDeletedSecretsAsync(final String vaultBaseUrl) { - return getDeletedSecretsWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - public Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl) { - return getDeletedSecretsSinglePageAsync(vaultBaseUrl) - .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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSecretsSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - public PagedList getDeletedSecrets(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - public Observable> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSecretItem> object - */ - public Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults) - .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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSecretsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSecretBundle object if successful. - */ - public DeletedSecretBundle getDeletedSecret(String vaultBaseUrl, String secretName) { - return getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @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 getDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - public Observable getDeletedSecretAsync(String vaultBaseUrl, String secretName) { - return getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, DeletedSecretBundle>() { - @Override - public DeletedSecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the specified deleted secret. - * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSecretBundle object - */ - public Observable> getDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getDeletedSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - public void purgeDeletedSecret(String vaultBaseUrl, String secretName) { - purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @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 purgeDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable purgeDeletedSecretAsync(String vaultBaseUrl, String secretName) { - return purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, Void>() { - @Override - public Void call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Permanently deletes the specified secret. - * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable> purgeDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.purgeDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = purgeDeletedSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse purgeDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(204, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle recoverDeletedSecret(String vaultBaseUrl, String secretName) { - return recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @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 recoverDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable recoverDeletedSecretAsync(String vaultBaseUrl, String secretName) { - return recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Recovers the deleted secret to the latest version. - * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the deleted secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> recoverDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.recoverDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = recoverDeletedSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse recoverDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupSecretResult object if successful. - */ - public BackupSecretResult backupSecret(String vaultBaseUrl, String secretName) { - return backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); - } - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @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 backupSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); - } - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupSecretResult object - */ - public Observable backupSecretAsync(String vaultBaseUrl, String secretName) { - return backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, BackupSecretResult>() { - @Override - public BackupSecretResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Backs up the specified secret. - * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretName The name of the secret. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupSecretResult object - */ - public Observable> backupSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (secretName == null) { - throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.backupSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = backupSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse backupSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SecretBundle object if successful. - */ - public SecretBundle restoreSecret(String vaultBaseUrl, byte[] secretBundleBackup) { - return restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup).toBlocking().single().body(); - } - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @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 restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup), serviceCallback); - } - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup) { - return restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup).map(new Func1, SecretBundle>() { - @Override - public SecretBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Restores a backed up secret to a vault. - * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param secretBundleBackup The backup blob associated with a secret bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SecretBundle object - */ - public Observable> restoreSecretWithServiceResponseAsync(String vaultBaseUrl, byte[] secretBundleBackup) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (secretBundleBackup == null) { - throw new IllegalArgumentException("Parameter secretBundleBackup is required and cannot be null."); - } - SecretRestoreParameters parameters = new SecretRestoreParameters(); - parameters.withSecretBundleBackup(secretBundleBackup); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.restoreSecret(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = restoreSecretDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse restoreSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificates(final String vaultBaseUrl) { - ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificatesAsync(final String vaultBaseUrl) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { - return getCertificatesSinglePageAsync(vaultBaseUrl) - .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - final Boolean includePending = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @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> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, includePending) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - return getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending) - .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedCertificateBundle object if successful. - */ - public DeletedCertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName) { - return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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 deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - public Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName) { - return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, DeletedCertificateBundle>() { - @Override - public DeletedCertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a certificate from a specified key vault. - * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - public Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - public Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts) { - return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).toBlocking().single().body(); - } - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @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 setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts), serviceCallback); - } - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts) { - return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the certificate contacts for the specified key vault. - * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param contacts The contacts for the key vault certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (contacts == null) { - throw new IllegalArgumentException("Parameter contacts is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(contacts); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateContacts(contacts, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - public Contacts getCertificateContacts(String vaultBaseUrl) { - return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); - } - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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 getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); - } - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable getCertificateContactsAsync(String vaultBaseUrl) { - return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the certificate contacts for a specified key vault. - * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the Contacts object if successful. - */ - public Contacts deleteCertificateContacts(String vaultBaseUrl) { - return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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 deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable deleteCertificateContactsAsync(String vaultBaseUrl) { - return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { - @Override - public Contacts call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the certificate contacts for a specified key vault. - * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the Contacts object - */ - public Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateContactsDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuers(final String vaultBaseUrl) { - ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersAsync(final String vaultBaseUrl) { - return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl) { - return getCertificateIssuersSinglePageAsync(vaultBaseUrl) - .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults) - .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateIssuersDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).toBlocking().single().body(); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @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 setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider), serviceCallback); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (provider == null) { - throw new IllegalArgumentException("Parameter provider is required and cannot be null."); - } - final IssuerCredentials credentials = null; - final OrganizationDetails organizationDetails = null; - final IssuerAttributes attributes = null; - CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); - parameter.withProvider(provider); - parameter.withCredentials(null); - parameter.withOrganizationDetails(null); - parameter.withAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @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 setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Sets the specified certificate issuer. - * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (provider == null) { - throw new IllegalArgumentException("Parameter provider is required and cannot be null."); - } - Validator.validate(credentials); - Validator.validate(organizationDetails); - Validator.validate(attributes); - CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); - parameter.withProvider(provider); - parameter.withCredentials(credentials); - parameter.withOrganizationDetails(organizationDetails); - parameter.withAttributes(attributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @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 updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String provider = null; - final IssuerCredentials credentials = null; - final OrganizationDetails organizationDetails = null; - final IssuerAttributes attributes = null; - CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); - parameter.withProvider(null); - parameter.withCredentials(null); - parameter.withOrganizationDetails(null); - parameter.withAttributes(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @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 updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified certificate issuer. - * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @param provider The issuer provider. - * @param credentials The credentials to be used for the issuer. - * @param organizationDetails Details of the organization as provided to the issuer. - * @param attributes Attributes of the issuer object. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(credentials); - Validator.validate(organizationDetails); - Validator.validate(attributes); - CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); - parameter.withProvider(provider); - parameter.withCredentials(credentials); - parameter.withOrganizationDetails(organizationDetails); - parameter.withAttributes(attributes); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName) { - return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @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 getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the specified certificate issuer. - * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the IssuerBundle object if successful. - */ - public IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName) { - return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); - } - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @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 deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); - } - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { - return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { - @Override - public IssuerBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the specified certificate issuer. - * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param issuerName The name of the issuer. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the IssuerBundle object - */ - public Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (issuerName == null) { - throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateIssuerDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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 createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable createCertificateAsync(String vaultBaseUrl, String certificateName) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateCreateParameters parameters = new CertificateCreateParameters(); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @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 createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates a new certificate. - * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateCreateParameters parameters = new CertificateCreateParameters(); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = createCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse createCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(202, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).toBlocking().single().body(); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @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 importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate), serviceCallback); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (base64EncodedCertificate == null) { - throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); - } - final String password = null; - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateImportParameters parameters = new CertificateImportParameters(); - parameters.withBase64EncodedCertificate(base64EncodedCertificate); - parameters.withPassword(null); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @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 importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Imports a certificate into a specified key vault. - * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. - * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (base64EncodedCertificate == null) { - throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateImportParameters parameters = new CertificateImportParameters(); - parameters.withBase64EncodedCertificate(base64EncodedCertificate); - parameters.withPassword(password); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = importCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse importCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName) { - ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName) { - return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName) { - return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName) - .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<CertificateItem> object - */ - public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults) - .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificatePolicy object if successful. - */ - public CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName) { - return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @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 getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - public Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName) { - return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificatePolicy>() { - @Override - public CertificatePolicy call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Lists the policy for a certificate. - * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in a given key vault. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - public Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificatePolicy(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificatePolicyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificatePolicy object if successful. - */ - public CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).toBlocking().single().body(); - } - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @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 updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy), serviceCallback); - } - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - public Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).map(new Func1, CertificatePolicy>() { - @Override - public CertificatePolicy call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the policy for a certificate. - * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificatePolicy The policy for the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificatePolicy object - */ - public Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificatePolicy == null) { - throw new IllegalArgumentException("Parameter certificatePolicy is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificatePolicy(certificateName, certificatePolicy, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificatePolicyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @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 updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final CertificatePolicy certificatePolicy = null; - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateUpdateParameters parameters = new CertificateUpdateParameters(); - parameters.withCertificatePolicy(null); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @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 updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given certificate. - * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given key vault. - * @param certificateVersion The version of the certificate. - * @param certificatePolicy The management policy for the certificate. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(certificatePolicy); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateUpdateParameters parameters = new CertificateUpdateParameters(); - parameters.withCertificatePolicy(certificatePolicy); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { - return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); - } - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @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 getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); - } - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets information about a certificate. - * Gets information about a specific certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate in the given vault. - * @param certificateVersion The version of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (certificateVersion == null) { - throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - public CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).toBlocking().single().body(); - } - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @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 updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested), serviceCallback); - } - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates a certificate operation. - * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - CertificateOperationUpdateParameter certificateOperation = new CertificateOperationUpdateParameter(); - certificateOperation.withCancellationRequested(cancellationRequested); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), certificateOperation, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - public CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName) { - return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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 getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName) { - return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the creation operation of a certificate. - * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateOperation object if successful. - */ - public CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName) { - return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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 deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName) { - return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { - @Override - public CertificateOperation call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes the creation operation for a specific certificate. - * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateOperation object - */ - public Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteCertificateOperationDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).toBlocking().single().body(); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @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 mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates), serviceCallback); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (x509Certificates == null) { - throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); - } - Validator.validate(x509Certificates); - final CertificateAttributes certificateAttributes = null; - final Map tags = null; - CertificateMergeParameters parameters = new CertificateMergeParameters(); - parameters.withX509Certificates(x509Certificates); - parameters.withCertificateAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = mergeCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).toBlocking().single().body(); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @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 mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags), serviceCallback); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @param x509Certificates The certificate or the certificate chain to merge. - * @param certificateAttributes The attributes of the certificate (optional). - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (x509Certificates == null) { - throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); - } - Validator.validate(x509Certificates); - Validator.validate(certificateAttributes); - Validator.validate(tags); - CertificateMergeParameters parameters = new CertificateMergeParameters(); - parameters.withX509Certificates(x509Certificates); - parameters.withCertificateAttributes(certificateAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = mergeCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse mergeCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(201, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupCertificateResult object if successful. - */ - public BackupCertificateResult backupCertificate(String vaultBaseUrl, String certificateName) { - return backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @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 backupCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupCertificateResult object - */ - public Observable backupCertificateAsync(String vaultBaseUrl, String certificateName) { - return backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, BackupCertificateResult>() { - @Override - public BackupCertificateResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Backs up the specified certificate. - * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupCertificateResult object - */ - public Observable> backupCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.backupCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = backupCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse backupCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle restoreCertificate(String vaultBaseUrl, byte[] certificateBundleBackup) { - return restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup).toBlocking().single().body(); - } - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @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 restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup), serviceCallback); - } - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup) { - return restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Restores a backed up certificate to a vault. - * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateBundleBackup The backup blob associated with a certificate bundle. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> restoreCertificateWithServiceResponseAsync(String vaultBaseUrl, byte[] certificateBundleBackup) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (certificateBundleBackup == null) { - throw new IllegalArgumentException("Parameter certificateBundleBackup is required and cannot be null."); - } - CertificateRestoreParameters parameters = new CertificateRestoreParameters(); - parameters.withCertificateBundleBackup(certificateBundleBackup); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.restoreCertificate(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = restoreCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse restoreCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - public PagedList getDeletedCertificates(final String vaultBaseUrl) { - ServiceResponse> response = getDeletedCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getDeletedCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedCertificatesSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - public Observable> getDeletedCertificatesAsync(final String vaultBaseUrl) { - return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - public Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { - return getDeletedCertificatesSinglePageAsync(vaultBaseUrl) - .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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedCertificatesSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - final Boolean includePending = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - public PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - ServiceResponse> response = getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @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> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - public Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, includePending) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedCertificateItem> object - */ - public Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - return getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending) - .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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param includePending Specifies whether to include certificates which are not completely provisioned. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedCertificatesDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedCertificateBundle object if successful. - */ - public DeletedCertificateBundle getDeletedCertificate(String vaultBaseUrl, String certificateName) { - return getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @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 getDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - public Observable getDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { - return getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, DeletedCertificateBundle>() { - @Override - public DeletedCertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Retrieves information about the specified deleted certificate. - * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedCertificateBundle object - */ - public Observable> getDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getDeletedCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - public void purgeDeletedCertificate(String vaultBaseUrl, String certificateName) { - purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @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 purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { - return purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, Void>() { - @Override - public Void call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Permanently deletes the specified deleted certificate. - * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable> purgeDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.purgeDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = purgeDeletedCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse purgeDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(204, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the CertificateBundle object if successful. - */ - public CertificateBundle recoverDeletedCertificate(String vaultBaseUrl, String certificateName) { - return recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @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 recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { - return recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateBundle>() { - @Override - public CertificateBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Recovers the deleted certificate back to its current version under /certificates. - * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param certificateName The name of the deleted certificate - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the CertificateBundle object - */ - public Observable> recoverDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.recoverDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = recoverDeletedCertificateDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse recoverDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - public PagedList getStorageAccounts(final String vaultBaseUrl) { - ServiceResponse> response = getStorageAccountsSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getStorageAccountsSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - public Observable> getStorageAccountsAsync(final String vaultBaseUrl) { - return getStorageAccountsWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - public Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl) { - return getStorageAccountsSinglePageAsync(vaultBaseUrl) - .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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getStorageAccountsSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getStorageAccountsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - public PagedList getStorageAccounts(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - public Observable> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults) { - return getStorageAccountsWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<StorageAccountItem> object - */ - public Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults) - .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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getStorageAccountsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getStorageAccountsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getStorageAccountsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - public PagedList getDeletedStorageAccounts(final String vaultBaseUrl) { - ServiceResponse> response = getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @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> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - public Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl) { - return getDeletedStorageAccountsWithServiceResponseAsync(vaultBaseUrl) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - public Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl) { - return getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl) - .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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedStorageAccountsSinglePageAsync(final String vaultBaseUrl) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedStorageAccountsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - public PagedList getDeletedStorageAccounts(final String vaultBaseUrl, final Integer maxresults) { - ServiceResponse> response = getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - public Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedStorageAccountsWithServiceResponseAsync(vaultBaseUrl, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedStorageAccountItem> object - */ - public Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { - return getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults) - .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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedStorageAccountsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedStorageAccountsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedStorageAccountsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedStorageBundle object if successful. - */ - public DeletedStorageBundle getDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { - return getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - public Observable getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, DeletedStorageBundle>() { - @Override - public DeletedStorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the specified deleted storage account. - * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - public Observable> getDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getDeletedStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - */ - public void purgeDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { - purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, Void>() { - @Override - public Void call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Permanently deletes the specified storage account. - * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the {@link ServiceResponse} object if successful. - */ - public Observable> purgeDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.purgeDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = purgeDeletedStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse purgeDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(204, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle recoverDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { - return recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Recovers the deleted storage account. - * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> recoverDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.recoverDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = recoverDeletedStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse recoverDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the BackupStorageResult object if successful. - */ - public BackupStorageResult backupStorageAccount(String vaultBaseUrl, String storageAccountName) { - return backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupStorageResult object - */ - public Observable backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, BackupStorageResult>() { - @Override - public BackupStorageResult call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Backs up the specified storage account. - * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the BackupStorageResult object - */ - public Observable> backupStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.backupStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = backupStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse backupStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle restoreStorageAccount(String vaultBaseUrl, byte[] storageBundleBackup) { - return restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup).toBlocking().single().body(); - } - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @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 restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup), serviceCallback); - } - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup) { - return restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Restores a backed up storage account to a vault. - * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageBundleBackup The backup blob associated with a storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> restoreStorageAccountWithServiceResponseAsync(String vaultBaseUrl, byte[] storageBundleBackup) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (storageBundleBackup == null) { - throw new IllegalArgumentException("Parameter storageBundleBackup is required and cannot be null."); - } - StorageRestoreParameters parameters = new StorageRestoreParameters(); - parameters.withStorageBundleBackup(storageBundleBackup); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.restoreStorageAccount(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = restoreStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse restoreStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedStorageBundle object if successful. - */ - public DeletedStorageBundle deleteStorageAccount(String vaultBaseUrl, String storageAccountName) { - return deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - public Observable deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, DeletedStorageBundle>() { - @Override - public DeletedStorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a storage account. This operation requires the storage/delete permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedStorageBundle object - */ - public Observable> deleteStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle getStorageAccount(String vaultBaseUrl, String storageAccountName) { - return getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 getStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable getStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets information about a specified storage account. This operation requires the storage/get permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> getStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { - return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey).toBlocking().single().body(); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @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 setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey), serviceCallback); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { - return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (resourceId == null) { - throw new IllegalArgumentException("Parameter resourceId is required and cannot be null."); - } - if (activeKeyName == null) { - throw new IllegalArgumentException("Parameter activeKeyName is required and cannot be null."); - } - final String regenerationPeriod = null; - final StorageAccountAttributes storageAccountAttributes = null; - final Map tags = null; - StorageAccountCreateParameters parameters = new StorageAccountCreateParameters(); - parameters.withResourceId(resourceId); - parameters.withActiveKeyName(activeKeyName); - parameters.withAutoRegenerateKey(autoRegenerateKey); - parameters.withRegenerationPeriod(null); - parameters.withStorageAccountAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).toBlocking().single().body(); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags), serviceCallback); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates or updates a new storage account. This operation requires the storage/set permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param resourceId Storage account resource id. - * @param activeKeyName Current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (resourceId == null) { - throw new IllegalArgumentException("Parameter resourceId is required and cannot be null."); - } - if (activeKeyName == null) { - throw new IllegalArgumentException("Parameter activeKeyName is required and cannot be null."); - } - Validator.validate(storageAccountAttributes); - Validator.validate(tags); - StorageAccountCreateParameters parameters = new StorageAccountCreateParameters(); - parameters.withResourceId(resourceId); - parameters.withActiveKeyName(activeKeyName); - parameters.withAutoRegenerateKey(autoRegenerateKey); - parameters.withRegenerationPeriod(regenerationPeriod); - parameters.withStorageAccountAttributes(storageAccountAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName) { - return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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 updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { - return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String activeKeyName = null; - final Boolean autoRegenerateKey = null; - final String regenerationPeriod = null; - final StorageAccountAttributes storageAccountAttributes = null; - final Map tags = null; - StorageAccountUpdateParameters parameters = new StorageAccountUpdateParameters(); - parameters.withActiveKeyName(null); - parameters.withAutoRegenerateKey(null); - parameters.withRegenerationPeriod(null); - parameters.withStorageAccountAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param activeKeyName The current active storage account key name. - * @param autoRegenerateKey whether keyvault should manage the storage account for the user. - * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. - * @param storageAccountAttributes The attributes of the storage account. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(storageAccountAttributes); - Validator.validate(tags); - StorageAccountUpdateParameters parameters = new StorageAccountUpdateParameters(); - parameters.withActiveKeyName(activeKeyName); - parameters.withAutoRegenerateKey(autoRegenerateKey); - parameters.withRegenerationPeriod(regenerationPeriod); - parameters.withStorageAccountAttributes(storageAccountAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateStorageAccountDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the StorageBundle object if successful. - */ - public StorageBundle regenerateStorageAccountKey(String vaultBaseUrl, String storageAccountName, String keyName) { - return regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName).toBlocking().single().body(); - } - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @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 regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName), serviceCallback); - } - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName) { - return regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName).map(new Func1, StorageBundle>() { - @Override - public StorageBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param keyName The storage account key name. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the StorageBundle object - */ - public Observable> regenerateStorageAccountKeyWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String keyName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (keyName == null) { - throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); - } - StorageAccountRegenerteKeyParameters parameters = new StorageAccountRegenerteKeyParameters(); - parameters.withKeyName(keyName); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.regenerateStorageAccountKey(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = regenerateStorageAccountKeyDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse regenerateStorageAccountKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - public PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName) { - ServiceResponse> response = getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - public Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName) { - return getSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - public Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName) { - return getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName) - .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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSasDefinitionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - public PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - ServiceResponse> response = getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - public Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - return getSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<SasDefinitionItem> object - */ - public Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - return getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults) - .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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSasDefinitionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSasDefinitionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - public PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName) { - ServiceResponse> response = getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @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> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - public Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName) { - return getDeletedSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - public Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName) { - return getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName) - .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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final Integer maxresults = null; - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSasDefinitionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - public PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - ServiceResponse> response = getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @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> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - public Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - return getDeletedSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName, maxresults) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the PagedList<DeletedSasDefinitionItem> object - */ - public Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - return getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults) - .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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSasDefinitionsDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedSasDefinitionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSasDefinitionBundle object if successful. - */ - public DeletedSasDefinitionBundle getDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); - } - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @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 getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); - } - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - public Observable getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, DeletedSasDefinitionBundle>() { - @Override - public DeletedSasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets the specified deleted sas definition. - * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - public Observable> getDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getDeletedSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getDeletedSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getDeletedSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle recoverDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); - } - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @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 recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); - } - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Recovers the deleted SAS definition. - * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> recoverDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.recoverDeletedSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = recoverDeletedSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse recoverDeletedSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the DeletedSasDefinitionBundle object if successful. - */ - public DeletedSasDefinitionBundle deleteSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); - } - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @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 deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); - } - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - public Observable deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, DeletedSasDefinitionBundle>() { - @Override - public DeletedSasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the DeletedSasDefinitionBundle object - */ - public Observable> deleteSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.deleteSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = deleteSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse deleteSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle getSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); - } - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @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 getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); - } - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> getSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = getSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse getSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { - return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod).toBlocking().single().body(); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @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 setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod), serviceCallback); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { - return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (templateUri == null) { - throw new IllegalArgumentException("Parameter templateUri is required and cannot be null."); - } - if (sasType == null) { - throw new IllegalArgumentException("Parameter sasType is required and cannot be null."); - } - if (validityPeriod == null) { - throw new IllegalArgumentException("Parameter validityPeriod is required and cannot be null."); - } - final SasDefinitionAttributes sasDefinitionAttributes = null; - final Map tags = null; - SasDefinitionCreateParameters parameters = new SasDefinitionCreateParameters(); - parameters.withTemplateUri(templateUri); - parameters.withSasType(sasType); - parameters.withValidityPeriod(validityPeriod); - parameters.withSasDefinitionAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).toBlocking().single().body(); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags), serviceCallback); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - if (templateUri == null) { - throw new IllegalArgumentException("Parameter templateUri is required and cannot be null."); - } - if (sasType == null) { - throw new IllegalArgumentException("Parameter sasType is required and cannot be null."); - } - if (validityPeriod == null) { - throw new IllegalArgumentException("Parameter validityPeriod is required and cannot be null."); - } - Validator.validate(sasDefinitionAttributes); - Validator.validate(tags); - SasDefinitionCreateParameters parameters = new SasDefinitionCreateParameters(); - parameters.withTemplateUri(templateUri); - parameters.withSasType(sasType); - parameters.withValidityPeriod(validityPeriod); - parameters.withSasDefinitionAttributes(sasDefinitionAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.setSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = setSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse setSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @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 updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - final String templateUri = null; - final SasTokenType sasType = null; - final String validityPeriod = null; - final SasDefinitionAttributes sasDefinitionAttributes = null; - final Map tags = null; - SasDefinitionUpdateParameters parameters = new SasDefinitionUpdateParameters(); - parameters.withTemplateUri(null); - parameters.withSasType(null); - parameters.withValidityPeriod(null); - parameters.withSasDefinitionAttributes(null); - parameters.withTags(null); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent - * @return the SasDefinitionBundle object if successful. - */ - public SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).toBlocking().single().body(); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @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 updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags), serviceCallback); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).map(new Func1, SasDefinitionBundle>() { - @Override - public SasDefinitionBundle call(ServiceResponse response) { - return response.body(); - } - }); - } - - /** - * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param storageAccountName The name of the storage account. - * @param sasDefinitionName The name of the SAS definition. - * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. - * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' - * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. - * @param sasDefinitionAttributes The attributes of the SAS definition. - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the observable to the SasDefinitionBundle object - */ - public Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (storageAccountName == null) { - throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); - } - if (sasDefinitionName == null) { - throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - Validator.validate(sasDefinitionAttributes); - Validator.validate(tags); - SasDefinitionUpdateParameters parameters = new SasDefinitionUpdateParameters(); - parameters.withTemplateUri(templateUri); - parameters.withSasType(sasType); - parameters.withValidityPeriod(validityPeriod); - parameters.withSasDefinitionAttributes(sasDefinitionAttributes); - parameters.withTags(tags); - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.updateSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = updateSasDefinitionDelegate(response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse updateSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) - .register(200, new TypeToken() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeyVersionsNext(final String nextPageLink) { - ServiceResponse> response = getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeyVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - public Observable> getKeyVersionsNextAsync(final String nextPageLink) { - return getKeyVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - public Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getKeyVersionsNextSinglePageAsync(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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Retrieves a list of individual key versions with the same key name. - * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeyVersionsNextSinglePageAsync(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.getKeyVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeyVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeyVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<KeyItem> object if successful. - */ - public PagedList getKeysNext(final String nextPageLink) { - ServiceResponse> response = getKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getKeysNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - public Observable> getKeysNextAsync(final String nextPageLink) { - return getKeysNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @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<KeyItem> object - */ - public Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink) { - return getKeysNextSinglePageAsync(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(getKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getKeysNextSinglePageAsync(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.getKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getKeysNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. - */ - public PagedList getDeletedKeysNext(final String nextPageLink) { - ServiceResponse> response = getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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> getDeletedKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedKeysNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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<DeletedKeyItem> object - */ - public Observable> getDeletedKeysNextAsync(final String nextPageLink) { - return getDeletedKeysNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @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<DeletedKeyItem> object - */ - public Observable>> getDeletedKeysNextWithServiceResponseAsync(final String nextPageLink) { - return getDeletedKeysNextSinglePageAsync(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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted keys in the specified vault. - * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedKeysNextSinglePageAsync(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.getDeletedKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedKeysNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecretsNext(final String nextPageLink) { - ServiceResponse> response = getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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<SecretItem> object - */ - public Observable> getSecretsNextAsync(final String nextPageLink) { - return getSecretsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @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<SecretItem> object - */ - public Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink) { - return getSecretsNextSinglePageAsync(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(getSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List secrets in a specified key vault. - * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretsNextSinglePageAsync(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.getSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SecretItem> object if successful. - */ - public PagedList getSecretVersionsNext(final String nextPageLink) { - ServiceResponse> response = getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSecretVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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<SecretItem> object - */ - public Observable> getSecretVersionsNextAsync(final String nextPageLink) { - return getSecretVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @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<SecretItem> object - */ - public Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getSecretVersionsNextSinglePageAsync(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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List all versions of the specified secret. - * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSecretVersionsNextSinglePageAsync(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.getSecretVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSecretVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSecretVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. - */ - public PagedList getDeletedSecretsNext(final String nextPageLink) { - ServiceResponse> response = getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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> getDeletedSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSecretsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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<DeletedSecretItem> object - */ - public Observable> getDeletedSecretsNextAsync(final String nextPageLink) { - return getDeletedSecretsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @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<DeletedSecretItem> object - */ - public Observable>> getDeletedSecretsNextWithServiceResponseAsync(final String nextPageLink) { - return getDeletedSecretsNextSinglePageAsync(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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted secrets for the specified vault. - * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSecretsNextSinglePageAsync(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.getDeletedSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSecretsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificatesNext(final String nextPageLink) { - ServiceResponse> response = getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificatesNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - public Observable> getCertificatesNextAsync(final String nextPageLink) { - return getCertificatesNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - public Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificatesNextSinglePageAsync(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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificatesNextSinglePageAsync(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.getCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificatesNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. - */ - public PagedList getCertificateIssuersNext(final String nextPageLink) { - ServiceResponse> response = getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateIssuersNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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<CertificateIssuerItem> object - */ - public Observable> getCertificateIssuersNextAsync(final String nextPageLink) { - return getCertificateIssuersNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @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<CertificateIssuerItem> object - */ - public Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificateIssuersNextSinglePageAsync(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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List certificate issuers for a specified key vault. - * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateIssuersNextSinglePageAsync(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.getCertificateIssuersNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateIssuersNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateIssuersNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<CertificateItem> object if successful. - */ - public PagedList getCertificateVersionsNext(final String nextPageLink) { - ServiceResponse> response = getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getCertificateVersionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - public Observable> getCertificateVersionsNextAsync(final String nextPageLink) { - return getCertificateVersionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @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<CertificateItem> object - */ - public Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink) { - return getCertificateVersionsNextSinglePageAsync(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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List the versions of a certificate. - * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getCertificateVersionsNextSinglePageAsync(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.getCertificateVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getCertificateVersionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getCertificateVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. - */ - public PagedList getDeletedCertificatesNext(final String nextPageLink) { - ServiceResponse> response = getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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> getDeletedCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedCertificatesNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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<DeletedCertificateItem> object - */ - public Observable> getDeletedCertificatesNextAsync(final String nextPageLink) { - return getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @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<DeletedCertificateItem> object - */ - public Observable>> getDeletedCertificatesNextWithServiceResponseAsync(final String nextPageLink) { - return getDeletedCertificatesNextSinglePageAsync(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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedCertificatesNextSinglePageAsync(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.getDeletedCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedCertificatesNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. - */ - public PagedList getStorageAccountsNext(final String nextPageLink) { - ServiceResponse> response = getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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> getStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getStorageAccountsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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<StorageAccountItem> object - */ - public Observable> getStorageAccountsNextAsync(final String nextPageLink) { - return getStorageAccountsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @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<StorageAccountItem> object - */ - public Observable>> getStorageAccountsNextWithServiceResponseAsync(final String nextPageLink) { - return getStorageAccountsNextSinglePageAsync(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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getStorageAccountsNextSinglePageAsync(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.getStorageAccountsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getStorageAccountsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getStorageAccountsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. - */ - public PagedList getDeletedStorageAccountsNext(final String nextPageLink) { - ServiceResponse> response = getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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> getDeletedStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedStorageAccountsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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<DeletedStorageAccountItem> object - */ - public Observable> getDeletedStorageAccountsNextAsync(final String nextPageLink) { - return getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @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<DeletedStorageAccountItem> object - */ - public Observable>> getDeletedStorageAccountsNextWithServiceResponseAsync(final String nextPageLink) { - return getDeletedStorageAccountsNextSinglePageAsync(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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted storage accounts for the specified vault. - * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedStorageAccountsNextSinglePageAsync(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.getDeletedStorageAccountsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedStorageAccountsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedStorageAccountsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. - */ - public PagedList getSasDefinitionsNext(final String nextPageLink) { - ServiceResponse> response = getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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> getSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getSasDefinitionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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<SasDefinitionItem> object - */ - public Observable> getSasDefinitionsNextAsync(final String nextPageLink) { - return getSasDefinitionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @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<SasDefinitionItem> object - */ - public Observable>> getSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink) { - return getSasDefinitionsNextSinglePageAsync(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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getSasDefinitionsNextSinglePageAsync(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.getSasDefinitionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getSasDefinitionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getSasDefinitionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. - */ - public PagedList getDeletedSasDefinitionsNext(final String nextPageLink) { - ServiceResponse> response = getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single(); - return new PagedList(response.body()) { - @Override - public Page nextPage(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); - } - }; - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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> getDeletedSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { - return AzureServiceFuture.fromPageResponse( - getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink), - new Func1>>>() { - @Override - public Observable>> call(String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); - } - }, - serviceCallback); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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<DeletedSasDefinitionItem> object - */ - public Observable> getDeletedSasDefinitionsNextAsync(final String nextPageLink) { - return getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink) - .map(new Func1>, Page>() { - @Override - public Page call(ServiceResponse> response) { - return response.body(); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @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<DeletedSasDefinitionItem> object - */ - public Observable>> getDeletedSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink) { - return getDeletedSasDefinitionsNextSinglePageAsync(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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); - } - }); - } - - /** - * Lists deleted SAS definitions for the specified vault and storage account. - * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. - * - * @param nextPageLink The NextLink from the previous successful call to List operation. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. - */ - public Observable>> getDeletedSasDefinitionsNextSinglePageAsync(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.getDeletedSasDefinitionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) - .flatMap(new Func1, Observable>>>() { - @Override - public Observable>> call(Response response) { - try { - ServiceResponse> result = getDeletedSasDefinitionsNextDelegate(response); - return Observable.just(new ServiceResponse>(result.body(), result.response())); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - private ServiceResponse> getDeletedSasDefinitionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { - return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) - .register(200, new TypeToken>() { }.getType()) - .registerError(KeyVaultErrorException.class) - .build(response); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.implementation; + +import com.google.common.base.Joiner; +import com.google.common.reflect.TypeToken; +import com.microsoft.azure.AzureClient; +import com.microsoft.azure.AzureServiceClient; +import com.microsoft.azure.AzureServiceFuture; +import com.microsoft.azure.keyvault.KeyVaultClientBase; +import com.microsoft.azure.keyvault.models.BackupCertificateResult; +import com.microsoft.azure.keyvault.models.BackupKeyResult; +import com.microsoft.azure.keyvault.models.BackupSecretResult; +import com.microsoft.azure.keyvault.models.BackupStorageResult; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificateBundle; +import com.microsoft.azure.keyvault.models.CertificateCreateParameters; +import com.microsoft.azure.keyvault.models.CertificateImportParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerItem; +import com.microsoft.azure.keyvault.models.CertificateIssuerSetParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerUpdateParameters; +import com.microsoft.azure.keyvault.models.CertificateItem; +import com.microsoft.azure.keyvault.models.CertificateMergeParameters; +import com.microsoft.azure.keyvault.models.CertificateOperation; +import com.microsoft.azure.keyvault.models.CertificateOperationUpdateParameter; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.CertificateRestoreParameters; +import com.microsoft.azure.keyvault.models.CertificateUpdateParameters; +import com.microsoft.azure.keyvault.models.Contacts; +import com.microsoft.azure.keyvault.models.DeletedCertificateBundle; +import com.microsoft.azure.keyvault.models.DeletedCertificateItem; +import com.microsoft.azure.keyvault.models.DeletedKeyBundle; +import com.microsoft.azure.keyvault.models.DeletedKeyItem; +import com.microsoft.azure.keyvault.models.DeletedSasDefinitionBundle; +import com.microsoft.azure.keyvault.models.DeletedSasDefinitionItem; +import com.microsoft.azure.keyvault.models.DeletedSecretBundle; +import com.microsoft.azure.keyvault.models.DeletedSecretItem; +import com.microsoft.azure.keyvault.models.DeletedStorageAccountItem; +import com.microsoft.azure.keyvault.models.DeletedStorageBundle; +import com.microsoft.azure.keyvault.models.IssuerAttributes; +import com.microsoft.azure.keyvault.models.IssuerBundle; +import com.microsoft.azure.keyvault.models.IssuerCredentials; +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.KeyCreateParameters; +import com.microsoft.azure.keyvault.models.KeyImportParameters; +import com.microsoft.azure.keyvault.models.KeyItem; +import com.microsoft.azure.keyvault.models.KeyOperationResult; +import com.microsoft.azure.keyvault.models.KeyOperationsParameters; +import com.microsoft.azure.keyvault.models.KeyRestoreParameters; +import com.microsoft.azure.keyvault.models.KeySignParameters; +import com.microsoft.azure.keyvault.models.KeyUpdateParameters; +import com.microsoft.azure.keyvault.models.KeyVaultErrorException; +import com.microsoft.azure.keyvault.models.KeyVerifyParameters; +import com.microsoft.azure.keyvault.models.KeyVerifyResult; +import com.microsoft.azure.keyvault.models.OrganizationDetails; +import com.microsoft.azure.keyvault.models.PageImpl; +import com.microsoft.azure.keyvault.models.SasDefinitionAttributes; +import com.microsoft.azure.keyvault.models.SasDefinitionBundle; +import com.microsoft.azure.keyvault.models.SasDefinitionCreateParameters; +import com.microsoft.azure.keyvault.models.SasDefinitionItem; +import com.microsoft.azure.keyvault.models.SasDefinitionUpdateParameters; +import com.microsoft.azure.keyvault.models.SasTokenType; +import com.microsoft.azure.keyvault.models.SecretAttributes; +import com.microsoft.azure.keyvault.models.SecretBundle; +import com.microsoft.azure.keyvault.models.SecretItem; +import com.microsoft.azure.keyvault.models.SecretRestoreParameters; +import com.microsoft.azure.keyvault.models.SecretSetParameters; +import com.microsoft.azure.keyvault.models.SecretUpdateParameters; +import com.microsoft.azure.keyvault.models.StorageAccountAttributes; +import com.microsoft.azure.keyvault.models.StorageAccountCreateParameters; +import com.microsoft.azure.keyvault.models.StorageAccountItem; +import com.microsoft.azure.keyvault.models.StorageAccountRegenerteKeyParameters; +import com.microsoft.azure.keyvault.models.StorageAccountUpdateParameters; +import com.microsoft.azure.keyvault.models.StorageBundle; +import com.microsoft.azure.keyvault.models.StorageRestoreParameters; +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; +import com.microsoft.rest.credentials.ServiceClientCredentials; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.ServiceCallback; +import com.microsoft.rest.ServiceFuture; +import com.microsoft.rest.ServiceResponse; +import com.microsoft.rest.Validator; +import java.io.IOException; +import java.util.List; +import java.util.Map; +import okhttp3.ResponseBody; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.HTTP; +import retrofit2.http.PATCH; +import retrofit2.http.Path; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Query; +import retrofit2.http.Url; +import retrofit2.Response; +import rx.functions.Func1; +import rx.Observable; + +/** + * Initializes a new instance of the KeyVaultClientBaseImpl class. + */ +public class KeyVaultClientBaseImpl extends AzureServiceClient implements KeyVaultClientBase { + /** The Retrofit service to perform REST calls. */ + private KeyVaultClientBaseService service; + /** the {@link AzureClient} used for long running operations. */ + private AzureClient azureClient; + + /** + * Gets the {@link AzureClient} used for long running operations. + * @return the azure client; + */ + public AzureClient getAzureClient() { + return this.azureClient; + } + + /** Client API version. */ + private String apiVersion; + + /** + * Gets Client API version. + * + * @return the apiVersion value. + */ + public String apiVersion() { + return this.apiVersion; + } + + /** Gets or sets the preferred language for the response. */ + private String acceptLanguage; + + /** + * Gets Gets or sets the preferred language for the response. + * + * @return the acceptLanguage value. + */ + public String acceptLanguage() { + return this.acceptLanguage; + } + + /** + * Sets Gets or sets the preferred language for the response. + * + * @param acceptLanguage the acceptLanguage value. + * @return the service client itself + */ + public KeyVaultClientBaseImpl withAcceptLanguage(String acceptLanguage) { + this.acceptLanguage = acceptLanguage; + return this; + } + + /** Gets or sets 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. + * + * @return the longRunningOperationRetryTimeout value. + */ + public int longRunningOperationRetryTimeout() { + return this.longRunningOperationRetryTimeout; + } + + /** + * Sets Gets or sets the retry timeout in seconds for Long Running Operations. Default value is 30. + * + * @param longRunningOperationRetryTimeout the longRunningOperationRetryTimeout value. + * @return the service client itself + */ + public KeyVaultClientBaseImpl withLongRunningOperationRetryTimeout(int longRunningOperationRetryTimeout) { + this.longRunningOperationRetryTimeout = longRunningOperationRetryTimeout; + return this; + } + + /** 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. + * + * @return the generateClientRequestId value. + */ + public boolean generateClientRequestId() { + return this.generateClientRequestId; + } + + /** + * Sets 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 + */ + public KeyVaultClientBaseImpl withGenerateClientRequestId(boolean generateClientRequestId) { + this.generateClientRequestId = generateClientRequestId; + return this; + } + + /** + * Initializes an instance of KeyVaultClientBase client. + * + * @param credentials the management credentials for Azure + */ + public KeyVaultClientBaseImpl(ServiceClientCredentials credentials) { + this("https://{vaultBaseUrl}", credentials); + } + + /** + * Initializes an instance of KeyVaultClientBase client. + * + * @param baseUrl the base URL of the host + * @param credentials the management credentials for Azure + */ + private KeyVaultClientBaseImpl(String baseUrl, ServiceClientCredentials credentials) { + super(baseUrl, credentials); + initialize(); + } + + /** + * Initializes an instance of KeyVaultClientBase client. + * + * @param restClient the REST client to connect to Azure. + */ + public KeyVaultClientBaseImpl(RestClient restClient) { + super(restClient); + initialize(); + } + + protected void initialize() { + this.apiVersion = "7.0"; + this.acceptLanguage = "en-US"; + this.longRunningOperationRetryTimeout = 30; + this.generateClientRequestId = true; + this.azureClient = new AzureClient(this); + initializeService(); + } + + /** + * Gets the User-Agent header for the client. + * + * @return the user agent string. + */ + @Override + public String userAgent() { + return String.format("%s (%s, %s)", super.userAgent(), "KeyVaultClientBase", "7.0"); + } + + private void initializeService() { + service = restClient().retrofit().create(KeyVaultClientBaseService.class); + } + + /** + * The interface defining all the services for KeyVaultClientBase to be + * used by Retrofit to perform actually REST calls. + */ + interface KeyVaultClientBaseService { + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase createKey" }) + @POST("keys/{key-name}/create") + Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase importKey" }) + @PUT("keys/{key-name}") + Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteKey" }) + @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) + Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateKey" }) + @PATCH("keys/{key-name}/{key-version}") + Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKey" }) + @GET("keys/{key-name}/{key-version}") + Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeyVersions" }) + @GET("keys/{key-name}/versions") + Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeys" }) + @GET("keys") + Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupKey" }) + @POST("keys/{key-name}/backup") + Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreKey" }) + @POST("keys/restore") + Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase encrypt" }) + @POST("keys/{key-name}/{key-version}/encrypt") + Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase decrypt" }) + @POST("keys/{key-name}/{key-version}/decrypt") + Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase sign" }) + @POST("keys/{key-name}/{key-version}/sign") + Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase verify" }) + @POST("keys/{key-name}/{key-version}/verify") + Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase wrapKey" }) + @POST("keys/{key-name}/{key-version}/wrapkey") + Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase unwrapKey" }) + @POST("keys/{key-name}/{key-version}/unwrapkey") + Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedKeys" }) + @GET("deletedkeys") + Observable> getDeletedKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedKey" }) + @GET("deletedkeys/{key-name}") + Observable> getDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedKey" }) + @HTTP(path = "deletedkeys/{key-name}", method = "DELETE", hasBody = true) + Observable> purgeDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedKey" }) + @POST("deletedkeys/{key-name}/recover") + Observable> recoverDeletedKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setSecret" }) + @PUT("secrets/{secret-name}") + Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteSecret" }) + @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) + Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateSecret" }) + @PATCH("secrets/{secret-name}/{secret-version}") + Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecret" }) + @GET("secrets/{secret-name}/{secret-version}") + Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecrets" }) + @GET("secrets") + Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSecretVersions" }) + @GET("secrets/{secret-name}/versions") + Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSecrets" }) + @GET("deletedsecrets") + Observable> getDeletedSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSecret" }) + @GET("deletedsecrets/{secret-name}") + Observable> getDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedSecret" }) + @HTTP(path = "deletedsecrets/{secret-name}", method = "DELETE", hasBody = true) + Observable> purgeDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedSecret" }) + @POST("deletedsecrets/{secret-name}/recover") + Observable> recoverDeletedSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupSecret" }) + @POST("secrets/{secret-name}/backup") + Observable> backupSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreSecret" }) + @POST("secrets/restore") + Observable> restoreSecret(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificates" }) + @GET("certificates") + Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("includePending") Boolean includePending, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificate" }) + @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setCertificateContacts" }) + @PUT("certificates/contacts") + Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateContacts" }) + @GET("certificates/contacts") + Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateContacts" }) + @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) + Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateIssuers" }) + @GET("certificates/issuers") + Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setCertificateIssuer" }) + @PUT("certificates/issuers/{issuer-name}") + Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificateIssuer" }) + @PATCH("certificates/issuers/{issuer-name}") + Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateIssuer" }) + @GET("certificates/issuers/{issuer-name}") + Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateIssuer" }) + @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase createCertificate" }) + @POST("certificates/{certificate-name}/create") + Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase importCertificate" }) + @POST("certificates/{certificate-name}/import") + Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateVersions" }) + @GET("certificates/{certificate-name}/versions") + Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificatePolicy" }) + @GET("certificates/{certificate-name}/policy") + Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificatePolicy" }) + @PATCH("certificates/{certificate-name}/policy") + Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificate" }) + @PATCH("certificates/{certificate-name}/{certificate-version}") + Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificate" }) + @GET("certificates/{certificate-name}/{certificate-version}") + Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateCertificateOperation" }) + @PATCH("certificates/{certificate-name}/pending") + Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getCertificateOperation" }) + @GET("certificates/{certificate-name}/pending") + Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteCertificateOperation" }) + @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) + Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase mergeCertificate" }) + @POST("certificates/{certificate-name}/pending/merge") + Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupCertificate" }) + @POST("certificates/{certificate-name}/backup") + Observable> backupCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreCertificate" }) + @POST("certificates/restore") + Observable> restoreCertificate(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedCertificates" }) + @GET("deletedcertificates") + Observable> getDeletedCertificates(@Query("maxresults") Integer maxresults, @Query("includePending") Boolean includePending, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedCertificate" }) + @GET("deletedcertificates/{certificate-name}") + Observable> getDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedCertificate" }) + @HTTP(path = "deletedcertificates/{certificate-name}", method = "DELETE", hasBody = true) + Observable> purgeDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedCertificate" }) + @POST("deletedcertificates/{certificate-name}/recover") + Observable> recoverDeletedCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getStorageAccounts" }) + @GET("storage") + Observable> getStorageAccounts(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedStorageAccounts" }) + @GET("deletedstorage") + Observable> getDeletedStorageAccounts(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedStorageAccount" }) + @GET("deletedstorage/{storage-account-name}") + Observable> getDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase purgeDeletedStorageAccount" }) + @HTTP(path = "deletedstorage/{storage-account-name}", method = "DELETE", hasBody = true) + Observable> purgeDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedStorageAccount" }) + @POST("deletedstorage/{storage-account-name}/recover") + Observable> recoverDeletedStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase backupStorageAccount" }) + @POST("storage/{storage-account-name}/backup") + Observable> backupStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase restoreStorageAccount" }) + @POST("storage/restore") + Observable> restoreStorageAccount(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteStorageAccount" }) + @HTTP(path = "storage/{storage-account-name}", method = "DELETE", hasBody = true) + Observable> deleteStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getStorageAccount" }) + @GET("storage/{storage-account-name}") + Observable> getStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setStorageAccount" }) + @PUT("storage/{storage-account-name}") + Observable> setStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateStorageAccount" }) + @PATCH("storage/{storage-account-name}") + Observable> updateStorageAccount(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase regenerateStorageAccountKey" }) + @POST("storage/{storage-account-name}/regeneratekey") + Observable> regenerateStorageAccountKey(@Path("storage-account-name") String storageAccountName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body StorageAccountRegenerteKeyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSasDefinitions" }) + @GET("storage/{storage-account-name}/sas") + Observable> getSasDefinitions(@Path("storage-account-name") String storageAccountName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSasDefinitions" }) + @GET("deletedstorage/{storage-account-name}/sas") + Observable> getDeletedSasDefinitions(@Path("storage-account-name") String storageAccountName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getDeletedSasDefinition" }) + @GET("deletedstorage/{storage-account-name}/sas/{sas-definition-name}") + Observable> getDeletedSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase recoverDeletedSasDefinition" }) + @POST("deletedstorage/{storage-account-name}/sas/{sas-definition-name}/recover") + Observable> recoverDeletedSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase deleteSasDefinition" }) + @HTTP(path = "storage/{storage-account-name}/sas/{sas-definition-name}", method = "DELETE", hasBody = true) + Observable> deleteSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getSasDefinition" }) + @GET("storage/{storage-account-name}/sas/{sas-definition-name}") + Observable> getSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase setSasDefinition" }) + @PUT("storage/{storage-account-name}/sas/{sas-definition-name}") + Observable> setSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SasDefinitionCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase updateSasDefinition" }) + @PATCH("storage/{storage-account-name}/sas/{sas-definition-name}") + Observable> updateSasDefinition(@Path("storage-account-name") String storageAccountName, @Path("sas-definition-name") String sasDefinitionName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SasDefinitionUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({ "Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClientBase getKeyVersionsNext" }) + @GET + Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClientBase getKeysNext" }) + @GET + Observable> getKeysNext(@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.keyvault.KeyVaultClientBase getDeletedKeysNext" }) + @GET + Observable> getDeletedKeysNext(@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.keyvault.KeyVaultClientBase getSecretsNext" }) + @GET + Observable> getSecretsNext(@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.keyvault.KeyVaultClientBase getSecretVersionsNext" }) + @GET + Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClientBase getDeletedSecretsNext" }) + @GET + Observable> getDeletedSecretsNext(@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.keyvault.KeyVaultClientBase getCertificatesNext" }) + @GET + Observable> getCertificatesNext(@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.keyvault.KeyVaultClientBase getCertificateIssuersNext" }) + @GET + Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClientBase getCertificateVersionsNext" }) + @GET + Observable> getCertificateVersionsNext(@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.keyvault.KeyVaultClientBase getDeletedCertificatesNext" }) + @GET + Observable> getDeletedCertificatesNext(@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.keyvault.KeyVaultClientBase getStorageAccountsNext" }) + @GET + Observable> getStorageAccountsNext(@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.keyvault.KeyVaultClientBase getDeletedStorageAccountsNext" }) + @GET + Observable> getDeletedStorageAccountsNext(@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.keyvault.KeyVaultClientBase getSasDefinitionsNext" }) + @GET + Observable> getSasDefinitionsNext(@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.keyvault.KeyVaultClientBase getDeletedSasDefinitionsNext" }) + @GET + Observable> getDeletedSasDefinitionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).toBlocking().single().body(); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @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 createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty), serviceCallback); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (kty == null) { + throw new IllegalArgumentException("Parameter kty is required and cannot be null."); + } + final Integer keySize = null; + final List keyOps = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + final JsonWebKeyCurveName curve = null; + KeyCreateParameters parameters = new KeyCreateParameters(); + parameters.withKty(kty); + parameters.withKeySize(null); + parameters.withKeyOps(null); + parameters.withKeyAttributes(null); + parameters.withTags(null); + parameters.withCurve(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve).toBlocking().single().body(); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @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 createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve), serviceCallback); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, curve).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. + * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. It requires the keys/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name for the new key. The system will generate the version name for the new key. + * @param kty The type of key to create. For valid values, see JsonWebKeyType. Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct' + * @param keySize The key size in bits. For example: 2048, 3072, or 4096 for RSA. + * @param keyOps the List<JsonWebKeyOperation> value + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @param curve Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible values include: 'P-256', 'P-384', 'P-521', 'P-256K' + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, JsonWebKeyCurveName curve) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (kty == null) { + throw new IllegalArgumentException("Parameter kty is required and cannot be null."); + } + Validator.validate(keyOps); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyCreateParameters parameters = new KeyCreateParameters(); + parameters.withKty(kty); + parameters.withKeySize(keySize); + parameters.withKeyOps(keyOps); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + parameters.withCurve(curve); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse createKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).toBlocking().single().body(); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @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 importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key), serviceCallback); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (key == null) { + throw new IllegalArgumentException("Parameter key is required and cannot be null."); + } + Validator.validate(key); + final Boolean hsm = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + KeyImportParameters parameters = new KeyImportParameters(); + parameters.withHsm(null); + parameters.withKey(key); + parameters.withKeyAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle importKey(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).toBlocking().single().body(); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags), serviceCallback); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable importKeyAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + return importKeyWithServiceResponseAsync(vaultBaseUrl, keyName, key, hsm, keyAttributes, tags).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. + * The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. This operation requires the keys/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName Name for the imported key. + * @param key The Json web key + * @param hsm Whether to import as a hardware key (HSM) or software key. + * @param keyAttributes The key management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> importKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKey key, Boolean hsm, KeyAttributes keyAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (key == null) { + throw new IllegalArgumentException("Parameter key is required and cannot be null."); + } + Validator.validate(key); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyImportParameters parameters = new KeyImportParameters(); + parameters.withHsm(hsm); + parameters.withKey(key); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importKey(keyName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse importKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedKeyBundle object if successful. + */ + public DeletedKeyBundle deleteKey(String vaultBaseUrl, String keyName) { + return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @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 deleteKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + public Observable deleteKeyAsync(String vaultBaseUrl, String keyName) { + return deleteKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, DeletedKeyBundle>() { + @Override + public DeletedKeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a key of any type from storage in Azure Key Vault. + * The delete key operation cannot be used to remove individual versions of a key. This operation removes the cryptographic material associated with the key, which means the key is not usable for Sign/Verify, Wrap/Unwrap or Encrypt/Decrypt operations. This operation requires the keys/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to delete. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + public Observable> deleteKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @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 updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final List keyOps = null; + final KeyAttributes keyAttributes = null; + final Map tags = null; + KeyUpdateParameters parameters = new KeyUpdateParameters(); + parameters.withKeyOps(null); + parameters.withKeyAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle updateKey(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).toBlocking().single().body(); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @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 updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags), serviceCallback); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable updateKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + return updateKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, keyOps, keyAttributes, tags).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. + * In order to perform this operation, the key must already exist in the Key Vault. Note: The cryptographic material of a key itself cannot be changed. This operation requires the keys/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of key to update. + * @param keyVersion The version of the key to update. + * @param keyOps Json web key operations. For more information on possible key operations, see JsonWebKeyOperation. + * @param keyAttributes the KeyAttributes value + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> updateKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, List keyOps, KeyAttributes keyAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(keyOps); + Validator.validate(keyAttributes); + Validator.validate(tags); + KeyUpdateParameters parameters = new KeyUpdateParameters(); + parameters.withKeyOps(keyOps); + parameters.withKeyAttributes(keyAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle getKey(String vaultBaseUrl, String keyName, String keyVersion) { + return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).toBlocking().single().body(); + } + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @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 getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion), serviceCallback); + } + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable getKeyAsync(String vaultBaseUrl, String keyName, String keyVersion) { + return getKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the public part of a stored key. + * The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key to get. + * @param keyVersion Adding the version parameter retrieves a specific version of a key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> getKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName) { + ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @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> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName) { + return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName) { + return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName) + .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + ServiceResponse> response = getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + return getKeyVersionsWithServiceResponseAsync(vaultBaseUrl, keyName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeyVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + return getKeyVersionsSinglePageAsync(vaultBaseUrl, keyName, maxresults) + .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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsSinglePageAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeyVersions(keyName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeyVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeys(final String vaultBaseUrl) { + ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeysAsync(final String vaultBaseUrl) { + return getKeysWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl) { + return getKeysSinglePageAsync(vaultBaseUrl) + .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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeys(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable> getKeysAsync(final String vaultBaseUrl, final Integer maxresults) { + return getKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<KeyItem> object + */ + public Observable>> getKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getKeysSinglePageAsync(vaultBaseUrl, maxresults) + .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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupKeyResult object if successful. + */ + public BackupKeyResult backupKey(String vaultBaseUrl, String keyName) { + return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @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 backupKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupKeyResult object + */ + public Observable backupKeyAsync(String vaultBaseUrl, String keyName) { + return backupKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, BackupKeyResult>() { + @Override + public BackupKeyResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Requests that a backup of the specified key be downloaded to the client. + * The Key Backup operation exports a key from Azure Key Vault in a protected form. Note that this operation does NOT return key material in a form that can be used outside the Azure Key Vault system, the returned key material is either protected to a Azure Key Vault HSM or to Azure Key Vault itself. The intent of this operation is to allow a client to GENERATE a key in one Azure Key Vault instance, BACKUP the key, and then RESTORE it into another Azure Key Vault instance. The BACKUP operation may be used to export, in protected form, any key type from Azure Key Vault. Individual versions of a key cannot be backed up. BACKUP / RESTORE can be performed within geographical boundaries only; meaning that a BACKUP from one geographical area cannot be restored to another geographical area. For example, a backup from the US geographical area cannot be restored in an EU geographical area. This operation requires the key/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupKeyResult object + */ + public Observable> backupKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.backupKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = backupKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse backupKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle restoreKey(String vaultBaseUrl, byte[] keyBundleBackup) { + return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).toBlocking().single().body(); + } + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @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 restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup), serviceCallback); + } + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable restoreKeyAsync(String vaultBaseUrl, byte[] keyBundleBackup) { + return restoreKeyWithServiceResponseAsync(vaultBaseUrl, keyBundleBackup).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Restores a backed up key to a vault. + * Imports a previously backed up key into Azure Key Vault, restoring the key, its key identifier, attributes and access control policies. The RESTORE operation may be used to import a previously backed up key. Individual versions of a key cannot be restored. The key is restored in its entirety with the same key name as it had when it was backed up. If the key name is not available in the target Key Vault, the RESTORE operation will be rejected. While the key name is retained during restore, the final key identifier will change if the key is restored to a different vault. Restore will restore all versions and preserve version identifiers. The RESTORE operation is subject to security constraints: The target Key Vault must be owned by the same Microsoft Azure Subscription as the source Key Vault The user must have RESTORE permission in the target Key Vault. This operation requires the keys/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyBundleBackup The backup blob associated with a key bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> restoreKeyWithServiceResponseAsync(String vaultBaseUrl, byte[] keyBundleBackup) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (keyBundleBackup == null) { + throw new IllegalArgumentException("Parameter keyBundleBackup is required and cannot be null."); + } + KeyRestoreParameters parameters = new KeyRestoreParameters(); + parameters.withKeyBundleBackup(keyBundleBackup); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.restoreKey(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = restoreKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse restoreKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult encrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable encryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return encryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * The ENCRYPT operation encrypts an arbitrary sequence of bytes using an encryption key that is stored in Azure Key Vault. Note that the ENCRYPT operation only supports a single block of data, the size of which is dependent on the target key and the encryption algorithm to be used. The ENCRYPT operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/encypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable> encryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.encrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = encryptDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse encryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult decrypt(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable decryptAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return decryptWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Decrypts a single block of encrypted data. + * The DECRYPT operation decrypts a well-formed block of ciphertext using the target encryption key and specified algorithm. This operation is the reverse of the ENCRYPT operation; only a single block of data may be decrypted, the size of this block is dependent on the target key and the algorithm to be used. The DECRYPT operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/decrypt permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable> decryptWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.decrypt(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = decryptDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse decryptDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult sign(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url 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 signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable signAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + return signWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a signature from a digest using the specified key. + * The SIGN operation is applicable to asymmetric and symmetric keys stored in Azure Key Vault since this operation uses the private portion of the key. This operation requires the keys/sign permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm identifier. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable> signWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeySignParameters parameters = new KeySignParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.sign(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = signDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse signDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyVerifyResult object if successful. + */ + public KeyVerifyResult verify(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).toBlocking().single().body(); + } + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @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 verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature), serviceCallback); + } + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyVerifyResult object + */ + public Observable verifyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + return verifyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, digest, signature).map(new Func1, KeyVerifyResult>() { + @Override + public KeyVerifyResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Verifies a signature using a specified key. + * The VERIFY operation is applicable to symmetric keys stored in Azure Key Vault. VERIFY is not strictly necessary for asymmetric keys stored in Azure Key Vault since signature verification can be performed using the public portion of the key but this operation is supported as a convenience for callers that only have a key-reference and not the public portion of the key. This operation requires the keys/verify permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K' + * @param digest The digest used for signing. + * @param signature The signature to be verified. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyVerifyResult object + */ + public Observable> verifyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (digest == null) { + throw new IllegalArgumentException("Parameter digest is required and cannot be null."); + } + if (signature == null) { + throw new IllegalArgumentException("Parameter signature is required and cannot be null."); + } + KeyVerifyParameters parameters = new KeyVerifyParameters(); + parameters.withAlgorithm(algorithm); + parameters.withDigest(digest); + parameters.withSignature(signature); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.verify(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = verifyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse verifyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult wrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable wrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return wrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Wraps a symmetric key using a specified key. + * The WRAP operation supports encryption of a symmetric key using a key encryption key that has previously been stored in an Azure Key Vault. The WRAP operation is only strictly necessary for symmetric keys stored in Azure Key Vault since protection with an asymmetric key can be performed using the public portion of the key. This operation is supported for asymmetric keys as a convenience for callers that have a key-reference but do not have access to the public key material. This operation requires the keys/wrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable> wrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.wrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = wrapKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse wrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyOperationResult object if successful. + */ + public KeyOperationResult unwrapKey(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).toBlocking().single().body(); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url 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 unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value), serviceCallback); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable unwrapKeyAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + return unwrapKeyWithServiceResponseAsync(vaultBaseUrl, keyName, keyVersion, algorithm, value).map(new Func1, KeyOperationResult>() { + @Override + public KeyOperationResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Unwraps a symmetric key using the specified key that was initially used for wrapping that key. + * The UNWRAP operation supports decryption of a symmetric key using the target key encryption key. This operation is the reverse of the WRAP operation. The UNWRAP operation applies to asymmetric and symmetric keys stored in Azure Key Vault since it uses the private portion of the key. This operation requires the keys/unwrapKey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @param keyVersion The version of the key. + * @param algorithm algorithm identifier. Possible values include: 'RSA-OAEP', 'RSA-OAEP-256', 'RSA1_5' + * @param value the Base64Url value + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyOperationResult object + */ + public Observable> unwrapKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, String keyVersion, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (keyVersion == null) { + throw new IllegalArgumentException("Parameter keyVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (algorithm == null) { + throw new IllegalArgumentException("Parameter algorithm is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + KeyOperationsParameters parameters = new KeyOperationsParameters(); + parameters.withAlgorithm(algorithm); + parameters.withValue(value); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.unwrapKey(keyName, keyVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = unwrapKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse unwrapKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + public PagedList getDeletedKeys(final String vaultBaseUrl) { + ServiceResponse> response = getDeletedKeysSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getDeletedKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedKeysSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + public Observable> getDeletedKeysAsync(final String vaultBaseUrl) { + return getDeletedKeysWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + public Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl) { + return getDeletedKeysSinglePageAsync(vaultBaseUrl) + .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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedKeysSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + public PagedList getDeletedKeys(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + public Observable> getDeletedKeysAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedKeysWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedKeyItem> object + */ + public Observable>> getDeletedKeysWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedKeysSinglePageAsync(vaultBaseUrl, maxresults) + .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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedKeysSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedKeys(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedKeysDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedKeysDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedKeyBundle object if successful. + */ + public DeletedKeyBundle getDeletedKey(String vaultBaseUrl, String keyName) { + return getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @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 getDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + public Observable getDeletedKeyAsync(String vaultBaseUrl, String keyName) { + return getDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, DeletedKeyBundle>() { + @Override + public DeletedKeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the public part of a deleted key. + * The Get Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedKeyBundle object + */ + public Observable> getDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getDeletedKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + public void purgeDeletedKey(String vaultBaseUrl, String keyName) { + purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @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 purgeDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable purgeDeletedKeyAsync(String vaultBaseUrl, String keyName) { + return purgeDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, Void>() { + @Override + public Void call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Permanently deletes the specified key. + * The Purge Deleted Key operation is applicable for soft-delete enabled vaults. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the key + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable> purgeDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.purgeDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = purgeDeletedKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse purgeDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(204, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the KeyBundle object if successful. + */ + public KeyBundle recoverDeletedKey(String vaultBaseUrl, String keyName) { + return recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).toBlocking().single().body(); + } + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @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 recoverDeletedKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName), serviceCallback); + } + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable recoverDeletedKeyAsync(String vaultBaseUrl, String keyName) { + return recoverDeletedKeyWithServiceResponseAsync(vaultBaseUrl, keyName).map(new Func1, KeyBundle>() { + @Override + public KeyBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Recovers the deleted key to its latest version. + * The Recover Deleted Key operation is applicable for deleted keys in soft-delete enabled vaults. It recovers the deleted key back to its latest version under /keys. An attempt to recover an non-deleted key will return an error. Consider this the inverse of the delete operation on soft-delete enabled vaults. This operation requires the keys/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param keyName The name of the deleted key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the KeyBundle object + */ + public Observable> recoverDeletedKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.recoverDeletedKey(keyName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = recoverDeletedKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse recoverDeletedKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).toBlocking().single().body(); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @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 setSecretAsync(String vaultBaseUrl, String secretName, String value, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value), serviceCallback); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + final Map tags = null; + final String contentType = null; + final SecretAttributes secretAttributes = null; + SecretSetParameters parameters = new SecretSetParameters(); + parameters.withValue(value); + parameters.withTags(null); + parameters.withContentType(null); + parameters.withSecretAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle setSecret(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).toBlocking().single().body(); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @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 setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes), serviceCallback); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable setSecretAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + return setSecretWithServiceResponseAsync(vaultBaseUrl, secretName, value, tags, contentType, secretAttributes).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets a secret in a specified key vault. + * The SET operation adds a secret to the Azure Key Vault. If the named secret already exists, Azure Key Vault creates a new version of that secret. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param value The value of the secret. + * @param tags Application specific metadata in the form of key-value pairs. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> setSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String value, Map tags, String contentType, SecretAttributes secretAttributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (value == null) { + throw new IllegalArgumentException("Parameter value is required and cannot be null."); + } + Validator.validate(tags); + Validator.validate(secretAttributes); + SecretSetParameters parameters = new SecretSetParameters(); + parameters.withValue(value); + parameters.withTags(tags); + parameters.withContentType(contentType); + parameters.withSecretAttributes(secretAttributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSecretBundle object if successful. + */ + public DeletedSecretBundle deleteSecret(String vaultBaseUrl, String secretName) { + return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @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 deleteSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + public Observable deleteSecretAsync(String vaultBaseUrl, String secretName) { + return deleteSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, DeletedSecretBundle>() { + @Override + public DeletedSecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a secret from a specified key vault. + * The DELETE operation applies to any secret stored in Azure Key Vault. DELETE cannot be applied to an individual version of a secret. This operation requires the secrets/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + public Observable> deleteSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @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 updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String contentType = null; + final SecretAttributes secretAttributes = null; + final Map tags = null; + SecretUpdateParameters parameters = new SecretUpdateParameters(); + parameters.withContentType(null); + parameters.withSecretAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle updateSecret(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags), serviceCallback); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable updateSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + return updateSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion, contentType, secretAttributes, tags).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * The UPDATE operation changes specified attributes of an existing stored secret. Attributes that are not specified in the request are left unchanged. The value of a secret itself cannot be changed. This operation requires the secrets/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @param contentType Type of the secret value such as a password. + * @param secretAttributes The secret management attributes. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> updateSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion, String contentType, SecretAttributes secretAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(secretAttributes); + Validator.validate(tags); + SecretUpdateParameters parameters = new SecretUpdateParameters(); + parameters.withContentType(contentType); + parameters.withSecretAttributes(secretAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle getSecret(String vaultBaseUrl, String secretName, String secretVersion) { + return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).toBlocking().single().body(); + } + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @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 getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion), serviceCallback); + } + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable getSecretAsync(String vaultBaseUrl, String secretName, String secretVersion) { + return getSecretWithServiceResponseAsync(vaultBaseUrl, secretName, secretVersion).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Get a specified secret from a given key vault. + * The GET operation is applicable to any secret stored in Azure Key Vault. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param secretVersion The version of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> getSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName, String secretVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (secretVersion == null) { + throw new IllegalArgumentException("Parameter secretVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecret(secretName, secretVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecrets(final String vaultBaseUrl) { + ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretsAsync(final String vaultBaseUrl) { + return getSecretsWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl) { + return getSecretsSinglePageAsync(vaultBaseUrl) + .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecrets(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @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> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { + return getSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getSecretsSinglePageAsync(vaultBaseUrl, maxresults) + .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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName) { + ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @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> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName) { + return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName) { + return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName) + .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + ServiceResponse> response = getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @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> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable> getSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + return getSecretVersionsWithServiceResponseAsync(vaultBaseUrl, secretName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SecretItem> object + */ + public Observable>> getSecretVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + return getSecretVersionsSinglePageAsync(vaultBaseUrl, secretName, maxresults) + .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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @param maxresults Maximum number of results to return in a page. If not specified, the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsSinglePageAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSecretVersions(secretName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + public PagedList getDeletedSecrets(final String vaultBaseUrl) { + ServiceResponse> response = getDeletedSecretsSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getDeletedSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSecretsSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + public Observable> getDeletedSecretsAsync(final String vaultBaseUrl) { + return getDeletedSecretsWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + public Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl) { + return getDeletedSecretsSinglePageAsync(vaultBaseUrl) + .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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSecretsSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + public PagedList getDeletedSecrets(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + public Observable> getDeletedSecretsAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedSecretsWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSecretItem> object + */ + public Observable>> getDeletedSecretsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedSecretsSinglePageAsync(vaultBaseUrl, maxresults) + .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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSecretsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSecrets(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSecretsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedSecretsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSecretBundle object if successful. + */ + public DeletedSecretBundle getDeletedSecret(String vaultBaseUrl, String secretName) { + return getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @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 getDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + public Observable getDeletedSecretAsync(String vaultBaseUrl, String secretName) { + return getDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, DeletedSecretBundle>() { + @Override + public DeletedSecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the specified deleted secret. + * The Get Deleted Secret operation returns the specified deleted secret along with its attributes. This operation requires the secrets/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSecretBundle object + */ + public Observable> getDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getDeletedSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + public void purgeDeletedSecret(String vaultBaseUrl, String secretName) { + purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @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 purgeDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable purgeDeletedSecretAsync(String vaultBaseUrl, String secretName) { + return purgeDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, Void>() { + @Override + public Void call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Permanently deletes the specified secret. + * The purge deleted secret operation removes the secret permanently, without the possibility of recovery. This operation can only be enabled on a soft-delete enabled vault. This operation requires the secrets/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable> purgeDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.purgeDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = purgeDeletedSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse purgeDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(204, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle recoverDeletedSecret(String vaultBaseUrl, String secretName) { + return recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @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 recoverDeletedSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable recoverDeletedSecretAsync(String vaultBaseUrl, String secretName) { + return recoverDeletedSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Recovers the deleted secret to the latest version. + * Recovers the deleted secret in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the secrets/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the deleted secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> recoverDeletedSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.recoverDeletedSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = recoverDeletedSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse recoverDeletedSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupSecretResult object if successful. + */ + public BackupSecretResult backupSecret(String vaultBaseUrl, String secretName) { + return backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName).toBlocking().single().body(); + } + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @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 backupSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName), serviceCallback); + } + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupSecretResult object + */ + public Observable backupSecretAsync(String vaultBaseUrl, String secretName) { + return backupSecretWithServiceResponseAsync(vaultBaseUrl, secretName).map(new Func1, BackupSecretResult>() { + @Override + public BackupSecretResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Backs up the specified secret. + * Requests that a backup of the specified secret be downloaded to the client. All versions of the secret will be downloaded. This operation requires the secrets/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretName The name of the secret. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupSecretResult object + */ + public Observable> backupSecretWithServiceResponseAsync(String vaultBaseUrl, String secretName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (secretName == null) { + throw new IllegalArgumentException("Parameter secretName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.backupSecret(secretName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = backupSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse backupSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SecretBundle object if successful. + */ + public SecretBundle restoreSecret(String vaultBaseUrl, byte[] secretBundleBackup) { + return restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup).toBlocking().single().body(); + } + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @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 restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup), serviceCallback); + } + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable restoreSecretAsync(String vaultBaseUrl, byte[] secretBundleBackup) { + return restoreSecretWithServiceResponseAsync(vaultBaseUrl, secretBundleBackup).map(new Func1, SecretBundle>() { + @Override + public SecretBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Restores a backed up secret to a vault. + * Restores a backed up secret, and all its versions, to a vault. This operation requires the secrets/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param secretBundleBackup The backup blob associated with a secret bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SecretBundle object + */ + public Observable> restoreSecretWithServiceResponseAsync(String vaultBaseUrl, byte[] secretBundleBackup) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (secretBundleBackup == null) { + throw new IllegalArgumentException("Parameter secretBundleBackup is required and cannot be null."); + } + SecretRestoreParameters parameters = new SecretRestoreParameters(); + parameters.withSecretBundleBackup(secretBundleBackup); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.restoreSecret(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = restoreSecretDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse restoreSecretDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificates(final String vaultBaseUrl) { + ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificatesAsync(final String vaultBaseUrl) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { + return getCertificatesSinglePageAsync(vaultBaseUrl) + .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + final Boolean includePending = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + ServiceResponse> response = getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @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> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, includePending) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + return getCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending) + .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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedCertificateBundle object if successful. + */ + public DeletedCertificateBundle deleteCertificate(String vaultBaseUrl, String certificateName) { + return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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 deleteCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + public Observable deleteCertificateAsync(String vaultBaseUrl, String certificateName) { + return deleteCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, DeletedCertificateBundle>() { + @Override + public DeletedCertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a certificate from a specified key vault. + * Deletes all versions of a certificate object along with its associated policy. Delete certificate cannot be used to remove individual versions of a certificate object. This operation requires the certificates/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + public Observable> deleteCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + public Contacts setCertificateContacts(String vaultBaseUrl, Contacts contacts) { + return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).toBlocking().single().body(); + } + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @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 setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts), serviceCallback); + } + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable setCertificateContactsAsync(String vaultBaseUrl, Contacts contacts) { + return setCertificateContactsWithServiceResponseAsync(vaultBaseUrl, contacts).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the certificate contacts for the specified key vault. + * Sets the certificate contacts for the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param contacts The contacts for the key vault certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable> setCertificateContactsWithServiceResponseAsync(String vaultBaseUrl, Contacts contacts) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (contacts == null) { + throw new IllegalArgumentException("Parameter contacts is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(contacts); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateContacts(contacts, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + public Contacts getCertificateContacts(String vaultBaseUrl) { + return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); + } + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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 getCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); + } + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable getCertificateContactsAsync(String vaultBaseUrl) { + return getCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the certificate contacts for a specified key vault. + * The GetCertificateContacts operation returns the set of certificate contact resources in the specified key vault. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable> getCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the Contacts object if successful. + */ + public Contacts deleteCertificateContacts(String vaultBaseUrl) { + return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).toBlocking().single().body(); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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 deleteCertificateContactsAsync(String vaultBaseUrl, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl), serviceCallback); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable deleteCertificateContactsAsync(String vaultBaseUrl) { + return deleteCertificateContactsWithServiceResponseAsync(vaultBaseUrl).map(new Func1, Contacts>() { + @Override + public Contacts call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the certificate contacts for a specified key vault. + * Deletes the certificate contacts for a specified key vault certificate. This operation requires the certificates/managecontacts permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the Contacts object + */ + public Observable> deleteCertificateContactsWithServiceResponseAsync(String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateContacts(this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateContactsDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateContactsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuers(final String vaultBaseUrl) { + ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersAsync(final String vaultBaseUrl) { + return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl) { + return getCertificateIssuersSinglePageAsync(vaultBaseUrl) + .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificateIssuersWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getCertificateIssuersSinglePageAsync(vaultBaseUrl, maxresults) + .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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuers(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateIssuersDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).toBlocking().single().body(); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @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 setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider), serviceCallback); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (provider == null) { + throw new IllegalArgumentException("Parameter provider is required and cannot be null."); + } + final IssuerCredentials credentials = null; + final OrganizationDetails organizationDetails = null; + final IssuerAttributes attributes = null; + CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); + parameter.withProvider(provider); + parameter.withCredentials(null); + parameter.withOrganizationDetails(null); + parameter.withAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle setCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @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 setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable setCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return setCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Sets the specified certificate issuer. + * The SetCertificateIssuer operation adds or updates the specified certificate issuer. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> setCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (provider == null) { + throw new IllegalArgumentException("Parameter provider is required and cannot be null."); + } + Validator.validate(credentials); + Validator.validate(organizationDetails); + Validator.validate(attributes); + CertificateIssuerSetParameters parameter = new CertificateIssuerSetParameters(); + parameter.withProvider(provider); + parameter.withCredentials(credentials); + parameter.withOrganizationDetails(organizationDetails); + parameter.withAttributes(attributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @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 updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String provider = null; + final IssuerCredentials credentials = null; + final OrganizationDetails organizationDetails = null; + final IssuerAttributes attributes = null; + CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); + parameter.withProvider(null); + parameter.withCredentials(null); + parameter.withOrganizationDetails(null); + parameter.withAttributes(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle updateCertificateIssuer(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).toBlocking().single().body(); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @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 updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes), serviceCallback); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable updateCertificateIssuerAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + return updateCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName, provider, credentials, organizationDetails, attributes).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified certificate issuer. + * The UpdateCertificateIssuer operation performs an update on the specified certificate issuer entity. This operation requires the certificates/setissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @param provider The issuer provider. + * @param credentials The credentials to be used for the issuer. + * @param organizationDetails Details of the organization as provided to the issuer. + * @param attributes Attributes of the issuer object. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> updateCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName, String provider, IssuerCredentials credentials, OrganizationDetails organizationDetails, IssuerAttributes attributes) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(credentials); + Validator.validate(organizationDetails); + Validator.validate(attributes); + CertificateIssuerUpdateParameters parameter = new CertificateIssuerUpdateParameters(); + parameter.withProvider(provider); + parameter.withCredentials(credentials); + parameter.withOrganizationDetails(organizationDetails); + parameter.withAttributes(attributes); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameter, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle getCertificateIssuer(String vaultBaseUrl, String issuerName) { + return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @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 getCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable getCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return getCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the specified certificate issuer. + * The GetCertificateIssuer operation returns the specified certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> getCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the IssuerBundle object if successful. + */ + public IssuerBundle deleteCertificateIssuer(String vaultBaseUrl, String issuerName) { + return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).toBlocking().single().body(); + } + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @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 deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName), serviceCallback); + } + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable deleteCertificateIssuerAsync(String vaultBaseUrl, String issuerName) { + return deleteCertificateIssuerWithServiceResponseAsync(vaultBaseUrl, issuerName).map(new Func1, IssuerBundle>() { + @Override + public IssuerBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the specified certificate issuer. + * The DeleteCertificateIssuer operation permanently removes the specified certificate issuer from the vault. This operation requires the certificates/manageissuers/deleteissuers permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param issuerName The name of the issuer. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the IssuerBundle object + */ + public Observable> deleteCertificateIssuerWithServiceResponseAsync(String vaultBaseUrl, String issuerName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (issuerName == null) { + throw new IllegalArgumentException("Parameter issuerName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateIssuer(issuerName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateIssuerDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateIssuerDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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 createCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable createCertificateAsync(String vaultBaseUrl, String certificateName) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateCreateParameters parameters = new CertificateCreateParameters(); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + public CertificateOperation createCertificate(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @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 createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable createCertificateAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return createCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates a new certificate. + * If this is the first version, the certificate resource is created. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable> createCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateCreateParameters parameters = new CertificateCreateParameters(); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.createCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = createCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse createCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(202, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).toBlocking().single().body(); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @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 importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate), serviceCallback); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (base64EncodedCertificate == null) { + throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); + } + final String password = null; + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateImportParameters parameters = new CertificateImportParameters(); + parameters.withBase64EncodedCertificate(base64EncodedCertificate); + parameters.withPassword(null); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle importCertificate(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @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 importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable importCertificateAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return importCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, base64EncodedCertificate, password, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Imports a certificate into a specified key vault. + * Imports an existing valid certificate, containing a private key, into Azure Key Vault. The certificate to be imported can be in either PFX or PEM format. If the certificate is in PEM format the PEM file must contain the key as well as x509 certificates. This operation requires the certificates/import permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param base64EncodedCertificate Base64 encoded representation of the certificate object to import. This certificate needs to contain the private key. + * @param password If the private key in base64EncodedCertificate is encrypted, the password used for encryption. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> importCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String base64EncodedCertificate, String password, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (base64EncodedCertificate == null) { + throw new IllegalArgumentException("Parameter base64EncodedCertificate is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateImportParameters parameters = new CertificateImportParameters(); + parameters.withBase64EncodedCertificate(base64EncodedCertificate); + parameters.withPassword(password); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.importCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = importCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse importCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName) { + ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName) { + return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName) { + return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName) + .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + ServiceResponse> response = getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable> getCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + return getCertificateVersionsWithServiceResponseAsync(vaultBaseUrl, certificateName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<CertificateItem> object + */ + public Observable>> getCertificateVersionsWithServiceResponseAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + return getCertificateVersionsSinglePageAsync(vaultBaseUrl, certificateName, maxresults) + .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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsSinglePageAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateVersions(certificateName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateVersionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificatePolicy object if successful. + */ + public CertificatePolicy getCertificatePolicy(String vaultBaseUrl, String certificateName) { + return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @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 getCertificatePolicyAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + public Observable getCertificatePolicyAsync(String vaultBaseUrl, String certificateName) { + return getCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificatePolicy>() { + @Override + public CertificatePolicy call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Lists the policy for a certificate. + * The GetCertificatePolicy operation returns the specified certificate policy resources in the specified key vault. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in a given key vault. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + public Observable> getCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificatePolicy(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificatePolicyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificatePolicy object if successful. + */ + public CertificatePolicy updateCertificatePolicy(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).toBlocking().single().body(); + } + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @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 updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy), serviceCallback); + } + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + public Observable updateCertificatePolicyAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + return updateCertificatePolicyWithServiceResponseAsync(vaultBaseUrl, certificateName, certificatePolicy).map(new Func1, CertificatePolicy>() { + @Override + public CertificatePolicy call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the policy for a certificate. + * Set specified members in the certificate policy. Leave others as null. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificatePolicy The policy for the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificatePolicy object + */ + public Observable> updateCertificatePolicyWithServiceResponseAsync(String vaultBaseUrl, String certificateName, CertificatePolicy certificatePolicy) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificatePolicy == null) { + throw new IllegalArgumentException("Parameter certificatePolicy is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificatePolicy(certificateName, certificatePolicy, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificatePolicyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificatePolicyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @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 updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final CertificatePolicy certificatePolicy = null; + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateUpdateParameters parameters = new CertificateUpdateParameters(); + parameters.withCertificatePolicy(null); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle updateCertificate(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @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 updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable updateCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + return updateCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion, certificatePolicy, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given certificate. + * The UpdateCertificate operation applies the specified update on the given certificate; the only elements updated are the certificate's attributes. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given key vault. + * @param certificateVersion The version of the certificate. + * @param certificatePolicy The management policy for the certificate. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> updateCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion, CertificatePolicy certificatePolicy, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(certificatePolicy); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateUpdateParameters parameters = new CertificateUpdateParameters(); + parameters.withCertificatePolicy(certificatePolicy); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName, String certificateVersion) { + return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).toBlocking().single().body(); + } + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @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 getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion), serviceCallback); + } + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable getCertificateAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + return getCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, certificateVersion).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets information about a certificate. + * Gets information about a specific certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate in the given vault. + * @param certificateVersion The version of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> getCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, String certificateVersion) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (certificateVersion == null) { + throw new IllegalArgumentException("Parameter certificateVersion is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificate(certificateName, certificateVersion, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + public CertificateOperation updateCertificateOperation(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).toBlocking().single().body(); + } + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @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 updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested), serviceCallback); + } + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable updateCertificateOperationAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + return updateCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName, cancellationRequested).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates a certificate operation. + * Updates a certificate creation operation that is already in progress. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param cancellationRequested Indicates if cancellation was requested on the certificate operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable> updateCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName, boolean cancellationRequested) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + CertificateOperationUpdateParameter certificateOperation = new CertificateOperationUpdateParameter(); + certificateOperation.withCancellationRequested(cancellationRequested); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), certificateOperation, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + public CertificateOperation getCertificateOperation(String vaultBaseUrl, String certificateName) { + return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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 getCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable getCertificateOperationAsync(String vaultBaseUrl, String certificateName) { + return getCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the creation operation of a certificate. + * Gets the creation operation associated with a specified certificate. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable> getCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateOperation object if successful. + */ + public CertificateOperation deleteCertificateOperation(String vaultBaseUrl, String certificateName) { + return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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 deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable deleteCertificateOperationAsync(String vaultBaseUrl, String certificateName) { + return deleteCertificateOperationWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateOperation>() { + @Override + public CertificateOperation call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes the creation operation for a specific certificate. + * Deletes the creation operation for a specified certificate that is in the process of being created. The certificate is no longer created. This operation requires the certificates/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateOperation object + */ + public Observable> deleteCertificateOperationWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteCertificateOperation(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteCertificateOperationDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteCertificateOperationDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).toBlocking().single().body(); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @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 mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates), serviceCallback); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (x509Certificates == null) { + throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); + } + Validator.validate(x509Certificates); + final CertificateAttributes certificateAttributes = null; + final Map tags = null; + CertificateMergeParameters parameters = new CertificateMergeParameters(); + parameters.withX509Certificates(x509Certificates); + parameters.withCertificateAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = mergeCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle mergeCertificate(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).toBlocking().single().body(); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @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 mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags), serviceCallback); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable mergeCertificateAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + return mergeCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName, x509Certificates, certificateAttributes, tags).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * The MergeCertificate operation performs the merging of a certificate or certificate chain with a key pair currently available in the service. This operation requires the certificates/create permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @param x509Certificates The certificate or the certificate chain to merge. + * @param certificateAttributes The attributes of the certificate (optional). + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> mergeCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName, List x509Certificates, CertificateAttributes certificateAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (x509Certificates == null) { + throw new IllegalArgumentException("Parameter x509Certificates is required and cannot be null."); + } + Validator.validate(x509Certificates); + Validator.validate(certificateAttributes); + Validator.validate(tags); + CertificateMergeParameters parameters = new CertificateMergeParameters(); + parameters.withX509Certificates(x509Certificates); + parameters.withCertificateAttributes(certificateAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.mergeCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = mergeCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse mergeCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(201, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupCertificateResult object if successful. + */ + public BackupCertificateResult backupCertificate(String vaultBaseUrl, String certificateName) { + return backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @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 backupCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupCertificateResult object + */ + public Observable backupCertificateAsync(String vaultBaseUrl, String certificateName) { + return backupCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, BackupCertificateResult>() { + @Override + public BackupCertificateResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Backs up the specified certificate. + * Requests that a backup of the specified certificate be downloaded to the client. All versions of the certificate will be downloaded. This operation requires the certificates/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupCertificateResult object + */ + public Observable> backupCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.backupCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = backupCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse backupCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle restoreCertificate(String vaultBaseUrl, byte[] certificateBundleBackup) { + return restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup).toBlocking().single().body(); + } + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @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 restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup), serviceCallback); + } + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable restoreCertificateAsync(String vaultBaseUrl, byte[] certificateBundleBackup) { + return restoreCertificateWithServiceResponseAsync(vaultBaseUrl, certificateBundleBackup).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Restores a backed up certificate to a vault. + * Restores a backed up certificate, and all its versions, to a vault. This operation requires the certificates/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateBundleBackup The backup blob associated with a certificate bundle. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> restoreCertificateWithServiceResponseAsync(String vaultBaseUrl, byte[] certificateBundleBackup) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (certificateBundleBackup == null) { + throw new IllegalArgumentException("Parameter certificateBundleBackup is required and cannot be null."); + } + CertificateRestoreParameters parameters = new CertificateRestoreParameters(); + parameters.withCertificateBundleBackup(certificateBundleBackup); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.restoreCertificate(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = restoreCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse restoreCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + public PagedList getDeletedCertificates(final String vaultBaseUrl) { + ServiceResponse> response = getDeletedCertificatesSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getDeletedCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedCertificatesSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + public Observable> getDeletedCertificatesAsync(final String vaultBaseUrl) { + return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + public Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl) { + return getDeletedCertificatesSinglePageAsync(vaultBaseUrl) + .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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedCertificatesSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + final Boolean includePending = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + public PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + ServiceResponse> response = getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @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> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + public Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, includePending) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedCertificateItem> object + */ + public Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + return getDeletedCertificatesSinglePageAsync(vaultBaseUrl, maxresults, includePending) + .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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param includePending Specifies whether to include certificates which are not completely provisioned. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedCertificatesSinglePageAsync(final String vaultBaseUrl, final Integer maxresults, final Boolean includePending) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedCertificates(maxresults, includePending, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedCertificatesDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedCertificatesDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedCertificateBundle object if successful. + */ + public DeletedCertificateBundle getDeletedCertificate(String vaultBaseUrl, String certificateName) { + return getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @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 getDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + public Observable getDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { + return getDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, DeletedCertificateBundle>() { + @Override + public DeletedCertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Retrieves information about the specified deleted certificate. + * The GetDeletedCertificate operation retrieves the deleted certificate information plus its attributes, such as retention interval, scheduled permanent deletion and the current deletion recovery level. This operation requires the certificates/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedCertificateBundle object + */ + public Observable> getDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getDeletedCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + public void purgeDeletedCertificate(String vaultBaseUrl, String certificateName) { + purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @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 purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable purgeDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { + return purgeDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, Void>() { + @Override + public Void call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Permanently deletes the specified deleted certificate. + * The PurgeDeletedCertificate operation performs an irreversible deletion of the specified certificate, without possibility for recovery. The operation is not available if the recovery level does not specify 'Purgeable'. This operation requires the certificate/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable> purgeDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.purgeDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = purgeDeletedCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse purgeDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(204, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the CertificateBundle object if successful. + */ + public CertificateBundle recoverDeletedCertificate(String vaultBaseUrl, String certificateName) { + return recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @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 recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable recoverDeletedCertificateAsync(String vaultBaseUrl, String certificateName) { + return recoverDeletedCertificateWithServiceResponseAsync(vaultBaseUrl, certificateName).map(new Func1, CertificateBundle>() { + @Override + public CertificateBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Recovers the deleted certificate back to its current version under /certificates. + * The RecoverDeletedCertificate operation performs the reversal of the Delete operation. The operation is applicable in vaults enabled for soft-delete, and must be issued during the retention interval (available in the deleted certificate's attributes). This operation requires the certificates/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param certificateName The name of the deleted certificate + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the CertificateBundle object + */ + public Observable> recoverDeletedCertificateWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.recoverDeletedCertificate(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = recoverDeletedCertificateDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse recoverDeletedCertificateDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + public PagedList getStorageAccounts(final String vaultBaseUrl) { + ServiceResponse> response = getStorageAccountsSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getStorageAccountsSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + public Observable> getStorageAccountsAsync(final String vaultBaseUrl) { + return getStorageAccountsWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + public Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl) { + return getStorageAccountsSinglePageAsync(vaultBaseUrl) + .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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getStorageAccountsSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getStorageAccountsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + public PagedList getStorageAccounts(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + public Observable> getStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults) { + return getStorageAccountsWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<StorageAccountItem> object + */ + public Observable>> getStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults) + .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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getStorageAccountsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getStorageAccountsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getStorageAccountsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + public PagedList getDeletedStorageAccounts(final String vaultBaseUrl) { + ServiceResponse> response = getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @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> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + public Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl) { + return getDeletedStorageAccountsWithServiceResponseAsync(vaultBaseUrl) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + public Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl) { + return getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl) + .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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedStorageAccountsSinglePageAsync(final String vaultBaseUrl) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedStorageAccountsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + public PagedList getDeletedStorageAccounts(final String vaultBaseUrl, final Integer maxresults) { + ServiceResponse> response = getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + public Observable> getDeletedStorageAccountsAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedStorageAccountsWithServiceResponseAsync(vaultBaseUrl, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedStorageAccountItem> object + */ + public Observable>> getDeletedStorageAccountsWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults) { + return getDeletedStorageAccountsSinglePageAsync(vaultBaseUrl, maxresults) + .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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedStorageAccountsSinglePageAsync(final String vaultBaseUrl, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedStorageAccounts(maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedStorageAccountsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedStorageAccountsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedStorageBundle object if successful. + */ + public DeletedStorageBundle getDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { + return getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + public Observable getDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return getDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, DeletedStorageBundle>() { + @Override + public DeletedStorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the specified deleted storage account. + * The Get Deleted Storage Account operation returns the specified deleted storage account along with its attributes. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + public Observable> getDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getDeletedStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + */ + public void purgeDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { + purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable purgeDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return purgeDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, Void>() { + @Override + public Void call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Permanently deletes the specified storage account. + * The purge deleted storage account operation removes the secret permanently, without the possibility of recovery. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/purge permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the {@link ServiceResponse} object if successful. + */ + public Observable> purgeDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.purgeDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = purgeDeletedStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse purgeDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(204, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle recoverDeletedStorageAccount(String vaultBaseUrl, String storageAccountName) { + return recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable recoverDeletedStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return recoverDeletedStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Recovers the deleted storage account. + * Recovers the deleted storage account in the specified vault. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> recoverDeletedStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.recoverDeletedStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = recoverDeletedStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse recoverDeletedStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the BackupStorageResult object if successful. + */ + public BackupStorageResult backupStorageAccount(String vaultBaseUrl, String storageAccountName) { + return backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupStorageResult object + */ + public Observable backupStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return backupStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, BackupStorageResult>() { + @Override + public BackupStorageResult call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Backs up the specified storage account. + * Requests that a backup of the specified storage account be downloaded to the client. This operation requires the storage/backup permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the BackupStorageResult object + */ + public Observable> backupStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.backupStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = backupStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse backupStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle restoreStorageAccount(String vaultBaseUrl, byte[] storageBundleBackup) { + return restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup).toBlocking().single().body(); + } + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @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 restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup), serviceCallback); + } + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable restoreStorageAccountAsync(String vaultBaseUrl, byte[] storageBundleBackup) { + return restoreStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageBundleBackup).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Restores a backed up storage account to a vault. + * Restores a backed up storage account to a vault. This operation requires the storage/restore permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageBundleBackup The backup blob associated with a storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> restoreStorageAccountWithServiceResponseAsync(String vaultBaseUrl, byte[] storageBundleBackup) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (storageBundleBackup == null) { + throw new IllegalArgumentException("Parameter storageBundleBackup is required and cannot be null."); + } + StorageRestoreParameters parameters = new StorageRestoreParameters(); + parameters.withStorageBundleBackup(storageBundleBackup); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.restoreStorageAccount(this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = restoreStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse restoreStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedStorageBundle object if successful. + */ + public DeletedStorageBundle deleteStorageAccount(String vaultBaseUrl, String storageAccountName) { + return deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + public Observable deleteStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return deleteStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, DeletedStorageBundle>() { + @Override + public DeletedStorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a storage account. This operation requires the storage/delete permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedStorageBundle object + */ + public Observable> deleteStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle getStorageAccount(String vaultBaseUrl, String storageAccountName) { + return getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 getStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable getStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return getStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets information about a specified storage account. This operation requires the storage/get permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> getStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { + return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey).toBlocking().single().body(); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @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 setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey), serviceCallback); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { + return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (resourceId == null) { + throw new IllegalArgumentException("Parameter resourceId is required and cannot be null."); + } + if (activeKeyName == null) { + throw new IllegalArgumentException("Parameter activeKeyName is required and cannot be null."); + } + final String regenerationPeriod = null; + final StorageAccountAttributes storageAccountAttributes = null; + final Map tags = null; + StorageAccountCreateParameters parameters = new StorageAccountCreateParameters(); + parameters.withResourceId(resourceId); + parameters.withActiveKeyName(activeKeyName); + parameters.withAutoRegenerateKey(autoRegenerateKey); + parameters.withRegenerationPeriod(null); + parameters.withStorageAccountAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle setStorageAccount(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).toBlocking().single().body(); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags), serviceCallback); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable setStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + return setStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, resourceId, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates or updates a new storage account. This operation requires the storage/set permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param resourceId Storage account resource id. + * @param activeKeyName Current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> setStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String resourceId, String activeKeyName, boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (resourceId == null) { + throw new IllegalArgumentException("Parameter resourceId is required and cannot be null."); + } + if (activeKeyName == null) { + throw new IllegalArgumentException("Parameter activeKeyName is required and cannot be null."); + } + Validator.validate(storageAccountAttributes); + Validator.validate(tags); + StorageAccountCreateParameters parameters = new StorageAccountCreateParameters(); + parameters.withResourceId(resourceId); + parameters.withActiveKeyName(activeKeyName); + parameters.withAutoRegenerateKey(autoRegenerateKey); + parameters.withRegenerationPeriod(regenerationPeriod); + parameters.withStorageAccountAttributes(storageAccountAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName) { + return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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 updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName) { + return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String activeKeyName = null; + final Boolean autoRegenerateKey = null; + final String regenerationPeriod = null; + final StorageAccountAttributes storageAccountAttributes = null; + final Map tags = null; + StorageAccountUpdateParameters parameters = new StorageAccountUpdateParameters(); + parameters.withActiveKeyName(null); + parameters.withAutoRegenerateKey(null); + parameters.withRegenerationPeriod(null); + parameters.withStorageAccountAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle updateStorageAccount(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable updateStorageAccountAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + return updateStorageAccountWithServiceResponseAsync(vaultBaseUrl, storageAccountName, activeKeyName, autoRegenerateKey, regenerationPeriod, storageAccountAttributes, tags).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given storage account. This operation requires the storage/set/update permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param activeKeyName The current active storage account key name. + * @param autoRegenerateKey whether keyvault should manage the storage account for the user. + * @param regenerationPeriod The key regeneration time duration specified in ISO-8601 format. + * @param storageAccountAttributes The attributes of the storage account. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> updateStorageAccountWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String activeKeyName, Boolean autoRegenerateKey, String regenerationPeriod, StorageAccountAttributes storageAccountAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(storageAccountAttributes); + Validator.validate(tags); + StorageAccountUpdateParameters parameters = new StorageAccountUpdateParameters(); + parameters.withActiveKeyName(activeKeyName); + parameters.withAutoRegenerateKey(autoRegenerateKey); + parameters.withRegenerationPeriod(regenerationPeriod); + parameters.withStorageAccountAttributes(storageAccountAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateStorageAccount(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateStorageAccountDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateStorageAccountDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the StorageBundle object if successful. + */ + public StorageBundle regenerateStorageAccountKey(String vaultBaseUrl, String storageAccountName, String keyName) { + return regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName).toBlocking().single().body(); + } + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @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 regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName), serviceCallback); + } + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable regenerateStorageAccountKeyAsync(String vaultBaseUrl, String storageAccountName, String keyName) { + return regenerateStorageAccountKeyWithServiceResponseAsync(vaultBaseUrl, storageAccountName, keyName).map(new Func1, StorageBundle>() { + @Override + public StorageBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Regenerates the specified key value for the given storage account. This operation requires the storage/regeneratekey permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param keyName The storage account key name. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the StorageBundle object + */ + public Observable> regenerateStorageAccountKeyWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String keyName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (keyName == null) { + throw new IllegalArgumentException("Parameter keyName is required and cannot be null."); + } + StorageAccountRegenerteKeyParameters parameters = new StorageAccountRegenerteKeyParameters(); + parameters.withKeyName(keyName); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.regenerateStorageAccountKey(storageAccountName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = regenerateStorageAccountKeyDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse regenerateStorageAccountKeyDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + public PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName) { + ServiceResponse> response = getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + public Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName) { + return getSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + public Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName) { + return getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName) + .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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSasDefinitionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + public PagedList getSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + ServiceResponse> response = getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + public Observable> getSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + return getSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<SasDefinitionItem> object + */ + public Observable>> getSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + return getSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults) + .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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSasDefinitionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSasDefinitionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + public PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName) { + ServiceResponse> response = getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @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> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + public Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName) { + return getDeletedSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + public Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName) { + return getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName) + .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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final Integer maxresults = null; + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSasDefinitionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + public PagedList getDeletedSasDefinitions(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + ServiceResponse> response = getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @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> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + public Observable> getDeletedSasDefinitionsAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + return getDeletedSasDefinitionsWithServiceResponseAsync(vaultBaseUrl, storageAccountName, maxresults) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the PagedList<DeletedSasDefinitionItem> object + */ + public Observable>> getDeletedSasDefinitionsWithServiceResponseAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + return getDeletedSasDefinitionsSinglePageAsync(vaultBaseUrl, storageAccountName, maxresults) + .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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSasDefinitionsSinglePageAsync(final String vaultBaseUrl, final String storageAccountName, final Integer maxresults) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSasDefinitions(storageAccountName, maxresults, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSasDefinitionsDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedSasDefinitionsDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSasDefinitionBundle object if successful. + */ + public DeletedSasDefinitionBundle getDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); + } + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @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 getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); + } + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + public Observable getDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return getDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, DeletedSasDefinitionBundle>() { + @Override + public DeletedSasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets the specified deleted sas definition. + * The Get Deleted SAS Definition operation returns the specified deleted SAS definition along with its attributes. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + public Observable> getDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getDeletedSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getDeletedSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getDeletedSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle recoverDeletedSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); + } + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @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 recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); + } + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable recoverDeletedSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return recoverDeletedSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Recovers the deleted SAS definition. + * Recovers the deleted SAS definition for the specified storage account. This operation can only be performed on a soft-delete enabled vault. This operation requires the storage/recover permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> recoverDeletedSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.recoverDeletedSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = recoverDeletedSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse recoverDeletedSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the DeletedSasDefinitionBundle object if successful. + */ + public DeletedSasDefinitionBundle deleteSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); + } + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @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 deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); + } + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + public Observable deleteSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return deleteSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, DeletedSasDefinitionBundle>() { + @Override + public DeletedSasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Deletes a SAS definition from a specified storage account. This operation requires the storage/deletesas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the DeletedSasDefinitionBundle object + */ + public Observable> deleteSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.deleteSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = deleteSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse deleteSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle getSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); + } + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @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 getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); + } + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable getSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return getSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Gets information about a SAS definition for the specified storage account. This operation requires the storage/getsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> getSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = getSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse getSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { + return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod).toBlocking().single().body(); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @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 setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod), serviceCallback); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { + return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (templateUri == null) { + throw new IllegalArgumentException("Parameter templateUri is required and cannot be null."); + } + if (sasType == null) { + throw new IllegalArgumentException("Parameter sasType is required and cannot be null."); + } + if (validityPeriod == null) { + throw new IllegalArgumentException("Parameter validityPeriod is required and cannot be null."); + } + final SasDefinitionAttributes sasDefinitionAttributes = null; + final Map tags = null; + SasDefinitionCreateParameters parameters = new SasDefinitionCreateParameters(); + parameters.withTemplateUri(templateUri); + parameters.withSasType(sasType); + parameters.withValidityPeriod(validityPeriod); + parameters.withSasDefinitionAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle setSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).toBlocking().single().body(); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags), serviceCallback); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable setSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + return setSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Creates or updates a new SAS definition for the specified storage account. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> setSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + if (templateUri == null) { + throw new IllegalArgumentException("Parameter templateUri is required and cannot be null."); + } + if (sasType == null) { + throw new IllegalArgumentException("Parameter sasType is required and cannot be null."); + } + if (validityPeriod == null) { + throw new IllegalArgumentException("Parameter validityPeriod is required and cannot be null."); + } + Validator.validate(sasDefinitionAttributes); + Validator.validate(tags); + SasDefinitionCreateParameters parameters = new SasDefinitionCreateParameters(); + parameters.withTemplateUri(templateUri); + parameters.withSasType(sasType); + parameters.withValidityPeriod(validityPeriod); + parameters.withSasDefinitionAttributes(sasDefinitionAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.setSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = setSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse setSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @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 updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + final String templateUri = null; + final SasTokenType sasType = null; + final String validityPeriod = null; + final SasDefinitionAttributes sasDefinitionAttributes = null; + final Map tags = null; + SasDefinitionUpdateParameters parameters = new SasDefinitionUpdateParameters(); + parameters.withTemplateUri(null); + parameters.withSasType(null); + parameters.withValidityPeriod(null); + parameters.withSasDefinitionAttributes(null); + parameters.withTags(null); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException thrown if the request is rejected by server + * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + * @return the SasDefinitionBundle object if successful. + */ + public SasDefinitionBundle updateSasDefinition(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).toBlocking().single().body(); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @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 updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags), serviceCallback); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable updateSasDefinitionAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + return updateSasDefinitionWithServiceResponseAsync(vaultBaseUrl, storageAccountName, sasDefinitionName, templateUri, sasType, validityPeriod, sasDefinitionAttributes, tags).map(new Func1, SasDefinitionBundle>() { + @Override + public SasDefinitionBundle call(ServiceResponse response) { + return response.body(); + } + }); + } + + /** + * Updates the specified attributes associated with the given SAS definition. This operation requires the storage/setsas permission. + * + * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. + * @param storageAccountName The name of the storage account. + * @param sasDefinitionName The name of the SAS definition. + * @param templateUri The SAS definition token template signed with an arbitrary key. Tokens created according to the SAS definition will have the same properties as the template. + * @param sasType The type of SAS token the SAS definition will create. Possible values include: 'account', 'service' + * @param validityPeriod The validity period of SAS tokens created according to the SAS definition. + * @param sasDefinitionAttributes The attributes of the SAS definition. + * @param tags Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the observable to the SasDefinitionBundle object + */ + public Observable> updateSasDefinitionWithServiceResponseAsync(String vaultBaseUrl, String storageAccountName, String sasDefinitionName, String templateUri, SasTokenType sasType, String validityPeriod, SasDefinitionAttributes sasDefinitionAttributes, Map tags) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (storageAccountName == null) { + throw new IllegalArgumentException("Parameter storageAccountName is required and cannot be null."); + } + if (sasDefinitionName == null) { + throw new IllegalArgumentException("Parameter sasDefinitionName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + Validator.validate(sasDefinitionAttributes); + Validator.validate(tags); + SasDefinitionUpdateParameters parameters = new SasDefinitionUpdateParameters(); + parameters.withTemplateUri(templateUri); + parameters.withSasType(sasType); + parameters.withValidityPeriod(validityPeriod); + parameters.withSasDefinitionAttributes(sasDefinitionAttributes); + parameters.withTags(tags); + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.updateSasDefinition(storageAccountName, sasDefinitionName, this.apiVersion(), this.acceptLanguage(), parameters, parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = updateSasDefinitionDelegate(response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse updateSasDefinitionDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory().newInstance(this.serializerAdapter()) + .register(200, new TypeToken() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeyVersionsNext(final String nextPageLink) { + ServiceResponse> response = getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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> getKeyVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeyVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + public Observable> getKeyVersionsNextAsync(final String nextPageLink) { + return getKeyVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + public Observable>> getKeyVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getKeyVersionsNextSinglePageAsync(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(getKeyVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Retrieves a list of individual key versions with the same key name. + * The full key identifier, attributes, and tags are provided in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeyVersionsNextSinglePageAsync(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.getKeyVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeyVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeyVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<KeyItem> object if successful. + */ + public PagedList getKeysNext(final String nextPageLink) { + ServiceResponse> response = getKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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> getKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getKeysNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + public Observable> getKeysNextAsync(final String nextPageLink) { + return getKeysNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @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<KeyItem> object + */ + public Observable>> getKeysNextWithServiceResponseAsync(final String nextPageLink) { + return getKeysNextSinglePageAsync(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(getKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a stored key. The LIST operation is applicable to all key types, however only the base key identifier, attributes, and tags are provided in the response. Individual versions of a key are not listed in the response. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<KeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getKeysNextSinglePageAsync(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.getKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getKeysNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedKeyItem> object if successful. + */ + public PagedList getDeletedKeysNext(final String nextPageLink) { + ServiceResponse> response = getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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> getDeletedKeysNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedKeysNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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<DeletedKeyItem> object + */ + public Observable> getDeletedKeysNextAsync(final String nextPageLink) { + return getDeletedKeysNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @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<DeletedKeyItem> object + */ + public Observable>> getDeletedKeysNextWithServiceResponseAsync(final String nextPageLink) { + return getDeletedKeysNextSinglePageAsync(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(getDeletedKeysNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted keys in the specified vault. + * Retrieves a list of the keys in the Key Vault as JSON Web Key structures that contain the public part of a deleted key. This operation includes deletion-specific information. The Get Deleted Keys operation is applicable for vaults enabled for soft-delete. While the operation can be invoked on any vault, it will return an error if invoked on a non soft-delete enabled vault. This operation requires the keys/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedKeyItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedKeysNextSinglePageAsync(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.getDeletedKeysNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedKeysNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedKeysNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecretsNext(final String nextPageLink) { + ServiceResponse> response = getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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> getSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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<SecretItem> object + */ + public Observable> getSecretsNextAsync(final String nextPageLink) { + return getSecretsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @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<SecretItem> object + */ + public Observable>> getSecretsNextWithServiceResponseAsync(final String nextPageLink) { + return getSecretsNextSinglePageAsync(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(getSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List secrets in a specified key vault. + * The Get Secrets operation is applicable to the entire vault. However, only the base secret identifier and its attributes are provided in the response. Individual secret versions are not listed in the response. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretsNextSinglePageAsync(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.getSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SecretItem> object if successful. + */ + public PagedList getSecretVersionsNext(final String nextPageLink) { + ServiceResponse> response = getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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> getSecretVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSecretVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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<SecretItem> object + */ + public Observable> getSecretVersionsNextAsync(final String nextPageLink) { + return getSecretVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @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<SecretItem> object + */ + public Observable>> getSecretVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getSecretVersionsNextSinglePageAsync(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(getSecretVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List all versions of the specified secret. + * The full secret identifier and attributes are provided in the response. No values are returned for the secrets. This operations requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSecretVersionsNextSinglePageAsync(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.getSecretVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSecretVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSecretVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSecretItem> object if successful. + */ + public PagedList getDeletedSecretsNext(final String nextPageLink) { + ServiceResponse> response = getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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> getDeletedSecretsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSecretsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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<DeletedSecretItem> object + */ + public Observable> getDeletedSecretsNextAsync(final String nextPageLink) { + return getDeletedSecretsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @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<DeletedSecretItem> object + */ + public Observable>> getDeletedSecretsNextWithServiceResponseAsync(final String nextPageLink) { + return getDeletedSecretsNextSinglePageAsync(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(getDeletedSecretsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted secrets for the specified vault. + * The Get Deleted Secrets operation returns the secrets that have been deleted for a vault enabled for soft-delete. This operation requires the secrets/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSecretItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSecretsNextSinglePageAsync(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.getDeletedSecretsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSecretsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedSecretsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificatesNext(final String nextPageLink) { + ServiceResponse> response = getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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> getCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificatesNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + public Observable> getCertificatesNextAsync(final String nextPageLink) { + return getCertificatesNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + public Observable>> getCertificatesNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificatesNextSinglePageAsync(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(getCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificates in a specified key vault. + * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificatesNextSinglePageAsync(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.getCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificatesNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateIssuerItem> object if successful. + */ + public PagedList getCertificateIssuersNext(final String nextPageLink) { + ServiceResponse> response = getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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> getCertificateIssuersNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateIssuersNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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<CertificateIssuerItem> object + */ + public Observable> getCertificateIssuersNextAsync(final String nextPageLink) { + return getCertificateIssuersNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @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<CertificateIssuerItem> object + */ + public Observable>> getCertificateIssuersNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificateIssuersNextSinglePageAsync(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(getCertificateIssuersNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List certificate issuers for a specified key vault. + * The GetCertificateIssuers operation returns the set of certificate issuer resources in the specified key vault. This operation requires the certificates/manageissuers/getissuers permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateIssuerItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateIssuersNextSinglePageAsync(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.getCertificateIssuersNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateIssuersNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateIssuersNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<CertificateItem> object if successful. + */ + public PagedList getCertificateVersionsNext(final String nextPageLink) { + ServiceResponse> response = getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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> getCertificateVersionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getCertificateVersionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + public Observable> getCertificateVersionsNextAsync(final String nextPageLink) { + return getCertificateVersionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @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<CertificateItem> object + */ + public Observable>> getCertificateVersionsNextWithServiceResponseAsync(final String nextPageLink) { + return getCertificateVersionsNextSinglePageAsync(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(getCertificateVersionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List the versions of a certificate. + * The GetCertificateVersions operation returns the versions of a certificate in the specified key vault. This operation requires the certificates/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<CertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getCertificateVersionsNextSinglePageAsync(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.getCertificateVersionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getCertificateVersionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getCertificateVersionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedCertificateItem> object if successful. + */ + public PagedList getDeletedCertificatesNext(final String nextPageLink) { + ServiceResponse> response = getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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> getDeletedCertificatesNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedCertificatesNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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<DeletedCertificateItem> object + */ + public Observable> getDeletedCertificatesNextAsync(final String nextPageLink) { + return getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @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<DeletedCertificateItem> object + */ + public Observable>> getDeletedCertificatesNextWithServiceResponseAsync(final String nextPageLink) { + return getDeletedCertificatesNextSinglePageAsync(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(getDeletedCertificatesNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists the deleted certificates in the specified vault currently available for recovery. + * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedCertificateItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedCertificatesNextSinglePageAsync(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.getDeletedCertificatesNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedCertificatesNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedCertificatesNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<StorageAccountItem> object if successful. + */ + public PagedList getStorageAccountsNext(final String nextPageLink) { + ServiceResponse> response = getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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> getStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getStorageAccountsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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<StorageAccountItem> object + */ + public Observable> getStorageAccountsNextAsync(final String nextPageLink) { + return getStorageAccountsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @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<StorageAccountItem> object + */ + public Observable>> getStorageAccountsNextWithServiceResponseAsync(final String nextPageLink) { + return getStorageAccountsNextSinglePageAsync(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(getStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage accounts managed by the specified key vault. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<StorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getStorageAccountsNextSinglePageAsync(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.getStorageAccountsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getStorageAccountsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getStorageAccountsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedStorageAccountItem> object if successful. + */ + public PagedList getDeletedStorageAccountsNext(final String nextPageLink) { + ServiceResponse> response = getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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> getDeletedStorageAccountsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedStorageAccountsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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<DeletedStorageAccountItem> object + */ + public Observable> getDeletedStorageAccountsNextAsync(final String nextPageLink) { + return getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @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<DeletedStorageAccountItem> object + */ + public Observable>> getDeletedStorageAccountsNextWithServiceResponseAsync(final String nextPageLink) { + return getDeletedStorageAccountsNextSinglePageAsync(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(getDeletedStorageAccountsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted storage accounts for the specified vault. + * The Get Deleted Storage Accounts operation returns the storage accounts that have been deleted for a vault enabled for soft-delete. This operation requires the storage/list permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedStorageAccountItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedStorageAccountsNextSinglePageAsync(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.getDeletedStorageAccountsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedStorageAccountsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedStorageAccountsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<SasDefinitionItem> object if successful. + */ + public PagedList getSasDefinitionsNext(final String nextPageLink) { + ServiceResponse> response = getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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> getSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getSasDefinitionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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<SasDefinitionItem> object + */ + public Observable> getSasDefinitionsNextAsync(final String nextPageLink) { + return getSasDefinitionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @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<SasDefinitionItem> object + */ + public Observable>> getSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink) { + return getSasDefinitionsNextSinglePageAsync(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(getSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * List storage SAS definitions for the given storage account. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<SasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getSasDefinitionsNextSinglePageAsync(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.getSasDefinitionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getSasDefinitionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getSasDefinitionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @throws KeyVaultErrorException 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<DeletedSasDefinitionItem> object if successful. + */ + public PagedList getDeletedSasDefinitionsNext(final String nextPageLink) { + ServiceResponse> response = getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single(); + return new PagedList(response.body()) { + @Override + public Page nextPage(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink).toBlocking().single().body(); + } + }; + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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> getDeletedSasDefinitionsNextAsync(final String nextPageLink, final ServiceFuture> serviceFuture, final ListOperationCallback serviceCallback) { + return AzureServiceFuture.fromPageResponse( + getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink), + new Func1>>>() { + @Override + public Observable>> call(String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(nextPageLink); + } + }, + serviceCallback); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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<DeletedSasDefinitionItem> object + */ + public Observable> getDeletedSasDefinitionsNextAsync(final String nextPageLink) { + return getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink) + .map(new Func1>, Page>() { + @Override + public Page call(ServiceResponse> response) { + return response.body(); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @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<DeletedSasDefinitionItem> object + */ + public Observable>> getDeletedSasDefinitionsNextWithServiceResponseAsync(final String nextPageLink) { + return getDeletedSasDefinitionsNextSinglePageAsync(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(getDeletedSasDefinitionsNextWithServiceResponseAsync(nextPageLink)); + } + }); + } + + /** + * Lists deleted SAS definitions for the specified vault and storage account. + * The Get Deleted Sas Definitions operation returns the SAS definitions that have been deleted for a vault enabled for soft-delete. This operation requires the storage/listsas permission. + * + * @param nextPageLink The NextLink from the previous successful call to List operation. + * @throws IllegalArgumentException thrown if parameters fail the validation + * @return the PagedList<DeletedSasDefinitionItem> object wrapped in {@link ServiceResponse} if successful. + */ + public Observable>> getDeletedSasDefinitionsNextSinglePageAsync(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.getDeletedSasDefinitionsNext(nextUrl, this.acceptLanguage(), this.userAgent()) + .flatMap(new Func1, Observable>>>() { + @Override + public Observable>> call(Response response) { + try { + ServiceResponse> result = getDeletedSasDefinitionsNextDelegate(response); + return Observable.just(new ServiceResponse>(result.body(), result.response())); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + private ServiceResponse> getDeletedSasDefinitionsNextDelegate(Response response) throws KeyVaultErrorException, IOException, IllegalArgumentException { + return this.restClient().responseBuilderFactory()., KeyVaultErrorException>newInstance(this.serializerAdapter()) + .register(200, new TypeToken>() { }.getType()) + .registerError(KeyVaultErrorException.class) + .build(response); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java index aabc994..beeb526 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java @@ -1,1457 +1,1457 @@ -package com.microsoft.azure.keyvault.implementation; - -import com.google.common.base.Joiner; -import com.microsoft.azure.AzureClient; -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; -import com.microsoft.azure.keyvault.CertificateIdentifier; -import com.microsoft.azure.keyvault.KeyIdentifier; -import com.microsoft.azure.keyvault.KeyVaultClientCustom; -import com.microsoft.azure.keyvault.SecretIdentifier; -import com.microsoft.azure.keyvault.models.*; -import com.microsoft.azure.keyvault.requests.*; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.rest.RestClient; -import com.microsoft.rest.ServiceCallback; -import com.microsoft.rest.ServiceFuture; -import com.microsoft.rest.ServiceResponse; -import com.microsoft.rest.credentials.ServiceClientCredentials; -import com.microsoft.rest.protocol.SerializerAdapter; -import okhttp3.OkHttpClient; -import okhttp3.ResponseBody; -import retrofit2.Response; -import retrofit2.http.*; -import rx.Observable; -import rx.functions.Func1; - -import java.util.List; -import java.util.Map; - -public class KeyVaultClientCustomImpl extends KeyVaultClientBaseImpl implements KeyVaultClientCustom { - - private KeyVaultClientService service; - private AzureClient azureClient; - - public KeyVaultClientCustomImpl(ServiceClientCredentials credentials) { - super(credentials); - } - - public KeyVaultClientCustomImpl(RestClient restClient) { - super(restClient); - } - - public void initializeService() { - service = restClient().retrofit().create(KeyVaultClientService.class); - } - - @Override - public OkHttpClient httpClient() { - return super.httpClient(); - } - - @Override - public SerializerAdapter serializerAdapter() { - return super.serializerAdapter(); - } - - /** - * The interface defining all the services for KeyVaultClient to be - * used by Retrofit to perform actually REST calls. - */ - interface KeyVaultClientService { - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey"}) - @POST("keys/{key-name}/create") - Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey"}) - @PUT("keys/{key-name}") - Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey"}) - @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) - Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey"}) - @PATCH("keys/{key-name}/{key-version}") - Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey"}) - @GET("keys/{key-name}/{key-version}") - Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions"}) - @GET("keys/{key-name}/versions") - Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys"}) - @GET("keys") - Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey"}) - @POST("keys/{key-name}/backup") - Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey"}) - @POST("keys/restore") - Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt"}) - @POST("keys/{key-name}/{key-version}/encrypt") - Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt"}) - @POST("keys/{key-name}/{key-version}/decrypt") - Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign"}) - @POST("keys/{key-name}/{key-version}/sign") - Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify"}) - @POST("keys/{key-name}/{key-version}/verify") - Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey"}) - @POST("keys/{key-name}/{key-version}/wrapkey") - Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey"}) - @POST("keys/{key-name}/{key-version}/unwrapkey") - Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret"}) - @PUT("secrets/{secret-name}") - Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret"}) - @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) - Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret"}) - @PATCH("secrets/{secret-name}/{secret-version}") - Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret"}) - @GET("secrets/{secret-name}/{secret-version}") - Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets"}) - @GET("secrets") - Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions"}) - @GET("secrets/{secret-name}/versions") - Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates"}) - @GET("certificates") - Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate"}) - @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts"}) - @PUT("certificates/contacts") - Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts"}) - @GET("certificates/contacts") - Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts"}) - @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) - Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers"}) - @GET("certificates/issuers") - Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer"}) - @PUT("certificates/issuers/{issuer-name}") - Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer"}) - @PATCH("certificates/issuers/{issuer-name}") - Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer"}) - @GET("certificates/issuers/{issuer-name}") - Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer"}) - @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate"}) - @POST("certificates/{certificate-name}/create") - Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate"}) - @POST("certificates/{certificate-name}/import") - Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions"}) - @GET("certificates/{certificate-name}/versions") - Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy"}) - @GET("certificates/{certificate-name}/policy") - Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy"}) - @PATCH("certificates/{certificate-name}/policy") - Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate"}) - @PATCH("certificates/{certificate-name}/{certificate-version}") - Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate"}) - @GET("certificates/{certificate-name}/{certificate-version}") - Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation"}) - @PATCH("certificates/{certificate-name}/pending") - Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation"}) - @GET("certificates/{certificate-name}/pending") - Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation"}) - @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) - Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate"}) - @POST("certificates/{certificate-name}/pending/merge") - Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext"}) - @GET - Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClient getKeysNext"}) - @GET - Observable> getKeysNext(@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.keyvault.KeyVaultClient getSecretsNext"}) - @GET - Observable> getSecretsNext(@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.keyvault.KeyVaultClient getSecretVersionsNext"}) - @GET - Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClient getCertificatesNext"}) - @GET - Observable> getCertificatesNext(@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.keyvault.KeyVaultClient getCertificateIssuersNext"}) - @GET - Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClient getCertificateVersionsNext"}) - @GET - Observable> getCertificateVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); - - @Headers({"Content-Type: application/json; charset=utf-8", "Accept: application/pkcs10", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getPendingCertificateSigningRequest"}) - @GET("certificates/{certificate-name}/pending") - Observable> getPendingCertificateSigningRequest(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param createKeyRequest the grouped properties for creating a key request - * @return the KeyBundle if successful. - */ - public KeyBundle createKey(CreateKeyRequest createKeyRequest) { - - return createKey( - createKeyRequest.vaultBaseUrl(), - createKeyRequest.keyName(), - createKeyRequest.keyType(), - createKeyRequest.keySize(), - createKeyRequest.keyOperations(), - createKeyRequest.keyAttributes(), - createKeyRequest.tags(), - createKeyRequest.curve()); - } - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. - * - * @param createKeyRequest the grouped properties for creating a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback) { - createKeyRequest.vaultBaseUrl(); - return createKeyAsync( - createKeyRequest.vaultBaseUrl(), - createKeyRequest.keyName(), - createKeyRequest.keyType(), - createKeyRequest.keySize(), - createKeyRequest.keyOperations(), - createKeyRequest.keyAttributes(), - createKeyRequest.tags(), - createKeyRequest.curve(), - serviceCallback); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param importKeyRequest the grouped properties for importing a key request - * @return the KeyBundle if successful. - */ - public KeyBundle importKey(ImportKeyRequest importKeyRequest) { - return importKey( - importKeyRequest.vaultBaseUrl(), - importKeyRequest.keyName(), - importKeyRequest.key(), - importKeyRequest.isHsm(), - importKeyRequest.keyAttributes(), - importKeyRequest.tags()); - } - - /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. - * - * @param importKeyRequest the grouped properties for importing a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback) { - return importKeyAsync( - importKeyRequest.vaultBaseUrl(), - importKeyRequest.keyName(), - importKeyRequest.key(), - importKeyRequest.isHsm(), - importKeyRequest.keyAttributes(), - importKeyRequest.tags(), - serviceCallback); - } - - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param updateKeyRequest the grouped properties for updating a key request - * @return the KeyBundle if successful. - */ - public KeyBundle updateKey(UpdateKeyRequest updateKeyRequest) { - return updateKey( - updateKeyRequest.vaultBaseUrl(), - updateKeyRequest.keyName(), - updateKeyRequest.keyVersion(), - updateKeyRequest.keyOperations(), - updateKeyRequest.keyAttributes(), - updateKeyRequest.tags()); - } - - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. - * - * @param updateKeyRequest the grouped properties for updating a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback) { - return updateKeyAsync( - updateKeyRequest.vaultBaseUrl(), - updateKeyRequest.keyName(), - updateKeyRequest.keyVersion(), - updateKeyRequest.keyOperations(), - updateKeyRequest.keyAttributes(), - updateKeyRequest.tags(), - serviceCallback); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param keyIdentifier The full key identifier - * @return the KeyBundle if successful. - */ - public KeyBundle getKey(String keyIdentifier) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return getKey(id.vault(), id.name(), id.version() == null ? "" : id.version()); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param keyIdentifier The full key identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return getKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @return the KeyBundle if successful. - */ - public KeyBundle getKey(String vaultBaseUrl, String keyName) { - return getKey(vaultBaseUrl, keyName, ""); - } - - /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { - return getKeyAsync(vaultBaseUrl, keyName, "", serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @return the PagedList<KeyItem> if successful. - */ - public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName) { - return getKeyVersions(vaultBaseUrl, keyName); - } - - - /** - * Wraps a symmetric key using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return wrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); - } - - /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * @return the KeyOperationResult if successful. - */ - public KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return unwrapKey(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); - } - - /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return unwrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); - } - - /** - * Wraps a symmetric key using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * @return the KeyOperationResult if successful. - */ - public KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return wrapKey(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { - return getKeyVersionsAsync(vaultBaseUrl, keyName, serviceCallback); - } - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getKeyVersionsAsync(vaultBaseUrl, keyName, maxresults, serviceCallback); - } - - - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> if successful. - */ - public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { - return getKeyVersions(vaultBaseUrl, keyName, maxresults); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @return the PagedList<KeyItem> if successful. - */ - public PagedList listKeys(final String vaultBaseUrl) { - return getKeys(vaultBaseUrl); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return getKeysAsync(vaultBaseUrl, serviceCallback); - } - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getKeysAsync(vaultBaseUrl, maxresults, serviceCallback); - } - - - /** - * List keys in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<KeyItem> if successful. - */ - public PagedList listKeys(final String vaultBaseUrl, final Integer maxresults) { - return getKeys(vaultBaseUrl, maxresults); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * @return the KeyOperationResult if successful. - */ - public KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return encrypt(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); - } - - /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return encryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * @return the KeyOperationResult if successful. - */ - public KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return decrypt(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); - } - - /** - * Decrypts a single block of encrypted data. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return decryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * @return the KeyOperationResult if successful. - */ - public KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return sign(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); - } - - /** - * Creates a signature from a digest using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return signAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); - } - - /** - * Verifies a signature using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * @return the KeyVerifyResult if successful. - */ - public KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return verify(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature); - } - - /** - * Verifies a signature using the specified key. - * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return verifyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature, serviceCallback); - } - - - /** - * Sets a secret in the specified vault. - * - * @param setSecretRequest the grouped properties for setting a secret request - * @return the SecretBundle if successful. - */ - public SecretBundle setSecret(SetSecretRequest setSecretRequest) { - return setSecret( - setSecretRequest.vaultBaseUrl(), - setSecretRequest.secretName(), - setSecretRequest.value(), - setSecretRequest.tags(), - setSecretRequest.contentType(), - setSecretRequest.secretAttributes()); - } - - /** - * Sets a secret in the specified vault. - * - * @param setSecretRequest the grouped properties for setting a secret request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback) { - return setSecretAsync( - setSecretRequest.vaultBaseUrl(), - setSecretRequest.secretName(), - setSecretRequest.value(), - setSecretRequest.tags(), - setSecretRequest.contentType(), - setSecretRequest.secretAttributes(), - serviceCallback); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param updateSecretRequest the grouped properties for updating a secret request - * @return the SecretBundle if successful. - */ - public SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest) { - return updateSecret( - updateSecretRequest.vaultBaseUrl(), - updateSecretRequest.secretName(), - updateSecretRequest.secretVersion(), - updateSecretRequest.contentType(), - updateSecretRequest.secretAttributes(), - updateSecretRequest.tags()); - } - - /** - * Updates the attributes associated with a specified secret in a given key vault. - * - * @param updateSecretRequest the grouped properties for updating a secret request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback) { - return updateSecretAsync( - updateSecretRequest.vaultBaseUrl(), - updateSecretRequest.secretName(), - updateSecretRequest.secretVersion(), - updateSecretRequest.contentType(), - updateSecretRequest.secretAttributes(), - updateSecretRequest.tags(), - serviceCallback); - } - - /** - * Get a specified secret from a given key vault. - * - * @param secretIdentifier The URL for the secret. - * @return the SecretBundle if successful. - */ - public SecretBundle getSecret(String secretIdentifier) { - SecretIdentifier id = new SecretIdentifier(secretIdentifier); - return getSecret(id.vault(), id.name(), id.version() == null ? "" : id.version()); - } - - /** - * Get a specified secret from a given key vault. - * - * @param secretIdentifier The URL for the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback) { - SecretIdentifier id = new SecretIdentifier(secretIdentifier); - return getSecretAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @return the SecretBundle if successful. - */ - public SecretBundle getSecret(String vaultBaseUrl, String secretName) { - return getSecret(vaultBaseUrl, secretName, ""); - } - - /** - * Get a specified secret from a given key vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { - return getSecretAsync(vaultBaseUrl, secretName, "", serviceCallback); - } - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @return the PagedList<SecretItem> if successful. - */ - public PagedList listSecrets(final String vaultBaseUrl) { - return getSecrets(vaultBaseUrl); - } - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return getSecretsAsync(vaultBaseUrl, serviceCallback); - } - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> if successful. - */ - public PagedList listSecrets(final String vaultBaseUrl, final Integer maxresults) { - return getSecrets(vaultBaseUrl, maxresults); - } - - /** - * List secrets in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getSecretsAsync(vaultBaseUrl, maxresults, serviceCallback); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @return the PagedList<SecretItem> if successful. - */ - public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName) { - return getSecretVersions(vaultBaseUrl, secretName); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { - return getSecretVersionsAsync(vaultBaseUrl, secretName, serviceCallback); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<SecretItem> if successful. - */ - public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { - return getSecretVersions(vaultBaseUrl, secretName, maxresults); - } - - /** - * List the versions of the specified secret. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getSecretVersionsAsync(vaultBaseUrl, secretName, maxresults, serviceCallback); - } - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @return the PagedList<CertificateItem> if successful. - */ - public PagedList listCertificates(final String vaultBaseUrl) { - return getCertificates(vaultBaseUrl); - } - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return getCertificatesAsync(vaultBaseUrl, serviceCallback); - } - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> if successful. - */ - public PagedList listCertificates(final String vaultBaseUrl, final Integer maxresults) { - return getCertificates(vaultBaseUrl, maxresults); - } - - /** - * List certificates in the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getCertificatesAsync(vaultBaseUrl, maxresults, serviceCallback); - } - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @return the PagedList<CertificateIssuerItem> if successful. - */ - public PagedList listCertificateIssuers(final String vaultBaseUrl) { - return getCertificateIssuers(vaultBaseUrl); - } - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { - return getCertificateIssuersAsync(vaultBaseUrl, serviceCallback); - } - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateIssuerItem> if successful. - */ - public PagedList listCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { - return getCertificateIssuers(vaultBaseUrl, maxresults); - } - - /** - * List certificate issuers for the specified vault. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getCertificateIssuersAsync(vaultBaseUrl, maxresults, serviceCallback); - } - - /** - * Sets the certificate contacts for the specified vault. - * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request - * @return the IssuerBundle if successful. - */ - public IssuerBundle setCertificateIssuer(SetCertificateIssuerRequest setCertificateIssuerRequest) { - return setCertificateIssuer( - setCertificateIssuerRequest.vaultBaseUrl(), - setCertificateIssuerRequest.issuerName(), - setCertificateIssuerRequest.provider(), - setCertificateIssuerRequest.credentials(), - setCertificateIssuerRequest.organizationDetails(), - setCertificateIssuerRequest.attributes()); - } - - /** - * Sets the certificate contacts for the specified vault. - * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback) { - return setCertificateIssuerAsync( - setCertificateIssuerRequest.vaultBaseUrl(), - setCertificateIssuerRequest.issuerName(), - setCertificateIssuerRequest.provider(), - setCertificateIssuerRequest.credentials(), - setCertificateIssuerRequest.organizationDetails(), - setCertificateIssuerRequest.attributes(), - serviceCallback); - } - - /** - * Updates the specified certificate issuer. - * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request - * @return the IssuerBundle if successful. - */ - public IssuerBundle updateCertificateIssuer(UpdateCertificateIssuerRequest updateCertificateIssuerRequest) { - return updateCertificateIssuer( - updateCertificateIssuerRequest.vaultBaseUrl(), - updateCertificateIssuerRequest.issuerName(), - updateCertificateIssuerRequest.provider(), - updateCertificateIssuerRequest.credentials(), - updateCertificateIssuerRequest.organizationDetails(), - updateCertificateIssuerRequest.attributes()); - } - - /** - * Updates the specified certificate issuer. - * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - * @throws IllegalArgumentException thrown if callback is null - */ - public ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback) { - return updateCertificateIssuerAsync( - updateCertificateIssuerRequest.vaultBaseUrl(), - updateCertificateIssuerRequest.issuerName(), - updateCertificateIssuerRequest.provider(), - updateCertificateIssuerRequest.credentials(), - updateCertificateIssuerRequest.organizationDetails(), - updateCertificateIssuerRequest.attributes(), - serviceCallback); - } - - /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. - * - * @param createCertificateRequest the grouped properties for creating a certificate request - * @return the CertificateOperation if successful. - */ - public CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest) { - return createCertificate( - createCertificateRequest.vaultBaseUrl(), - createCertificateRequest.certificateName(), - createCertificateRequest.certificatePolicy(), - createCertificateRequest.certificateAttributes(), - createCertificateRequest.tags()); - } - - /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. - * - * @param createCertificateRequest the grouped properties for creating a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback) { - return createCertificateAsync( - createCertificateRequest.vaultBaseUrl(), - createCertificateRequest.certificateName(), - createCertificateRequest.certificatePolicy(), - createCertificateRequest.certificateAttributes(), - createCertificateRequest.tags(), - serviceCallback); - } - - /** - * Imports a certificate into the specified vault. - * - * @param importCertificateRequest the grouped properties for importing a certificate request - * @return the CertificateBundle if successful. - */ - public CertificateBundle importCertificate(ImportCertificateRequest importCertificateRequest) { - return importCertificate( - importCertificateRequest.vaultBaseUrl(), - importCertificateRequest.certificateName(), - importCertificateRequest.base64EncodedCertificate(), - importCertificateRequest.password(), - importCertificateRequest.certificatePolicy(), - importCertificateRequest.certificateAttributes(), - importCertificateRequest.tags()); - } - - /** - * Imports a certificate into the specified vault. - * - * @param importCertificateRequest the grouped properties for importing a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback) { - return importCertificateAsync( - importCertificateRequest.vaultBaseUrl(), - importCertificateRequest.certificateName(), - importCertificateRequest.base64EncodedCertificate(), - importCertificateRequest.password(), - importCertificateRequest.certificatePolicy(), - importCertificateRequest.certificateAttributes(), - importCertificateRequest.tags(), - serviceCallback); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @return the PagedList<CertificateItem> if successful. - */ - public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName) { - return getCertificateVersions(vaultBaseUrl, certificateName); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { - return getCertificateVersionsAsync(vaultBaseUrl, certificateName, serviceCallback); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @return the PagedList<CertificateItem> if successful. - */ - public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { - return getCertificateVersions(vaultBaseUrl, certificateName, maxresults); - } - - /** - * List the versions of a certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { - return getCertificateVersionsAsync(vaultBaseUrl, certificateName, maxresults, serviceCallback); - } - - /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. - * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request - * @return the CertificatePolicy if successful. - */ - public CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest) { - return updateCertificatePolicy( - updateCertificatePolicyRequest.vaultBaseUrl(), - updateCertificatePolicyRequest.certificateName(), - updateCertificatePolicyRequest.certificatePolicy()); - } - - /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. - * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback) { - return updateCertificatePolicyAsync( - updateCertificatePolicyRequest.vaultBaseUrl(), - updateCertificatePolicyRequest.certificateName(), - updateCertificatePolicyRequest.certificatePolicy(), - serviceCallback); - } - - /** - * Updates the attributes associated with the specified certificate. - * - * @param updateCertificateRequest the grouped properties for updating a certificate request - * @return the CertificateBundle if successful. - */ - public CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest) { - return updateCertificate( - updateCertificateRequest.vaultBaseUrl(), - updateCertificateRequest.certificateName(), - updateCertificateRequest.certificateVersion(), - updateCertificateRequest.certificatePolicy(), - updateCertificateRequest.certificateAttributes(), - updateCertificateRequest.tags()); - } - - /** - * Updates the attributes associated with the specified certificate. - * - * @param updateCertificateRequest the grouped properties for updating a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback) { - return updateCertificateAsync( - updateCertificateRequest.vaultBaseUrl(), - updateCertificateRequest.certificateName(), - updateCertificateRequest.certificateVersion(), - updateCertificateRequest.certificatePolicy(), - updateCertificateRequest.certificateAttributes(), - updateCertificateRequest.tags(), - serviceCallback); - } - - /** - * Gets information about a specified certificate. - * - * @param certificateIdentifier The certificate identifier - * @return the CertificateBundle if successful. - */ - public CertificateBundle getCertificate(String certificateIdentifier) { - CertificateIdentifier id = new CertificateIdentifier(certificateIdentifier); - return getCertificate(id.vault(), id.name(), id.version() == null ? "" : id.version()); - } - - /** - * Gets information about a specified certificate. - * - * @param certificateIdentifier The certificate identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback) { - CertificateIdentifier id = new CertificateIdentifier(certificateIdentifier); - return getCertificateAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault - * @return the CertificateBundle if successful. - */ - public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName) { - return getCertificate(vaultBaseUrl, certificateName, ""); - } - - /** - * Gets information about a specified certificate. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return getCertificateAsync(vaultBaseUrl, certificateName, "", serviceCallback); - } - - /** - * Updates a certificate operation. - * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request - * @return the CertificateOperation if successful. - */ - public CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest) { - return updateCertificateOperation( - updateCertificateOperationRequest.vaultBaseUrl(), - updateCertificateOperationRequest.certificateName(), - updateCertificateOperationRequest.cancellationRequested()); - } - - /** - * Updates a certificate operation. - * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback) { - return updateCertificateOperationAsync( - updateCertificateOperationRequest.vaultBaseUrl(), - updateCertificateOperationRequest.certificateName(), - updateCertificateOperationRequest.cancellationRequested(), - serviceCallback); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param mergeCertificateRequest the grouped properties for merging a certificate request - * @return the CertificateBundle if successful. - */ - public CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest) { - return mergeCertificate( - mergeCertificateRequest.vaultBaseUrl(), - mergeCertificateRequest.certificateName(), - mergeCertificateRequest.x509Certificates(), - mergeCertificateRequest.certificateAttributes(), - mergeCertificateRequest.tags()); - } - - /** - * Merges a certificate or a certificate chain with a key pair existing on the server. - * - * @param mergeCertificateRequest the grouped properties for merging a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback) { - return mergeCertificateAsync( - mergeCertificateRequest.vaultBaseUrl(), - mergeCertificateRequest.certificateName(), - mergeCertificateRequest.x509Certificates(), - mergeCertificateRequest.certificateAttributes(), - mergeCertificateRequest.tags(), - serviceCallback); - } - - /** - * Gets the pending certificate signing request response. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @return the String if successful. - */ - public String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName) { - return getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); - } - - /** - * Gets the pending certificate signing request response. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @return the {@link ServiceFuture} object - */ - public ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); - } - - /** - * Gets the pending certificate signing request response. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @return the observable to the String object - */ - private Observable> getPendingCertificateSigningRequestWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { - if (vaultBaseUrl == null) { - throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); - } - if (certificateName == null) { - throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); - } - if (this.apiVersion() == null) { - throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); - } - String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getPendingCertificateSigningRequest(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) - .flatMap(new Func1, Observable>>() { - @Override - public Observable> call(Response response) { - try { - ServiceResponse clientResponse = new ServiceResponse(response.body().string(), response); - return Observable.just(clientResponse); - } catch (Throwable t) { - return Observable.error(t); - } - } - }); - } - - @Override - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, - List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKey(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); - } - - @Override - public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, - Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, - ServiceCallback serviceCallback) { - return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null, serviceCallback); - } - - @Override - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, - Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, (JsonWebKeyCurveName) null); - } - - @Override - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, - JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, - Map tags) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); - } - - @Override - public PagedList getCertificates(String vaultBaseUrl, Integer maxresults) { - return getCertificates(vaultBaseUrl, maxresults, false); - } - - @Override - public ServiceFuture> getCertificatesAsync(String vaultBaseUrl, Integer maxresults, - ListOperationCallback serviceCallback) { - return getCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); - } - - @Override - public Observable> getCertificatesAsync(String vaultBaseUrl, Integer maxresults) { - return getCertificatesAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public Observable>> getCertificatesWithServiceResponseAsync( - String vaultBaseUrl, Integer maxresults) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public PagedList getDeletedCertificates(String vaultBaseUrl, Integer maxresults) { - return getDeletedCertificates(vaultBaseUrl, maxresults, false); - } - - @Override - public ServiceFuture> getDeletedCertificatesAsync(String vaultBaseUrl, - Integer maxresults, ListOperationCallback serviceCallback) { - return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); - } - - @Override - public Observable> getDeletedCertificatesAsync(String vaultBaseUrl, - Integer maxresults) { - return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public Observable>> getDeletedCertificatesWithServiceResponseAsync( - String vaultBaseUrl, Integer maxresults) { - return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); - } - - +package com.microsoft.azure.keyvault.implementation; + +import com.google.common.base.Joiner; +import com.microsoft.azure.AzureClient; +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; +import com.microsoft.azure.keyvault.CertificateIdentifier; +import com.microsoft.azure.keyvault.KeyIdentifier; +import com.microsoft.azure.keyvault.KeyVaultClientCustom; +import com.microsoft.azure.keyvault.SecretIdentifier; +import com.microsoft.azure.keyvault.models.*; +import com.microsoft.azure.keyvault.requests.*; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.microsoft.rest.RestClient; +import com.microsoft.rest.ServiceCallback; +import com.microsoft.rest.ServiceFuture; +import com.microsoft.rest.ServiceResponse; +import com.microsoft.rest.credentials.ServiceClientCredentials; +import com.microsoft.rest.protocol.SerializerAdapter; +import okhttp3.OkHttpClient; +import okhttp3.ResponseBody; +import retrofit2.Response; +import retrofit2.http.*; +import rx.Observable; +import rx.functions.Func1; + +import java.util.List; +import java.util.Map; + +public class KeyVaultClientCustomImpl extends KeyVaultClientBaseImpl implements KeyVaultClientCustom { + + private KeyVaultClientService service; + private AzureClient azureClient; + + public KeyVaultClientCustomImpl(ServiceClientCredentials credentials) { + super(credentials); + } + + public KeyVaultClientCustomImpl(RestClient restClient) { + super(restClient); + } + + public void initializeService() { + service = restClient().retrofit().create(KeyVaultClientService.class); + } + + @Override + public OkHttpClient httpClient() { + return super.httpClient(); + } + + @Override + public SerializerAdapter serializerAdapter() { + return super.serializerAdapter(); + } + + /** + * The interface defining all the services for KeyVaultClient to be + * used by Retrofit to perform actually REST calls. + */ + interface KeyVaultClientService { + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey"}) + @POST("keys/{key-name}/create") + Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey"}) + @PUT("keys/{key-name}") + Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey"}) + @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) + Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey"}) + @PATCH("keys/{key-name}/{key-version}") + Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey"}) + @GET("keys/{key-name}/{key-version}") + Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions"}) + @GET("keys/{key-name}/versions") + Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys"}) + @GET("keys") + Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey"}) + @POST("keys/{key-name}/backup") + Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey"}) + @POST("keys/restore") + Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt"}) + @POST("keys/{key-name}/{key-version}/encrypt") + Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt"}) + @POST("keys/{key-name}/{key-version}/decrypt") + Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign"}) + @POST("keys/{key-name}/{key-version}/sign") + Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify"}) + @POST("keys/{key-name}/{key-version}/verify") + Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey"}) + @POST("keys/{key-name}/{key-version}/wrapkey") + Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey"}) + @POST("keys/{key-name}/{key-version}/unwrapkey") + Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret"}) + @PUT("secrets/{secret-name}") + Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret"}) + @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) + Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret"}) + @PATCH("secrets/{secret-name}/{secret-version}") + Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret"}) + @GET("secrets/{secret-name}/{secret-version}") + Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets"}) + @GET("secrets") + Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions"}) + @GET("secrets/{secret-name}/versions") + Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates"}) + @GET("certificates") + Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate"}) + @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts"}) + @PUT("certificates/contacts") + Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts"}) + @GET("certificates/contacts") + Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts"}) + @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) + Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers"}) + @GET("certificates/issuers") + Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer"}) + @PUT("certificates/issuers/{issuer-name}") + Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer"}) + @PATCH("certificates/issuers/{issuer-name}") + Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer"}) + @GET("certificates/issuers/{issuer-name}") + Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer"}) + @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) + Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate"}) + @POST("certificates/{certificate-name}/create") + Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate"}) + @POST("certificates/{certificate-name}/import") + Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions"}) + @GET("certificates/{certificate-name}/versions") + Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy"}) + @GET("certificates/{certificate-name}/policy") + Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy"}) + @PATCH("certificates/{certificate-name}/policy") + Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate"}) + @PATCH("certificates/{certificate-name}/{certificate-version}") + Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate"}) + @GET("certificates/{certificate-name}/{certificate-version}") + Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation"}) + @PATCH("certificates/{certificate-name}/pending") + Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation"}) + @GET("certificates/{certificate-name}/pending") + Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation"}) + @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) + Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate"}) + @POST("certificates/{certificate-name}/pending/merge") + Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext"}) + @GET + Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClient getKeysNext"}) + @GET + Observable> getKeysNext(@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.keyvault.KeyVaultClient getSecretsNext"}) + @GET + Observable> getSecretsNext(@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.keyvault.KeyVaultClient getSecretVersionsNext"}) + @GET + Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClient getCertificatesNext"}) + @GET + Observable> getCertificatesNext(@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.keyvault.KeyVaultClient getCertificateIssuersNext"}) + @GET + Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClient getCertificateVersionsNext"}) + @GET + Observable> getCertificateVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + + @Headers({"Content-Type: application/json; charset=utf-8", "Accept: application/pkcs10", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getPendingCertificateSigningRequest"}) + @GET("certificates/{certificate-name}/pending") + Observable> getPendingCertificateSigningRequest(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param createKeyRequest the grouped properties for creating a key request + * @return the KeyBundle if successful. + */ + public KeyBundle createKey(CreateKeyRequest createKeyRequest) { + + return createKey( + createKeyRequest.vaultBaseUrl(), + createKeyRequest.keyName(), + createKeyRequest.keyType(), + createKeyRequest.keySize(), + createKeyRequest.keyOperations(), + createKeyRequest.keyAttributes(), + createKeyRequest.tags(), + createKeyRequest.curve()); + } + + /** + * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * + * @param createKeyRequest the grouped properties for creating a key request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback) { + createKeyRequest.vaultBaseUrl(); + return createKeyAsync( + createKeyRequest.vaultBaseUrl(), + createKeyRequest.keyName(), + createKeyRequest.keyType(), + createKeyRequest.keySize(), + createKeyRequest.keyOperations(), + createKeyRequest.keyAttributes(), + createKeyRequest.tags(), + createKeyRequest.curve(), + serviceCallback); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param importKeyRequest the grouped properties for importing a key request + * @return the KeyBundle if successful. + */ + public KeyBundle importKey(ImportKeyRequest importKeyRequest) { + return importKey( + importKeyRequest.vaultBaseUrl(), + importKeyRequest.keyName(), + importKeyRequest.key(), + importKeyRequest.isHsm(), + importKeyRequest.keyAttributes(), + importKeyRequest.tags()); + } + + /** + * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * + * @param importKeyRequest the grouped properties for importing a key request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback) { + return importKeyAsync( + importKeyRequest.vaultBaseUrl(), + importKeyRequest.keyName(), + importKeyRequest.key(), + importKeyRequest.isHsm(), + importKeyRequest.keyAttributes(), + importKeyRequest.tags(), + serviceCallback); + } + + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param updateKeyRequest the grouped properties for updating a key request + * @return the KeyBundle if successful. + */ + public KeyBundle updateKey(UpdateKeyRequest updateKeyRequest) { + return updateKey( + updateKeyRequest.vaultBaseUrl(), + updateKeyRequest.keyName(), + updateKeyRequest.keyVersion(), + updateKeyRequest.keyOperations(), + updateKeyRequest.keyAttributes(), + updateKeyRequest.tags()); + } + + /** + * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * + * @param updateKeyRequest the grouped properties for updating a key request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback) { + return updateKeyAsync( + updateKeyRequest.vaultBaseUrl(), + updateKeyRequest.keyName(), + updateKeyRequest.keyVersion(), + updateKeyRequest.keyOperations(), + updateKeyRequest.keyAttributes(), + updateKeyRequest.tags(), + serviceCallback); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param keyIdentifier The full key identifier + * @return the KeyBundle if successful. + */ + public KeyBundle getKey(String keyIdentifier) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return getKey(id.vault(), id.name(), id.version() == null ? "" : id.version()); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param keyIdentifier The full key identifier + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return getKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @return the KeyBundle if successful. + */ + public KeyBundle getKey(String vaultBaseUrl, String keyName) { + return getKey(vaultBaseUrl, keyName, ""); + } + + /** + * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + return getKeyAsync(vaultBaseUrl, keyName, "", serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @return the PagedList<KeyItem> if successful. + */ + public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName) { + return getKeyVersions(vaultBaseUrl, keyName); + } + + + /** + * Wraps a symmetric key using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be wrapped + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return wrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + } + + /** + * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be unwrapped + * @return the KeyOperationResult if successful. + */ + public KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return unwrapKey(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); + } + + /** + * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be unwrapped + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return unwrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + } + + /** + * Wraps a symmetric key using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the key to be wrapped + * @return the KeyOperationResult if successful. + */ + public KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return wrapKey(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { + return getKeyVersionsAsync(vaultBaseUrl, keyName, serviceCallback); + } + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getKeyVersionsAsync(vaultBaseUrl, keyName, maxresults, serviceCallback); + } + + + /** + * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param keyName The name of the key + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> if successful. + */ + public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + return getKeyVersions(vaultBaseUrl, keyName, maxresults); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @return the PagedList<KeyItem> if successful. + */ + public PagedList listKeys(final String vaultBaseUrl) { + return getKeys(vaultBaseUrl); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return getKeysAsync(vaultBaseUrl, serviceCallback); + } + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getKeysAsync(vaultBaseUrl, maxresults, serviceCallback); + } + + + /** + * List keys in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<KeyItem> if successful. + */ + public PagedList listKeys(final String vaultBaseUrl, final Integer maxresults) { + return getKeys(vaultBaseUrl, maxresults); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be encrypted + * @return the KeyOperationResult if successful. + */ + public KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return encrypt(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); + } + + /** + * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be encrypted + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return encryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be decrypted + * @return the KeyOperationResult if successful. + */ + public KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return decrypt(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); + } + + /** + * Decrypts a single block of encrypted data. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be decrypted + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return decryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be signed + * @return the KeyOperationResult if successful. + */ + public KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return sign(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value); + } + + /** + * Creates a signature from a digest using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm algorithm identifier + * @param value the content to be signed + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return signAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + } + + /** + * Verifies a signature using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest The digest used for signing + * @param signature The signature to be verified + * @return the KeyVerifyResult if successful. + */ + public KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return verify(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature); + } + + /** + * Verifies a signature using the specified key. + * + * @param keyIdentifier The full key identifier + * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest The digest used for signing + * @param signature The signature to be verified + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + return verifyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature, serviceCallback); + } + + + /** + * Sets a secret in the specified vault. + * + * @param setSecretRequest the grouped properties for setting a secret request + * @return the SecretBundle if successful. + */ + public SecretBundle setSecret(SetSecretRequest setSecretRequest) { + return setSecret( + setSecretRequest.vaultBaseUrl(), + setSecretRequest.secretName(), + setSecretRequest.value(), + setSecretRequest.tags(), + setSecretRequest.contentType(), + setSecretRequest.secretAttributes()); + } + + /** + * Sets a secret in the specified vault. + * + * @param setSecretRequest the grouped properties for setting a secret request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback) { + return setSecretAsync( + setSecretRequest.vaultBaseUrl(), + setSecretRequest.secretName(), + setSecretRequest.value(), + setSecretRequest.tags(), + setSecretRequest.contentType(), + setSecretRequest.secretAttributes(), + serviceCallback); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param updateSecretRequest the grouped properties for updating a secret request + * @return the SecretBundle if successful. + */ + public SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest) { + return updateSecret( + updateSecretRequest.vaultBaseUrl(), + updateSecretRequest.secretName(), + updateSecretRequest.secretVersion(), + updateSecretRequest.contentType(), + updateSecretRequest.secretAttributes(), + updateSecretRequest.tags()); + } + + /** + * Updates the attributes associated with a specified secret in a given key vault. + * + * @param updateSecretRequest the grouped properties for updating a secret request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback) { + return updateSecretAsync( + updateSecretRequest.vaultBaseUrl(), + updateSecretRequest.secretName(), + updateSecretRequest.secretVersion(), + updateSecretRequest.contentType(), + updateSecretRequest.secretAttributes(), + updateSecretRequest.tags(), + serviceCallback); + } + + /** + * Get a specified secret from a given key vault. + * + * @param secretIdentifier The URL for the secret. + * @return the SecretBundle if successful. + */ + public SecretBundle getSecret(String secretIdentifier) { + SecretIdentifier id = new SecretIdentifier(secretIdentifier); + return getSecret(id.vault(), id.name(), id.version() == null ? "" : id.version()); + } + + /** + * Get a specified secret from a given key vault. + * + * @param secretIdentifier The URL for the secret. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback) { + SecretIdentifier id = new SecretIdentifier(secretIdentifier); + return getSecretAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @return the SecretBundle if successful. + */ + public SecretBundle getSecret(String vaultBaseUrl, String secretName) { + return getSecret(vaultBaseUrl, secretName, ""); + } + + /** + * Get a specified secret from a given key vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + return getSecretAsync(vaultBaseUrl, secretName, "", serviceCallback); + } + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @return the PagedList<SecretItem> if successful. + */ + public PagedList listSecrets(final String vaultBaseUrl) { + return getSecrets(vaultBaseUrl); + } + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return getSecretsAsync(vaultBaseUrl, serviceCallback); + } + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> if successful. + */ + public PagedList listSecrets(final String vaultBaseUrl, final Integer maxresults) { + return getSecrets(vaultBaseUrl, maxresults); + } + + /** + * List secrets in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getSecretsAsync(vaultBaseUrl, maxresults, serviceCallback); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @return the PagedList<SecretItem> if successful. + */ + public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName) { + return getSecretVersions(vaultBaseUrl, secretName); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { + return getSecretVersionsAsync(vaultBaseUrl, secretName, serviceCallback); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<SecretItem> if successful. + */ + public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + return getSecretVersions(vaultBaseUrl, secretName, maxresults); + } + + /** + * List the versions of the specified secret. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param secretName The name of the secret in the given vault + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getSecretVersionsAsync(vaultBaseUrl, secretName, maxresults, serviceCallback); + } + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @return the PagedList<CertificateItem> if successful. + */ + public PagedList listCertificates(final String vaultBaseUrl) { + return getCertificates(vaultBaseUrl); + } + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return getCertificatesAsync(vaultBaseUrl, serviceCallback); + } + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> if successful. + */ + public PagedList listCertificates(final String vaultBaseUrl, final Integer maxresults) { + return getCertificates(vaultBaseUrl, maxresults); + } + + /** + * List certificates in the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getCertificatesAsync(vaultBaseUrl, maxresults, serviceCallback); + } + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @return the PagedList<CertificateIssuerItem> if successful. + */ + public PagedList listCertificateIssuers(final String vaultBaseUrl) { + return getCertificateIssuers(vaultBaseUrl); + } + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + return getCertificateIssuersAsync(vaultBaseUrl, serviceCallback); + } + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateIssuerItem> if successful. + */ + public PagedList listCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { + return getCertificateIssuers(vaultBaseUrl, maxresults); + } + + /** + * List certificate issuers for the specified vault. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getCertificateIssuersAsync(vaultBaseUrl, maxresults, serviceCallback); + } + + /** + * Sets the certificate contacts for the specified vault. + * + * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * @return the IssuerBundle if successful. + */ + public IssuerBundle setCertificateIssuer(SetCertificateIssuerRequest setCertificateIssuerRequest) { + return setCertificateIssuer( + setCertificateIssuerRequest.vaultBaseUrl(), + setCertificateIssuerRequest.issuerName(), + setCertificateIssuerRequest.provider(), + setCertificateIssuerRequest.credentials(), + setCertificateIssuerRequest.organizationDetails(), + setCertificateIssuerRequest.attributes()); + } + + /** + * Sets the certificate contacts for the specified vault. + * + * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback) { + return setCertificateIssuerAsync( + setCertificateIssuerRequest.vaultBaseUrl(), + setCertificateIssuerRequest.issuerName(), + setCertificateIssuerRequest.provider(), + setCertificateIssuerRequest.credentials(), + setCertificateIssuerRequest.organizationDetails(), + setCertificateIssuerRequest.attributes(), + serviceCallback); + } + + /** + * Updates the specified certificate issuer. + * + * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * @return the IssuerBundle if successful. + */ + public IssuerBundle updateCertificateIssuer(UpdateCertificateIssuerRequest updateCertificateIssuerRequest) { + return updateCertificateIssuer( + updateCertificateIssuerRequest.vaultBaseUrl(), + updateCertificateIssuerRequest.issuerName(), + updateCertificateIssuerRequest.provider(), + updateCertificateIssuerRequest.credentials(), + updateCertificateIssuerRequest.organizationDetails(), + updateCertificateIssuerRequest.attributes()); + } + + /** + * Updates the specified certificate issuer. + * + * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + * @throws IllegalArgumentException thrown if callback is null + */ + public ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback) { + return updateCertificateIssuerAsync( + updateCertificateIssuerRequest.vaultBaseUrl(), + updateCertificateIssuerRequest.issuerName(), + updateCertificateIssuerRequest.provider(), + updateCertificateIssuerRequest.credentials(), + updateCertificateIssuerRequest.organizationDetails(), + updateCertificateIssuerRequest.attributes(), + serviceCallback); + } + + /** + * Creates a new certificate version. If this is the first version, the certificate resource is created. + * + * @param createCertificateRequest the grouped properties for creating a certificate request + * @return the CertificateOperation if successful. + */ + public CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest) { + return createCertificate( + createCertificateRequest.vaultBaseUrl(), + createCertificateRequest.certificateName(), + createCertificateRequest.certificatePolicy(), + createCertificateRequest.certificateAttributes(), + createCertificateRequest.tags()); + } + + /** + * Creates a new certificate version. If this is the first version, the certificate resource is created. + * + * @param createCertificateRequest the grouped properties for creating a certificate request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback) { + return createCertificateAsync( + createCertificateRequest.vaultBaseUrl(), + createCertificateRequest.certificateName(), + createCertificateRequest.certificatePolicy(), + createCertificateRequest.certificateAttributes(), + createCertificateRequest.tags(), + serviceCallback); + } + + /** + * Imports a certificate into the specified vault. + * + * @param importCertificateRequest the grouped properties for importing a certificate request + * @return the CertificateBundle if successful. + */ + public CertificateBundle importCertificate(ImportCertificateRequest importCertificateRequest) { + return importCertificate( + importCertificateRequest.vaultBaseUrl(), + importCertificateRequest.certificateName(), + importCertificateRequest.base64EncodedCertificate(), + importCertificateRequest.password(), + importCertificateRequest.certificatePolicy(), + importCertificateRequest.certificateAttributes(), + importCertificateRequest.tags()); + } + + /** + * Imports a certificate into the specified vault. + * + * @param importCertificateRequest the grouped properties for importing a certificate request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback) { + return importCertificateAsync( + importCertificateRequest.vaultBaseUrl(), + importCertificateRequest.certificateName(), + importCertificateRequest.base64EncodedCertificate(), + importCertificateRequest.password(), + importCertificateRequest.certificatePolicy(), + importCertificateRequest.certificateAttributes(), + importCertificateRequest.tags(), + serviceCallback); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @return the PagedList<CertificateItem> if successful. + */ + public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName) { + return getCertificateVersions(vaultBaseUrl, certificateName); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { + return getCertificateVersionsAsync(vaultBaseUrl, certificateName, serviceCallback); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @return the PagedList<CertificateItem> if successful. + */ + public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + return getCertificateVersions(vaultBaseUrl, certificateName, maxresults); + } + + /** + * List the versions of a certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { + return getCertificateVersionsAsync(vaultBaseUrl, certificateName, maxresults, serviceCallback); + } + + /** + * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * + * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * @return the CertificatePolicy if successful. + */ + public CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest) { + return updateCertificatePolicy( + updateCertificatePolicyRequest.vaultBaseUrl(), + updateCertificatePolicyRequest.certificateName(), + updateCertificatePolicyRequest.certificatePolicy()); + } + + /** + * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * + * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback) { + return updateCertificatePolicyAsync( + updateCertificatePolicyRequest.vaultBaseUrl(), + updateCertificatePolicyRequest.certificateName(), + updateCertificatePolicyRequest.certificatePolicy(), + serviceCallback); + } + + /** + * Updates the attributes associated with the specified certificate. + * + * @param updateCertificateRequest the grouped properties for updating a certificate request + * @return the CertificateBundle if successful. + */ + public CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest) { + return updateCertificate( + updateCertificateRequest.vaultBaseUrl(), + updateCertificateRequest.certificateName(), + updateCertificateRequest.certificateVersion(), + updateCertificateRequest.certificatePolicy(), + updateCertificateRequest.certificateAttributes(), + updateCertificateRequest.tags()); + } + + /** + * Updates the attributes associated with the specified certificate. + * + * @param updateCertificateRequest the grouped properties for updating a certificate request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback) { + return updateCertificateAsync( + updateCertificateRequest.vaultBaseUrl(), + updateCertificateRequest.certificateName(), + updateCertificateRequest.certificateVersion(), + updateCertificateRequest.certificatePolicy(), + updateCertificateRequest.certificateAttributes(), + updateCertificateRequest.tags(), + serviceCallback); + } + + /** + * Gets information about a specified certificate. + * + * @param certificateIdentifier The certificate identifier + * @return the CertificateBundle if successful. + */ + public CertificateBundle getCertificate(String certificateIdentifier) { + CertificateIdentifier id = new CertificateIdentifier(certificateIdentifier); + return getCertificate(id.vault(), id.name(), id.version() == null ? "" : id.version()); + } + + /** + * Gets information about a specified certificate. + * + * @param certificateIdentifier The certificate identifier + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback) { + CertificateIdentifier id = new CertificateIdentifier(certificateIdentifier); + return getCertificateAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate in the given vault + * @return the CertificateBundle if successful. + */ + public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName) { + return getCertificate(vaultBaseUrl, certificateName, ""); + } + + /** + * Gets information about a specified certificate. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate in the given vault + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return getCertificateAsync(vaultBaseUrl, certificateName, "", serviceCallback); + } + + /** + * Updates a certificate operation. + * + * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * @return the CertificateOperation if successful. + */ + public CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest) { + return updateCertificateOperation( + updateCertificateOperationRequest.vaultBaseUrl(), + updateCertificateOperationRequest.certificateName(), + updateCertificateOperationRequest.cancellationRequested()); + } + + /** + * Updates a certificate operation. + * + * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback) { + return updateCertificateOperationAsync( + updateCertificateOperationRequest.vaultBaseUrl(), + updateCertificateOperationRequest.certificateName(), + updateCertificateOperationRequest.cancellationRequested(), + serviceCallback); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param mergeCertificateRequest the grouped properties for merging a certificate request + * @return the CertificateBundle if successful. + */ + public CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest) { + return mergeCertificate( + mergeCertificateRequest.vaultBaseUrl(), + mergeCertificateRequest.certificateName(), + mergeCertificateRequest.x509Certificates(), + mergeCertificateRequest.certificateAttributes(), + mergeCertificateRequest.tags()); + } + + /** + * Merges a certificate or a certificate chain with a key pair existing on the server. + * + * @param mergeCertificateRequest the grouped properties for merging a certificate request + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback) { + return mergeCertificateAsync( + mergeCertificateRequest.vaultBaseUrl(), + mergeCertificateRequest.certificateName(), + mergeCertificateRequest.x509Certificates(), + mergeCertificateRequest.certificateAttributes(), + mergeCertificateRequest.tags(), + serviceCallback); + } + + /** + * Gets the pending certificate signing request response. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @return the String if successful. + */ + public String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName) { + return getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + } + + /** + * Gets the pending certificate signing request response. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @return the {@link ServiceFuture} object + */ + public ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse(getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + } + + /** + * Gets the pending certificate signing request response. + * + * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName The name of the certificate + * @return the observable to the String object + */ + private Observable> getPendingCertificateSigningRequestWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + if (vaultBaseUrl == null) { + throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); + } + if (certificateName == null) { + throw new IllegalArgumentException("Parameter certificateName is required and cannot be null."); + } + if (this.apiVersion() == null) { + throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); + } + String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); + return service.getPendingCertificateSigningRequest(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + .flatMap(new Func1, Observable>>() { + @Override + public Observable> call(Response response) { + try { + ServiceResponse clientResponse = new ServiceResponse(response.body().string(), response); + return Observable.just(clientResponse); + } catch (Throwable t) { + return Observable.error(t); + } + } + }); + } + + @Override + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, + List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKey(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); + } + + @Override + public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, + Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, + ServiceCallback serviceCallback) { + return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null, serviceCallback); + } + + @Override + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, + Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, (JsonWebKeyCurveName) null); + } + + @Override + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, + JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, + Map tags) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); + } + + @Override + public PagedList getCertificates(String vaultBaseUrl, Integer maxresults) { + return getCertificates(vaultBaseUrl, maxresults, false); + } + + @Override + public ServiceFuture> getCertificatesAsync(String vaultBaseUrl, Integer maxresults, + ListOperationCallback serviceCallback) { + return getCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); + } + + @Override + public Observable> getCertificatesAsync(String vaultBaseUrl, Integer maxresults) { + return getCertificatesAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public Observable>> getCertificatesWithServiceResponseAsync( + String vaultBaseUrl, Integer maxresults) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public PagedList getDeletedCertificates(String vaultBaseUrl, Integer maxresults) { + return getDeletedCertificates(vaultBaseUrl, maxresults, false); + } + + @Override + public ServiceFuture> getDeletedCertificatesAsync(String vaultBaseUrl, + Integer maxresults, ListOperationCallback serviceCallback) { + return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); + } + + @Override + public Observable> getDeletedCertificatesAsync(String vaultBaseUrl, + Integer maxresults) { + return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public Observable>> getDeletedCertificatesWithServiceResponseAsync( + String vaultBaseUrl, Integer maxresults) { + return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); + } + + } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java index d62c7ce..0e669f8 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java @@ -1,381 +1,381 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - - package com.microsoft.azure.keyvault.messagesecurity; - -import com.microsoft.azure.keyvault.cryptography.*; - -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.MediaType; -import okhttp3.Response; -import okhttp3.ResponseBody; - -import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.lang3.tuple.Triple; - -import java.io.IOException; -import java.security.MessageDigest; -import java.security.SecureRandom; -import java.security.NoSuchAlgorithmException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import okhttp3.internal.http.HttpHeaders; - -import okio.Buffer; - -/** - * Implements message security protocol. - * Encrypts requests & decrypts responses. - */ -public class HttpMessageSecurity { - private static final String AUTHENTICATE = "Authorization"; - private static final String BEARER_TOKEP_REFIX = "Bearer "; - - private boolean testMode = false; - private String clientSecurityToken; - private JsonWebKey clientSignatureKey; - private JsonWebKey clientEncryptionKey; - private JsonWebKey serverSignatureKey; - private JsonWebKey serverEncryptionKey; - - /** - * Constructor - * - * @param _clientSecurityToken - * pop or bearer authentication token. - * @param _clientSignatureKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _serverEncryptionKeyString - * string with server encryption key (public only) or null if not supported - * @param _serverSignatureKeyString - * string with server signing key (public only) or null if not supported - */ - public HttpMessageSecurity(String _clientSecurityToken, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString) throws IOException{ - - this.clientSecurityToken = _clientSecurityToken; - - if (_clientSignatureKeyString != null && !_clientSignatureKeyString.equals("")){ - this.clientSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_clientSignatureKeyString); - } - if (_serverSignatureKeyString != null && !_serverSignatureKeyString.equals("")){ - this.serverSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_serverSignatureKeyString); - } - if (_serverEncryptionKeyString != null && !_serverEncryptionKeyString.equals("")){ - this.serverEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_serverEncryptionKeyString); - } - - this.clientEncryptionKey = MessageSecurityHelper.GenerateJsonWebKey(); - } - - /** - * Constructor (tests only) - * - * @param _clientSecurityToken - * pop or bearer authentication token. - * @param _clientEncryptionKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _clientSignatureKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _serverEncryptionKeyString - * string with server encryption key (public only) or null if not supported - * @param _serverSignatureKeyString - * string with server signing key (public only) or null if not supported - * @param testMode - * true for test mode (uses 0 for timestamp) - */ - public HttpMessageSecurity(String _clientSecurityToken, String _clientEncryptionKeyString, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString, boolean testMode) throws IOException{ - this(_clientSecurityToken, _clientSignatureKeyString, _serverEncryptionKeyString, _serverSignatureKeyString); - this.testMode = testMode; - if (_clientEncryptionKeyString != null && !_clientEncryptionKeyString.equals("")){ - this.clientEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_clientEncryptionKeyString); - } - } - - /** - * Protects existing request. Replaces its body with encrypted version. - * - * @param request - * existing request. - * - * @return - * new request with encrypted body if supported or existing request. - */ - public Request protectRequest(Request request) throws IOException { - try{ - Request result = request.newBuilder().header(AUTHENTICATE, BEARER_TOKEP_REFIX + clientSecurityToken).build(); - - if(!supportsProtection()) { - return result; - } - - Buffer buffer = new Buffer(); - request.body().writeTo(buffer); - String currentbody = buffer.readUtf8(); - - if (currentbody == null || currentbody.length() == 0){ - return result; - } - - JsonWebKey clientPublicEncryptionKey = MessageSecurityHelper.GetJwkWithPublicKeyOnly(clientEncryptionKey); - - String payload = currentbody.substring(0, currentbody.length() - 1) + ",\"rek\":{\"jwk\":" + clientPublicEncryptionKey.toString() + "}}"; - - JWEObject jweObject = protectPayload(payload); - - JWSHeader jwsHeader = new JWSHeader("RS256", - clientSignatureKey.kid(), - clientSecurityToken, - getCurrentTimestamp(), - "PoP", - null); - - String jwsHeaderJsonb64 = MessageSecurityHelper.stringToBase64Url(jwsHeader.serialize()); - String protectedPayload = MessageSecurityHelper.stringToBase64Url(jweObject.serialize()); - byte[] data = (jwsHeaderJsonb64 + "." + protectedPayload).getBytes(); - - RsaKey clientSignatureRsaKey = new RsaKey(clientSignatureKey.kid(), clientSignatureKey.toRSA(true)); - Pair signature = clientSignatureRsaKey.signAsync(getSha256(data), "RS256").get(); - - JWSObject jwsObject = new JWSObject(jwsHeader, - protectedPayload, - MessageSecurityHelper.bytesToBase64Url(signature.getKey())); - - RequestBody body = RequestBody.create(MediaType.parse("application/jose+json"), jwsObject.serialize()); - - return result.newBuilder().method(request.method(), body).build(); - } catch (ExecutionException e){ - // unexpected; - return null; - } catch (InterruptedException e){ - // unexpected; - return null; - } catch (NoSuchAlgorithmException e){ - // unexpected; - return null; - } - } - - /** - * Unprotects response if needed. Replaces its body with unencrypted version. - * - * @param response - * server response. - * - * @return - * new response with unencrypted body if supported or existing response. - */ - public Response unprotectResponse(Response response) throws IOException{ - try{ - if (!supportsProtection() || !HttpHeaders.hasBody(response)){ - return response; - } - - if (!response.header("content-type").toLowerCase().contains("application/jose+json")){ - return response; - } - - JWSObject jwsObject = JWSObject.deserialize(response.body().string()); - JWSHeader jwsHeader = jwsObject.jwsHeader(); - - if(!jwsHeader.kid().equals(serverSignatureKey.kid()) || !jwsHeader.alg().equals("RS256")){ - throw new IOException("Invalid protected response"); - } - - byte[] data = (jwsObject.original_protected() + "." + jwsObject.payload()).getBytes(); - byte[] signature = MessageSecurityHelper.base64UrltoByteArray(jwsObject.signature()); - - RsaKey serverSignatureRsaKey = new RsaKey(serverSignatureKey.kid(), serverSignatureKey.toRSA(false)); - boolean signed = serverSignatureRsaKey.verifyAsync(getSha256(data), signature, "RS256").get(); - if (!signed){ - throw new IOException("Wrong signature."); - } - - String decrypted = unprotectPayload(jwsObject.payload()); - - MediaType contentType = response.body().contentType(); - ResponseBody body = ResponseBody.create(contentType, decrypted); - return response.newBuilder().body(body).build(); - } catch (ExecutionException e){ - // unexpected; - return null; - } catch (InterruptedException e){ - // unexpected; - return null; - } catch (NoSuchAlgorithmException e){ - // unexpected; - return null; - } - } - - /** - * Return current timestamp. Returns always 0 for tests. - * - * @return - * current timestamp or 0 for test mode. - */ - private long getCurrentTimestamp(){ - if (testMode){ - return 0; - } else { - return System.currentTimeMillis() / 1000; - } - } - - /** - * Check if HttmMessageSecurity has all required keys. - * - * @return - * true if there is client signature key and two server keys. - */ - private boolean supportsProtection(){ - return this.clientSignatureKey != null && - this.serverSignatureKey != null && - this.serverEncryptionKey != null; - } - - - /** - * Encrypt provided payload and return proper JWEObject. - * - * @param payload - * string to be encrypted. - * - * @return - * JWEObject with encrypted payload. - */ - private JWEObject protectPayload(String payload) throws IOException{ - try{ - JWEHeader jweHeader = new JWEHeader("RSA-OAEP", serverEncryptionKey.kid(), "A128CBC-HS256"); - - byte[] aesKeyBytes = generateAesKey(); - - SymmetricKey aesKey = new SymmetricKey(UUID.randomUUID().toString(), aesKeyBytes); - - byte[] iv = generateAesIv(); - - RsaKey serverEncryptionRsaKey = new RsaKey(serverEncryptionKey.kid(), serverEncryptionKey.toRSA(false)); - Triple encrypted_key = serverEncryptionRsaKey.encryptAsync(aesKeyBytes, null, null, "RSA-OAEP").get(); - - Triple cipher = aesKey.encryptAsync( - payload.getBytes(), - iv, - MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()).getBytes(), - "A128CBC-HS256").get(); - - JWEObject jweObject = new JWEObject(jweHeader, - MessageSecurityHelper.bytesToBase64Url((!testMode) ? encrypted_key.getLeft() : "key".getBytes()), - MessageSecurityHelper.bytesToBase64Url(iv), - MessageSecurityHelper.bytesToBase64Url(cipher.getLeft()), - MessageSecurityHelper.bytesToBase64Url(cipher.getMiddle())); - - return jweObject; - } catch (ExecutionException e){ - // unexpected; - return null; - } catch (InterruptedException e){ - // unexpected; - return null; - } catch (NoSuchAlgorithmException e){ - // unexpected; - return null; - } - } - - /** - * Unencrypt encrypted payload. - * - * @param payload - * base64url serialized JWEObject. - * - * @return - * Unencrypted message. - */ - private String unprotectPayload(String payload) throws IOException { - try { - JWEObject jweObject = JWEObject.deserialize(MessageSecurityHelper.base64UrltoString(payload)); - JWEHeader jweHeader = jweObject.jweHeader(); - - if (!clientEncryptionKey.kid().equals(jweHeader.kid()) || - !jweHeader.alg().equals("RSA-OAEP") || - !jweHeader.enc().equals("A128CBC-HS256")) { - throw new IOException("Invalid protected response"); - } - - byte[] key = MessageSecurityHelper.base64UrltoByteArray(jweObject.encryptedKey()); - - RsaKey clientEncryptionRsaKey = new RsaKey(clientEncryptionKey.kid(), clientEncryptionKey.toRSA(true)); - byte[] aesKeyBytes = clientEncryptionRsaKey.decryptAsync(key, null, null, null, "RSA-OAEP").get(); - - SymmetricKey aesKey = new SymmetricKey(UUID.randomUUID().toString(), aesKeyBytes); - byte[] result = aesKey.decryptAsync(MessageSecurityHelper.base64UrltoByteArray(jweObject.cipherText()), - MessageSecurityHelper.base64UrltoByteArray(jweObject.iv()), - jweObject.original_protected().getBytes(), - MessageSecurityHelper.base64UrltoByteArray(jweObject.tag()), - "A128CBC-HS256").get(); - - return new String(result); - } catch (ExecutionException e){ - // unexpected; - return null; - } catch (InterruptedException e){ - // unexpected; - return null; - } catch (NoSuchAlgorithmException e){ - // unexpected; - return null; - } - } - - /** - * Get SHA256 hash for byte array. - * - * @param data - * byte array. - * - * @return - * byte array with sha256 hash. - */ - private byte[] getSha256(byte[] data) throws NoSuchAlgorithmException{ - MessageDigest digest = MessageDigest.getInstance("SHA-256"); - return digest.digest(data); - } - - /** - * Generates AES key. - * - * @return - * Random AES key or pre-defined value for test mode. - */ - private byte[] generateAesKey(){ - byte[] bytes = new byte[32]; - if (!testMode){ - SecureRandom random = new SecureRandom(); - random.nextBytes(bytes); - } else { - bytes = "TEST1234TEST1234TEST1234TEST1234".getBytes(); - } - return bytes; - } - - /** - * Generates initialization vector for AES encryption. - * - * @return - * Random IV or pre-defined value for test mode. - */ - private byte[] generateAesIv(){ - byte[] bytes = new byte[16]; - if (!testMode){ - SecureRandom random = new SecureRandom(); - random.nextBytes(bytes); - } else { - bytes = "TEST1234TEST1234".getBytes(); - } - return bytes; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + + package com.microsoft.azure.keyvault.messagesecurity; + +import com.microsoft.azure.keyvault.cryptography.*; + +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.MediaType; +import okhttp3.Response; +import okhttp3.ResponseBody; + +import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.lang3.tuple.Triple; + +import java.io.IOException; +import java.security.MessageDigest; +import java.security.SecureRandom; +import java.security.NoSuchAlgorithmException; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import okhttp3.internal.http.HttpHeaders; + +import okio.Buffer; + +/** + * Implements message security protocol. + * Encrypts requests & decrypts responses. + */ +public class HttpMessageSecurity { + private static final String AUTHENTICATE = "Authorization"; + private static final String BEARER_TOKEP_REFIX = "Bearer "; + + private boolean testMode = false; + private String clientSecurityToken; + private JsonWebKey clientSignatureKey; + private JsonWebKey clientEncryptionKey; + private JsonWebKey serverSignatureKey; + private JsonWebKey serverEncryptionKey; + + /** + * Constructor + * + * @param _clientSecurityToken + * pop or bearer authentication token. + * @param _clientSignatureKeyString + * string with client signing key (public + private parts) or null if not supported + * @param _serverEncryptionKeyString + * string with server encryption key (public only) or null if not supported + * @param _serverSignatureKeyString + * string with server signing key (public only) or null if not supported + */ + public HttpMessageSecurity(String _clientSecurityToken, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString) throws IOException{ + + this.clientSecurityToken = _clientSecurityToken; + + if (_clientSignatureKeyString != null && !_clientSignatureKeyString.equals("")){ + this.clientSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_clientSignatureKeyString); + } + if (_serverSignatureKeyString != null && !_serverSignatureKeyString.equals("")){ + this.serverSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_serverSignatureKeyString); + } + if (_serverEncryptionKeyString != null && !_serverEncryptionKeyString.equals("")){ + this.serverEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_serverEncryptionKeyString); + } + + this.clientEncryptionKey = MessageSecurityHelper.GenerateJsonWebKey(); + } + + /** + * Constructor (tests only) + * + * @param _clientSecurityToken + * pop or bearer authentication token. + * @param _clientEncryptionKeyString + * string with client signing key (public + private parts) or null if not supported + * @param _clientSignatureKeyString + * string with client signing key (public + private parts) or null if not supported + * @param _serverEncryptionKeyString + * string with server encryption key (public only) or null if not supported + * @param _serverSignatureKeyString + * string with server signing key (public only) or null if not supported + * @param testMode + * true for test mode (uses 0 for timestamp) + */ + public HttpMessageSecurity(String _clientSecurityToken, String _clientEncryptionKeyString, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString, boolean testMode) throws IOException{ + this(_clientSecurityToken, _clientSignatureKeyString, _serverEncryptionKeyString, _serverSignatureKeyString); + this.testMode = testMode; + if (_clientEncryptionKeyString != null && !_clientEncryptionKeyString.equals("")){ + this.clientEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_clientEncryptionKeyString); + } + } + + /** + * Protects existing request. Replaces its body with encrypted version. + * + * @param request + * existing request. + * + * @return + * new request with encrypted body if supported or existing request. + */ + public Request protectRequest(Request request) throws IOException { + try{ + Request result = request.newBuilder().header(AUTHENTICATE, BEARER_TOKEP_REFIX + clientSecurityToken).build(); + + if(!supportsProtection()) { + return result; + } + + Buffer buffer = new Buffer(); + request.body().writeTo(buffer); + String currentbody = buffer.readUtf8(); + + if (currentbody == null || currentbody.length() == 0){ + return result; + } + + JsonWebKey clientPublicEncryptionKey = MessageSecurityHelper.GetJwkWithPublicKeyOnly(clientEncryptionKey); + + String payload = currentbody.substring(0, currentbody.length() - 1) + ",\"rek\":{\"jwk\":" + clientPublicEncryptionKey.toString() + "}}"; + + JWEObject jweObject = protectPayload(payload); + + JWSHeader jwsHeader = new JWSHeader("RS256", + clientSignatureKey.kid(), + clientSecurityToken, + getCurrentTimestamp(), + "PoP", + null); + + String jwsHeaderJsonb64 = MessageSecurityHelper.stringToBase64Url(jwsHeader.serialize()); + String protectedPayload = MessageSecurityHelper.stringToBase64Url(jweObject.serialize()); + byte[] data = (jwsHeaderJsonb64 + "." + protectedPayload).getBytes(); + + RsaKey clientSignatureRsaKey = new RsaKey(clientSignatureKey.kid(), clientSignatureKey.toRSA(true)); + Pair signature = clientSignatureRsaKey.signAsync(getSha256(data), "RS256").get(); + + JWSObject jwsObject = new JWSObject(jwsHeader, + protectedPayload, + MessageSecurityHelper.bytesToBase64Url(signature.getKey())); + + RequestBody body = RequestBody.create(MediaType.parse("application/jose+json"), jwsObject.serialize()); + + return result.newBuilder().method(request.method(), body).build(); + } catch (ExecutionException e){ + // unexpected; + return null; + } catch (InterruptedException e){ + // unexpected; + return null; + } catch (NoSuchAlgorithmException e){ + // unexpected; + return null; + } + } + + /** + * Unprotects response if needed. Replaces its body with unencrypted version. + * + * @param response + * server response. + * + * @return + * new response with unencrypted body if supported or existing response. + */ + public Response unprotectResponse(Response response) throws IOException{ + try{ + if (!supportsProtection() || !HttpHeaders.hasBody(response)){ + return response; + } + + if (!response.header("content-type").toLowerCase().contains("application/jose+json")){ + return response; + } + + JWSObject jwsObject = JWSObject.deserialize(response.body().string()); + JWSHeader jwsHeader = jwsObject.jwsHeader(); + + if(!jwsHeader.kid().equals(serverSignatureKey.kid()) || !jwsHeader.alg().equals("RS256")){ + throw new IOException("Invalid protected response"); + } + + byte[] data = (jwsObject.original_protected() + "." + jwsObject.payload()).getBytes(); + byte[] signature = MessageSecurityHelper.base64UrltoByteArray(jwsObject.signature()); + + RsaKey serverSignatureRsaKey = new RsaKey(serverSignatureKey.kid(), serverSignatureKey.toRSA(false)); + boolean signed = serverSignatureRsaKey.verifyAsync(getSha256(data), signature, "RS256").get(); + if (!signed){ + throw new IOException("Wrong signature."); + } + + String decrypted = unprotectPayload(jwsObject.payload()); + + MediaType contentType = response.body().contentType(); + ResponseBody body = ResponseBody.create(contentType, decrypted); + return response.newBuilder().body(body).build(); + } catch (ExecutionException e){ + // unexpected; + return null; + } catch (InterruptedException e){ + // unexpected; + return null; + } catch (NoSuchAlgorithmException e){ + // unexpected; + return null; + } + } + + /** + * Return current timestamp. Returns always 0 for tests. + * + * @return + * current timestamp or 0 for test mode. + */ + private long getCurrentTimestamp(){ + if (testMode){ + return 0; + } else { + return System.currentTimeMillis() / 1000; + } + } + + /** + * Check if HttmMessageSecurity has all required keys. + * + * @return + * true if there is client signature key and two server keys. + */ + private boolean supportsProtection(){ + return this.clientSignatureKey != null && + this.serverSignatureKey != null && + this.serverEncryptionKey != null; + } + + + /** + * Encrypt provided payload and return proper JWEObject. + * + * @param payload + * string to be encrypted. + * + * @return + * JWEObject with encrypted payload. + */ + private JWEObject protectPayload(String payload) throws IOException{ + try{ + JWEHeader jweHeader = new JWEHeader("RSA-OAEP", serverEncryptionKey.kid(), "A128CBC-HS256"); + + byte[] aesKeyBytes = generateAesKey(); + + SymmetricKey aesKey = new SymmetricKey(UUID.randomUUID().toString(), aesKeyBytes); + + byte[] iv = generateAesIv(); + + RsaKey serverEncryptionRsaKey = new RsaKey(serverEncryptionKey.kid(), serverEncryptionKey.toRSA(false)); + Triple encrypted_key = serverEncryptionRsaKey.encryptAsync(aesKeyBytes, null, null, "RSA-OAEP").get(); + + Triple cipher = aesKey.encryptAsync( + payload.getBytes(), + iv, + MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()).getBytes(), + "A128CBC-HS256").get(); + + JWEObject jweObject = new JWEObject(jweHeader, + MessageSecurityHelper.bytesToBase64Url((!testMode) ? encrypted_key.getLeft() : "key".getBytes()), + MessageSecurityHelper.bytesToBase64Url(iv), + MessageSecurityHelper.bytesToBase64Url(cipher.getLeft()), + MessageSecurityHelper.bytesToBase64Url(cipher.getMiddle())); + + return jweObject; + } catch (ExecutionException e){ + // unexpected; + return null; + } catch (InterruptedException e){ + // unexpected; + return null; + } catch (NoSuchAlgorithmException e){ + // unexpected; + return null; + } + } + + /** + * Unencrypt encrypted payload. + * + * @param payload + * base64url serialized JWEObject. + * + * @return + * Unencrypted message. + */ + private String unprotectPayload(String payload) throws IOException { + try { + JWEObject jweObject = JWEObject.deserialize(MessageSecurityHelper.base64UrltoString(payload)); + JWEHeader jweHeader = jweObject.jweHeader(); + + if (!clientEncryptionKey.kid().equals(jweHeader.kid()) || + !jweHeader.alg().equals("RSA-OAEP") || + !jweHeader.enc().equals("A128CBC-HS256")) { + throw new IOException("Invalid protected response"); + } + + byte[] key = MessageSecurityHelper.base64UrltoByteArray(jweObject.encryptedKey()); + + RsaKey clientEncryptionRsaKey = new RsaKey(clientEncryptionKey.kid(), clientEncryptionKey.toRSA(true)); + byte[] aesKeyBytes = clientEncryptionRsaKey.decryptAsync(key, null, null, null, "RSA-OAEP").get(); + + SymmetricKey aesKey = new SymmetricKey(UUID.randomUUID().toString(), aesKeyBytes); + byte[] result = aesKey.decryptAsync(MessageSecurityHelper.base64UrltoByteArray(jweObject.cipherText()), + MessageSecurityHelper.base64UrltoByteArray(jweObject.iv()), + jweObject.original_protected().getBytes(), + MessageSecurityHelper.base64UrltoByteArray(jweObject.tag()), + "A128CBC-HS256").get(); + + return new String(result); + } catch (ExecutionException e){ + // unexpected; + return null; + } catch (InterruptedException e){ + // unexpected; + return null; + } catch (NoSuchAlgorithmException e){ + // unexpected; + return null; + } + } + + /** + * Get SHA256 hash for byte array. + * + * @param data + * byte array. + * + * @return + * byte array with sha256 hash. + */ + private byte[] getSha256(byte[] data) throws NoSuchAlgorithmException{ + MessageDigest digest = MessageDigest.getInstance("SHA-256"); + return digest.digest(data); + } + + /** + * Generates AES key. + * + * @return + * Random AES key or pre-defined value for test mode. + */ + private byte[] generateAesKey(){ + byte[] bytes = new byte[32]; + if (!testMode){ + SecureRandom random = new SecureRandom(); + random.nextBytes(bytes); + } else { + bytes = "TEST1234TEST1234TEST1234TEST1234".getBytes(); + } + return bytes; + } + + /** + * Generates initialization vector for AES encryption. + * + * @return + * Random IV or pre-defined value for test mode. + */ + private byte[] generateAesIv(){ + byte[] bytes = new byte[16]; + if (!testMode){ + SecureRandom random = new SecureRandom(); + random.nextBytes(bytes); + } else { + bytes = "TEST1234TEST1234".getBytes(); + } + return bytes; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java index 9272dce..962664b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java @@ -1,121 +1,121 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.messagesecurity; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; - -/** - * Json Web Encryption Header class. - */ -class JWEHeader { - - private String alg; - private String kid; - private String enc; - - /** - * Constructor. - */ - public JWEHeader(){ - - } - - /** - * Constructor. - * - * @param alg - * Encryption algorithm (for key). (Supported: RSA-OAEP) - * @param kid - * Key Id - * @param enc - * Encryption algorithm (for data). (Supported: A128CBC-HS256) - */ - public JWEHeader(String alg, String kid, String enc){ - this.alg = alg; - this.kid = kid; - this.enc = enc; - } - - /** - * Compare two JWEHeaders. - * - * @return - * true if JWEHeaders are identical. - */ - public boolean equals(JWEHeader other){ - return this.alg.equals(other.alg) && - this.kid.equals(other.kid) && - this.enc.equals(other.enc); - } - - /** - * Serialize JWEHeader to json string. - * - * @return - * Json string with serialized JWEHeader. - */ - public String serialize() throws JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(this); - } - - /** - * Construct JWEHeader from json string. - * - * @param json - * json string. - * - * @return - * Constructed JWEHeader - */ - public static JWEHeader deserialize(String json) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWEHeader.class); - } - - /** - * Construct JWEHeader from base64url string. - * - * @param base64 - * base64 url string. - * - * @return - * Constructed JWEHeader - */ - public static JWEHeader fromBase64String(String base64) throws IOException{ - String json = MessageSecurityHelper.base64UrltoString(base64); - return deserialize(json); - } - - /** - * Encryption algorithm (for key). (Supported: RSA-OAEP) - */ - @JsonProperty("alg") - public String alg() { - return alg; - } - - /** - * Key Id - */ - @JsonProperty("kid") - public String kid() { - return kid; - } - - /** - * Encryption algorithm (for data). (Supported: A128CBC-HS256) - */ - @JsonProperty("enc") - public String enc() { - return enc; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.messagesecurity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +/** + * Json Web Encryption Header class. + */ +class JWEHeader { + + private String alg; + private String kid; + private String enc; + + /** + * Constructor. + */ + public JWEHeader(){ + + } + + /** + * Constructor. + * + * @param alg + * Encryption algorithm (for key). (Supported: RSA-OAEP) + * @param kid + * Key Id + * @param enc + * Encryption algorithm (for data). (Supported: A128CBC-HS256) + */ + public JWEHeader(String alg, String kid, String enc){ + this.alg = alg; + this.kid = kid; + this.enc = enc; + } + + /** + * Compare two JWEHeaders. + * + * @return + * true if JWEHeaders are identical. + */ + public boolean equals(JWEHeader other){ + return this.alg.equals(other.alg) && + this.kid.equals(other.kid) && + this.enc.equals(other.enc); + } + + /** + * Serialize JWEHeader to json string. + * + * @return + * Json string with serialized JWEHeader. + */ + public String serialize() throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(this); + } + + /** + * Construct JWEHeader from json string. + * + * @param json + * json string. + * + * @return + * Constructed JWEHeader + */ + public static JWEHeader deserialize(String json) throws IOException{ + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json,JWEHeader.class); + } + + /** + * Construct JWEHeader from base64url string. + * + * @param base64 + * base64 url string. + * + * @return + * Constructed JWEHeader + */ + public static JWEHeader fromBase64String(String base64) throws IOException{ + String json = MessageSecurityHelper.base64UrltoString(base64); + return deserialize(json); + } + + /** + * Encryption algorithm (for key). (Supported: RSA-OAEP) + */ + @JsonProperty("alg") + public String alg() { + return alg; + } + + /** + * Key Id + */ + @JsonProperty("kid") + public String kid() { + return kid; + } + + /** + * Encryption algorithm (for data). (Supported: A128CBC-HS256) + */ + @JsonProperty("enc") + public String enc() { + return enc; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java index a81e267..085d670 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java @@ -1,169 +1,169 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.messagesecurity; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; - -/** - * Json Web Encryption object class. - */ -class JWEObject { - private JWEHeader jweHeader; - private String original_protected; - private String encryptedKey; - private String iv; - private String cipherText; - private String tag; - - /** - * Constructor. - * - * @param jweHeader - * Corresponding jweHeader object. - * @param encryptedKey - * base64url encrypted key. - * @param iv - * base64url iv. - * @param cipherText - * base64url encrypted data. - * @param tag - * base64url authorization tag. - */ - public JWEObject(JWEHeader jweHeader, String encryptedKey, String iv, String cipherText, String tag){ - this.jweHeader = jweHeader; - this.encryptedKey = encryptedKey; - this.iv = iv; - this.cipherText = cipherText; - this.tag = tag; - } - - /** - * Constructor. - * - * @param jweHeaderB64 - * base64url json with serialized jweHeader. - * @param encryptedKey - * base64url encrypted key. - * @param iv - * base64url iv. - * @param cipherText - * base64url encrypted data. - * @param tag - * base64url authorization tag. - */ - @JsonCreator - public JWEObject(@JsonProperty("protected") String jweHeaderB64, - @JsonProperty("encrypted_key") String encryptedKey, - @JsonProperty("iv") String iv, - @JsonProperty("ciphertext") String cipherText, - @JsonProperty("tag") String tag) throws Exception{ - this.jweHeader = JWEHeader.fromBase64String(jweHeaderB64); - this.original_protected = jweHeaderB64; - this.encryptedKey = encryptedKey; - this.iv = iv; - this.cipherText = cipherText; - this.tag = tag; - } - - /** - * Compare two JweObject. - * - * @return - * true if JWEObject are identical. - */ - public boolean equals(JWEObject other){ - return jweHeader.equals(other.jweHeader) && - encryptedKey.equals(other.encryptedKey) && - iv.equals(other.iv) && - cipherText.equals(other.cipherText) && - tag.equals(other.tag); - } - - /** - * Serialize JWEObject to json string. - * - * @return - * Json string with serialized JWEObject. - */ - public String serialize() throws JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(this); - } - - /** - * Construct JWEObject from json string. - * - * @param json - * json string. - * - * @return - * Constructed JWEObject - */ - public static JWEObject deserialize(String json) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWEObject.class); - } - - /** - * JWEHeader object. - */ - public JWEHeader jweHeader(){ - return jweHeader; - } - - /** - * base64url json with serialized jweHeader. - */ - @JsonProperty("protected") - public String protectedB64() throws Exception{ - return MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()); - } - - /** - * Original base64url with serialized jweHeader (when constructed from json string). - */ - public String original_protected(){ - return original_protected; - } - - /** - * base64url encrypted key. - */ - @JsonProperty("encrypted_key") - public String encryptedKey() { - return encryptedKey; - } - - /** - * base64url iv. - */ - @JsonProperty("iv") - public String iv() { - return iv; - } - - /** - * base64url encrypted text. - */ - @JsonProperty("ciphertext") - public String cipherText() { - return cipherText; - } - - /** - * base64url tag. - */ - @JsonProperty("tag") - public String tag() { - return tag; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.messagesecurity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +/** + * Json Web Encryption object class. + */ +class JWEObject { + private JWEHeader jweHeader; + private String original_protected; + private String encryptedKey; + private String iv; + private String cipherText; + private String tag; + + /** + * Constructor. + * + * @param jweHeader + * Corresponding jweHeader object. + * @param encryptedKey + * base64url encrypted key. + * @param iv + * base64url iv. + * @param cipherText + * base64url encrypted data. + * @param tag + * base64url authorization tag. + */ + public JWEObject(JWEHeader jweHeader, String encryptedKey, String iv, String cipherText, String tag){ + this.jweHeader = jweHeader; + this.encryptedKey = encryptedKey; + this.iv = iv; + this.cipherText = cipherText; + this.tag = tag; + } + + /** + * Constructor. + * + * @param jweHeaderB64 + * base64url json with serialized jweHeader. + * @param encryptedKey + * base64url encrypted key. + * @param iv + * base64url iv. + * @param cipherText + * base64url encrypted data. + * @param tag + * base64url authorization tag. + */ + @JsonCreator + public JWEObject(@JsonProperty("protected") String jweHeaderB64, + @JsonProperty("encrypted_key") String encryptedKey, + @JsonProperty("iv") String iv, + @JsonProperty("ciphertext") String cipherText, + @JsonProperty("tag") String tag) throws Exception{ + this.jweHeader = JWEHeader.fromBase64String(jweHeaderB64); + this.original_protected = jweHeaderB64; + this.encryptedKey = encryptedKey; + this.iv = iv; + this.cipherText = cipherText; + this.tag = tag; + } + + /** + * Compare two JweObject. + * + * @return + * true if JWEObject are identical. + */ + public boolean equals(JWEObject other){ + return jweHeader.equals(other.jweHeader) && + encryptedKey.equals(other.encryptedKey) && + iv.equals(other.iv) && + cipherText.equals(other.cipherText) && + tag.equals(other.tag); + } + + /** + * Serialize JWEObject to json string. + * + * @return + * Json string with serialized JWEObject. + */ + public String serialize() throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(this); + } + + /** + * Construct JWEObject from json string. + * + * @param json + * json string. + * + * @return + * Constructed JWEObject + */ + public static JWEObject deserialize(String json) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json,JWEObject.class); + } + + /** + * JWEHeader object. + */ + public JWEHeader jweHeader(){ + return jweHeader; + } + + /** + * base64url json with serialized jweHeader. + */ + @JsonProperty("protected") + public String protectedB64() throws Exception{ + return MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()); + } + + /** + * Original base64url with serialized jweHeader (when constructed from json string). + */ + public String original_protected(){ + return original_protected; + } + + /** + * base64url encrypted key. + */ + @JsonProperty("encrypted_key") + public String encryptedKey() { + return encryptedKey; + } + + /** + * base64url iv. + */ + @JsonProperty("iv") + public String iv() { + return iv; + } + + /** + * base64url encrypted text. + */ + @JsonProperty("ciphertext") + public String cipherText() { + return cipherText; + } + + /** + * base64url tag. + */ + @JsonProperty("tag") + public String tag() { + return tag; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java index 573e51d..9dd29a5 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java @@ -1,159 +1,159 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.messagesecurity; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; - -/** - * Json Web Signature header class. - */ -class JWSHeader { - - private String alg; - private String kid; - private String at; - private long ts; - private String p; - private String typ; - - /** - * Constructor. - */ - public JWSHeader(){} - - /** - * Constructor. - * - * @param alg - * signing algorithm (RS256). - * @param kid - * signing key id. - * @param at - * authorization token. - * @param ts - * timestamp. - * @param typ - * authorization type (PoP). - * @param p - * p - */ - public JWSHeader(String alg, String kid, String at, long ts, String typ, String p){ - this.alg = alg; - this.kid = kid; - this.at = at; - this.ts = ts; - this.p = p; - this.typ = typ; - } - - /** - * Compare two JwsHeader. - * - * @return - * true if JWSHeaders are identical. - */ - public boolean equals(JWSHeader other){ - return this.alg.equals(other.alg) && - this.kid.equals(other.kid) && - this.at.equals(other.at) && - this.ts == other.ts && - this.p.equals(other.p) && - this.typ.equals(other.typ); - } - - /** - * Serialize JWSHeader to json string. - * - * @return - * Json string with serialized JWSHeader. - */ - public String serialize() throws JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(this); - } - - /** - * Construct JWSHeader from json string. - * - * @param json - * json string. - * - * @return - * Constructed JWSHeader - */ - public static JWSHeader deserialize(String json) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSHeader.class); - } - - /** - * Construct JWSHeader from base64url string. - * - * @param base64 - * base64 url string. - * - * @return - * Constructed JWSHeader - */ - public static JWSHeader fromBase64String(String base64) throws IOException { - String json = MessageSecurityHelper.base64UrltoString(base64); - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSHeader.class); - } - - /** - * signing algorithm (RS256). - */ - @JsonProperty("alg") - public String alg() { - return alg; - } - - /** - * signing key id. - */ - @JsonProperty("kid") - public String kid() { - return kid; - } - - /** - * authorization token. - */ - @JsonProperty("at") - public String at() { - return at; - } - - /** - * timestamp. - */ - @JsonProperty("ts") - public long ts() { - return ts; - } - - /** - * authorization type (PoP). - */ - @JsonProperty("typ") - public String typ() { - return typ; - } - - /** - * p - */ - @JsonProperty("p") - public String p() { - return p; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.messagesecurity; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +/** + * Json Web Signature header class. + */ +class JWSHeader { + + private String alg; + private String kid; + private String at; + private long ts; + private String p; + private String typ; + + /** + * Constructor. + */ + public JWSHeader(){} + + /** + * Constructor. + * + * @param alg + * signing algorithm (RS256). + * @param kid + * signing key id. + * @param at + * authorization token. + * @param ts + * timestamp. + * @param typ + * authorization type (PoP). + * @param p + * p + */ + public JWSHeader(String alg, String kid, String at, long ts, String typ, String p){ + this.alg = alg; + this.kid = kid; + this.at = at; + this.ts = ts; + this.p = p; + this.typ = typ; + } + + /** + * Compare two JwsHeader. + * + * @return + * true if JWSHeaders are identical. + */ + public boolean equals(JWSHeader other){ + return this.alg.equals(other.alg) && + this.kid.equals(other.kid) && + this.at.equals(other.at) && + this.ts == other.ts && + this.p.equals(other.p) && + this.typ.equals(other.typ); + } + + /** + * Serialize JWSHeader to json string. + * + * @return + * Json string with serialized JWSHeader. + */ + public String serialize() throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(this); + } + + /** + * Construct JWSHeader from json string. + * + * @param json + * json string. + * + * @return + * Constructed JWSHeader + */ + public static JWSHeader deserialize(String json) throws IOException{ + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json,JWSHeader.class); + } + + /** + * Construct JWSHeader from base64url string. + * + * @param base64 + * base64 url string. + * + * @return + * Constructed JWSHeader + */ + public static JWSHeader fromBase64String(String base64) throws IOException { + String json = MessageSecurityHelper.base64UrltoString(base64); + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json,JWSHeader.class); + } + + /** + * signing algorithm (RS256). + */ + @JsonProperty("alg") + public String alg() { + return alg; + } + + /** + * signing key id. + */ + @JsonProperty("kid") + public String kid() { + return kid; + } + + /** + * authorization token. + */ + @JsonProperty("at") + public String at() { + return at; + } + + /** + * timestamp. + */ + @JsonProperty("ts") + public long ts() { + return ts; + } + + /** + * authorization type (PoP). + */ + @JsonProperty("typ") + public String typ() { + return typ; + } + + /** + * p + */ + @JsonProperty("p") + public String p() { + return p; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java index b6258bf..a175170 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java @@ -1,136 +1,136 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.messagesecurity; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; - -/** - * Json Web Signature object class. - */ -class JWSObject { - private JWSHeader jwsHeader; - private String original_protected; - private String payload; - private String signature; - - /** - * Constructor. - * - * @param JWSHeader - * JWSHeader. - * @param payload - * base64url protected payload (JWEObject). - * @param signature - * base64url signature for (protected + "." + payload) data. - */ - public JWSObject(JWSHeader jwsHeader, String payload, String signature){ - this.jwsHeader = jwsHeader; - this.payload = payload; - this.signature = signature; - } - - /** - * Constructor. - * - * @param jwsHeaderB64 - * base64 json string with JWSHeader. - * @param payload - * base64url protected payload (JWEObject). - * @param signature - * base64url signature for (protected + "." + payload) data. - */ - @JsonCreator - public JWSObject( - @JsonProperty("protected") String jwsHeaderB64, - @JsonProperty("payload") String payload, - @JsonProperty("signature") String signature) throws Exception{ - this.jwsHeader = JWSHeader.fromBase64String(jwsHeaderB64); - this.original_protected = jwsHeaderB64; - this.payload = payload; - this.signature = signature; - } - - /** - * Compare two JWSObject. - * - * @return - * true if JWSObjects are identical. - */ - public boolean equals(JWSObject other){ - return this.payload.equals(other.payload) && - this.jwsHeader.equals(other.jwsHeader) && - this.signature.equals(other.signature); - } - - /** - * Serialize JWSObject to json string. - * - * @return - * Json string with serialized JWSObject. - */ - public String serialize() throws JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.writeValueAsString(this); - } - - /** - * Construct JWSObject from json string. - * - * @param json - * json string. - * - * @return - * Constructed JWSObject - */ - public static JWSObject deserialize(String json) throws IOException { - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSObject.class); - } - - /** - * Retrieve JWSHeader object. - */ - public JWSHeader jwsHeader(){ - return jwsHeader; - } - - /** - * Original base64url with serialized jwsHeader (when constructed from json string). - */ - public String original_protected(){ - return original_protected; - } - - /** - * base64 json string with JWSHeader. - */ - @JsonProperty("protected") - public String protectedB64() throws Exception { - return MessageSecurityHelper.stringToBase64Url(jwsHeader.serialize()); - } - - /** - * base64url protected payload (JWEObject). - */ - @JsonProperty("payload") - public String payload() { - return payload; - } - - /** - * base64url signature for (protected + "." + payload) data. - */ - @JsonProperty("signature") - public String signature() { - return signature; - } -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.messagesecurity; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +/** + * Json Web Signature object class. + */ +class JWSObject { + private JWSHeader jwsHeader; + private String original_protected; + private String payload; + private String signature; + + /** + * Constructor. + * + * @param JWSHeader + * JWSHeader. + * @param payload + * base64url protected payload (JWEObject). + * @param signature + * base64url signature for (protected + "." + payload) data. + */ + public JWSObject(JWSHeader jwsHeader, String payload, String signature){ + this.jwsHeader = jwsHeader; + this.payload = payload; + this.signature = signature; + } + + /** + * Constructor. + * + * @param jwsHeaderB64 + * base64 json string with JWSHeader. + * @param payload + * base64url protected payload (JWEObject). + * @param signature + * base64url signature for (protected + "." + payload) data. + */ + @JsonCreator + public JWSObject( + @JsonProperty("protected") String jwsHeaderB64, + @JsonProperty("payload") String payload, + @JsonProperty("signature") String signature) throws Exception{ + this.jwsHeader = JWSHeader.fromBase64String(jwsHeaderB64); + this.original_protected = jwsHeaderB64; + this.payload = payload; + this.signature = signature; + } + + /** + * Compare two JWSObject. + * + * @return + * true if JWSObjects are identical. + */ + public boolean equals(JWSObject other){ + return this.payload.equals(other.payload) && + this.jwsHeader.equals(other.jwsHeader) && + this.signature.equals(other.signature); + } + + /** + * Serialize JWSObject to json string. + * + * @return + * Json string with serialized JWSObject. + */ + public String serialize() throws JsonProcessingException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.writeValueAsString(this); + } + + /** + * Construct JWSObject from json string. + * + * @param json + * json string. + * + * @return + * Constructed JWSObject + */ + public static JWSObject deserialize(String json) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(json,JWSObject.class); + } + + /** + * Retrieve JWSHeader object. + */ + public JWSHeader jwsHeader(){ + return jwsHeader; + } + + /** + * Original base64url with serialized jwsHeader (when constructed from json string). + */ + public String original_protected(){ + return original_protected; + } + + /** + * base64 json string with JWSHeader. + */ + @JsonProperty("protected") + public String protectedB64() throws Exception { + return MessageSecurityHelper.stringToBase64Url(jwsHeader.serialize()); + } + + /** + * base64url protected payload (JWEObject). + */ + @JsonProperty("payload") + public String payload() { + return payload; + } + + /** + * base64url signature for (protected + "." + payload) data. + */ + @JsonProperty("signature") + public String signature() { + return signature; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java index 8d27ba9..c3675ca 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java @@ -1,137 +1,137 @@ -/** - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for - * license information. - */ - -package com.microsoft.azure.keyvault.messagesecurity; - -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; - -import org.apache.commons.codec.binary.Base64; - -import java.security.NoSuchAlgorithmException; -import java.util.Arrays; -import java.util.UUID; - -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; - -import java.security.KeyPair; -import java.security.KeyPairGenerator; - -/** - * Implements helper methods for message security. - */ -class MessageSecurityHelper { - /** - * Convert base64Url string to bytes array. - * - * @param base64url - * Base64Url string. - * - * @returns - * Decoded bytes array. - */ - public static byte[] base64UrltoByteArray(String base64url){ - return Base64.decodeBase64(base64url.replace('-', '+').replace('_', '/')); - } - - /** - * Convert base64Url string to String. - * - * @param base64url - * Base64Url string. - * - * @returns - * Decoded string. - */ - public static String base64UrltoString(String base64url){ - return new String(base64UrltoByteArray(base64url)); - } - - /** - * Convert bytes array to Base64Url string. - * - * @param bytes - * bytes array. - * - * @returns - * Encoded string. - */ - public static String bytesToBase64Url(byte[] bytes){ - String result = (new String(Base64.encodeBase64(bytes))) - .replace("=", "") - .replace("\\", "") - .replace('+', '-') - .replace('/', '_'); - return result; - } - - /** - * Convert bytes array to Base64Url string. - * - * @param str - * string. - * - * @returns - * Encoded string. - */ - public static String stringToBase64Url(String str){ - return bytesToBase64Url(str.getBytes()); - } - - /** - * Convert serialized JsonWebKey string to JsonWebKey object. - * - * @param jwkString - * serialized JsonWebKey. - * - * @returns - * JsonWebKey object. - */ - public static JsonWebKey JsonWebKeyFromString(String jwkString) throws IOException{ - ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(jwkString, JsonWebKey.class); - } - - /** - * Generates new JsonWebKey with random KeyID. - * - * @returns - * JsonWebKey object. - */ - public static JsonWebKey GenerateJsonWebKey(){ - try{ - final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); - generator.initialize(2048); - KeyPair clientRsaKeyPair = generator.generateKeyPair(); - JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair); - result.withKid(UUID.randomUUID().toString()); - return result; - } - catch (NoSuchAlgorithmException e){ - // Unexpected. Should never be thrown. - return null; - } - } - - /** - * Converts JsonWebKey with private key to JsonWebKey with public key only. - * - * @param jwk - * JsonWebKey with private key. - * @returns - * JsonWebKey object with public key only. - */ - public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){ - KeyPair publicOnly = jwk.toRSA(false); - JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly); - jsonkeyPublic.withKid(jwk.kid()); - jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY)); - return jsonkeyPublic; - } - -} +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + +package com.microsoft.azure.keyvault.messagesecurity; + +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; + +import org.apache.commons.codec.binary.Base64; + +import java.security.NoSuchAlgorithmException; +import java.util.Arrays; +import java.util.UUID; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; + +import java.security.KeyPair; +import java.security.KeyPairGenerator; + +/** + * Implements helper methods for message security. + */ +class MessageSecurityHelper { + /** + * Convert base64Url string to bytes array. + * + * @param base64url + * Base64Url string. + * + * @returns + * Decoded bytes array. + */ + public static byte[] base64UrltoByteArray(String base64url){ + return Base64.decodeBase64(base64url.replace('-', '+').replace('_', '/')); + } + + /** + * Convert base64Url string to String. + * + * @param base64url + * Base64Url string. + * + * @returns + * Decoded string. + */ + public static String base64UrltoString(String base64url){ + return new String(base64UrltoByteArray(base64url)); + } + + /** + * Convert bytes array to Base64Url string. + * + * @param bytes + * bytes array. + * + * @returns + * Encoded string. + */ + public static String bytesToBase64Url(byte[] bytes){ + String result = (new String(Base64.encodeBase64(bytes))) + .replace("=", "") + .replace("\\", "") + .replace('+', '-') + .replace('/', '_'); + return result; + } + + /** + * Convert bytes array to Base64Url string. + * + * @param str + * string. + * + * @returns + * Encoded string. + */ + public static String stringToBase64Url(String str){ + return bytesToBase64Url(str.getBytes()); + } + + /** + * Convert serialized JsonWebKey string to JsonWebKey object. + * + * @param jwkString + * serialized JsonWebKey. + * + * @returns + * JsonWebKey object. + */ + public static JsonWebKey JsonWebKeyFromString(String jwkString) throws IOException{ + ObjectMapper mapper = new ObjectMapper(); + return mapper.readValue(jwkString, JsonWebKey.class); + } + + /** + * Generates new JsonWebKey with random KeyID. + * + * @returns + * JsonWebKey object. + */ + public static JsonWebKey GenerateJsonWebKey(){ + try{ + final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); + generator.initialize(2048); + KeyPair clientRsaKeyPair = generator.generateKeyPair(); + JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair); + result.withKid(UUID.randomUUID().toString()); + return result; + } + catch (NoSuchAlgorithmException e){ + // Unexpected. Should never be thrown. + return null; + } + } + + /** + * Converts JsonWebKey with private key to JsonWebKey with public key only. + * + * @param jwk + * JsonWebKey with private key. + * @returns + * JsonWebKey object with public key only. + */ + public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){ + KeyPair publicOnly = jwk.toRSA(false); + JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly); + jsonkeyPublic.withKid(jwk.kid()); + jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY)); + return jsonkeyPublic; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Action.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Action.java index 9037841..e087781 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Action.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Action.java @@ -1,44 +1,44 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The action that will be executed. - */ -public class Action { - /** - * The type of the action. Possible values include: 'EmailContacts', - * 'AutoRenew'. - */ - @JsonProperty(value = "action_type") - private ActionType actionType; - - /** - * Get the actionType value. - * - * @return the actionType value - */ - public ActionType actionType() { - return this.actionType; - } - - /** - * Set the actionType value. - * - * @param actionType the actionType value to set - * @return the Action object itself. - */ - public Action withActionType(ActionType actionType) { - this.actionType = actionType; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The action that will be executed. + */ +public class Action { + /** + * The type of the action. Possible values include: 'EmailContacts', + * 'AutoRenew'. + */ + @JsonProperty(value = "action_type") + private ActionType actionType; + + /** + * Get the actionType value. + * + * @return the actionType value + */ + public ActionType actionType() { + return this.actionType; + } + + /** + * Set the actionType value. + * + * @param actionType the actionType value to set + * @return the Action object itself. + */ + public Action withActionType(ActionType actionType) { + this.actionType = actionType; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/ActionType.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/ActionType.java index 872cf84..1eed810 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/ActionType.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/ActionType.java @@ -1,53 +1,53 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonValue; - -/** - * Defines values for ActionType. - */ -public enum ActionType { - /** Enum value EmailContacts. */ - EMAIL_CONTACTS("EmailContacts"), - - /** Enum value AutoRenew. */ - AUTO_RENEW("AutoRenew"); - - /** The actual serialized value for a ActionType instance. */ - private String value; - - ActionType(String value) { - this.value = value; - } - - /** - * Parses a serialized value to a ActionType instance. - * - * @param value the serialized value to parse. - * @return the parsed ActionType object, or null if unable to parse. - */ - @JsonCreator - public static ActionType fromString(String value) { - ActionType[] items = ActionType.values(); - for (ActionType item : items) { - if (item.toString().equalsIgnoreCase(value)) { - return item; - } - } - return null; - } - - @JsonValue - @Override - public String toString() { - return this.value; - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines values for ActionType. + */ +public enum ActionType { + /** Enum value EmailContacts. */ + EMAIL_CONTACTS("EmailContacts"), + + /** Enum value AutoRenew. */ + AUTO_RENEW("AutoRenew"); + + /** The actual serialized value for a ActionType instance. */ + private String value; + + ActionType(String value) { + this.value = value; + } + + /** + * Parses a serialized value to a ActionType instance. + * + * @param value the serialized value to parse. + * @return the parsed ActionType object, or null if unable to parse. + */ + @JsonCreator + public static ActionType fromString(String value) { + ActionType[] items = ActionType.values(); + for (ActionType item : items) { + if (item.toString().equalsIgnoreCase(value)) { + return item; + } + } + return null; + } + + @JsonValue + @Override + public String toString() { + return this.value; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/AdministratorDetails.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/AdministratorDetails.java index 053adb9..e1ae21d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/AdministratorDetails.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/AdministratorDetails.java @@ -1,121 +1,121 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Details of the organization administrator of the certificate issuer. - */ -public class AdministratorDetails { - /** - * First name. - */ - @JsonProperty(value = "first_name") - private String firstName; - - /** - * Last name. - */ - @JsonProperty(value = "last_name") - private String lastName; - - /** - * Email addresss. - */ - @JsonProperty(value = "email") - private String emailAddress; - - /** - * Phone number. - */ - @JsonProperty(value = "phone") - private String phone; - - /** - * Get the firstName value. - * - * @return the firstName value - */ - public String firstName() { - return this.firstName; - } - - /** - * Set the firstName value. - * - * @param firstName the firstName value to set - * @return the AdministratorDetails object itself. - */ - public AdministratorDetails withFirstName(String firstName) { - this.firstName = firstName; - return this; - } - - /** - * Get the lastName value. - * - * @return the lastName value - */ - public String lastName() { - return this.lastName; - } - - /** - * Set the lastName value. - * - * @param lastName the lastName value to set - * @return the AdministratorDetails object itself. - */ - public AdministratorDetails withLastName(String lastName) { - this.lastName = lastName; - return this; - } - - /** - * Get the emailAddress value. - * - * @return the emailAddress value - */ - public String emailAddress() { - return this.emailAddress; - } - - /** - * Set the emailAddress value. - * - * @param emailAddress the emailAddress value to set - * @return the AdministratorDetails object itself. - */ - public AdministratorDetails withEmailAddress(String emailAddress) { - this.emailAddress = emailAddress; - return this; - } - - /** - * Get the phone value. - * - * @return the phone value - */ - public String phone() { - return this.phone; - } - - /** - * Set the phone value. - * - * @param phone the phone value to set - * @return the AdministratorDetails object itself. - */ - public AdministratorDetails withPhone(String phone) { - this.phone = phone; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Details of the organization administrator of the certificate issuer. + */ +public class AdministratorDetails { + /** + * First name. + */ + @JsonProperty(value = "first_name") + private String firstName; + + /** + * Last name. + */ + @JsonProperty(value = "last_name") + private String lastName; + + /** + * Email addresss. + */ + @JsonProperty(value = "email") + private String emailAddress; + + /** + * Phone number. + */ + @JsonProperty(value = "phone") + private String phone; + + /** + * Get the firstName value. + * + * @return the firstName value + */ + public String firstName() { + return this.firstName; + } + + /** + * Set the firstName value. + * + * @param firstName the firstName value to set + * @return the AdministratorDetails object itself. + */ + public AdministratorDetails withFirstName(String firstName) { + this.firstName = firstName; + return this; + } + + /** + * Get the lastName value. + * + * @return the lastName value + */ + public String lastName() { + return this.lastName; + } + + /** + * Set the lastName value. + * + * @param lastName the lastName value to set + * @return the AdministratorDetails object itself. + */ + public AdministratorDetails withLastName(String lastName) { + this.lastName = lastName; + return this; + } + + /** + * Get the emailAddress value. + * + * @return the emailAddress value + */ + public String emailAddress() { + return this.emailAddress; + } + + /** + * Set the emailAddress value. + * + * @param emailAddress the emailAddress value to set + * @return the AdministratorDetails object itself. + */ + public AdministratorDetails withEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + return this; + } + + /** + * Get the phone value. + * + * @return the phone value + */ + public String phone() { + return this.phone; + } + + /** + * Set the phone value. + * + * @param phone the phone value to set + * @return the AdministratorDetails object itself. + */ + public AdministratorDetails withPhone(String phone) { + this.phone = phone; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Attributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Attributes.java index fef08ab..9611767 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Attributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Attributes.java @@ -1,147 +1,147 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The object attributes managed by the KeyVault service. - */ -public class Attributes { - /** - * Determines whether the object is enabled. - */ - @JsonProperty(value = "enabled") - private Boolean enabled; - - /** - * Not before date in UTC. - */ - @JsonProperty(value = "nbf") - private Long notBefore; - - /** - * Expiry date in UTC. - */ - @JsonProperty(value = "exp") - private Long expires; - - /** - * Creation time in UTC. - */ - @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) - private Long created; - - /** - * Last updated time in UTC. - */ - @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) - private Long updated; - - /** - * Get the enabled value. - * - * @return the enabled value - */ - public Boolean enabled() { - return this.enabled; - } - - /** - * Set the enabled value. - * - * @param enabled the enabled value to set - * @return the Attributes object itself. - */ - public Attributes withEnabled(Boolean enabled) { - this.enabled = enabled; - return this; - } - - /** - * Get the notBefore value. - * - * @return the notBefore value - */ - public DateTime notBefore() { - if (this.notBefore == null) { - return null; - } - return new DateTime(this.notBefore * 1000L, DateTimeZone.UTC); - } - - /** - * Set the notBefore value. - * - * @param notBefore the notBefore value to set - * @return the Attributes object itself. - */ - public Attributes withNotBefore(DateTime notBefore) { - if (notBefore == null) { - this.notBefore = null; - } else { - this.notBefore = notBefore.toDateTime(DateTimeZone.UTC).getMillis() / 1000; - } - return this; - } - - /** - * Get the expires value. - * - * @return the expires value - */ - public DateTime expires() { - if (this.expires == null) { - return null; - } - return new DateTime(this.expires * 1000L, DateTimeZone.UTC); - } - - /** - * Set the expires value. - * - * @param expires the expires value to set - * @return the Attributes object itself. - */ - public Attributes withExpires(DateTime expires) { - if (expires == null) { - this.expires = null; - } else { - this.expires = expires.toDateTime(DateTimeZone.UTC).getMillis() / 1000; - } - return this; - } - - /** - * Get the created value. - * - * @return the created value - */ - public DateTime created() { - if (this.created == null) { - return null; - } - return new DateTime(this.created * 1000L, DateTimeZone.UTC); - } - - /** - * Get the updated value. - * - * @return the updated value - */ - public DateTime updated() { - if (this.updated == null) { - return null; - } - return new DateTime(this.updated * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The object attributes managed by the KeyVault service. + */ +public class Attributes { + /** + * Determines whether the object is enabled. + */ + @JsonProperty(value = "enabled") + private Boolean enabled; + + /** + * Not before date in UTC. + */ + @JsonProperty(value = "nbf") + private Long notBefore; + + /** + * Expiry date in UTC. + */ + @JsonProperty(value = "exp") + private Long expires; + + /** + * Creation time in UTC. + */ + @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) + private Long created; + + /** + * Last updated time in UTC. + */ + @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) + private Long updated; + + /** + * Get the enabled value. + * + * @return the enabled value + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled value. + * + * @param enabled the enabled value to set + * @return the Attributes object itself. + */ + public Attributes withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the notBefore value. + * + * @return the notBefore value + */ + public DateTime notBefore() { + if (this.notBefore == null) { + return null; + } + return new DateTime(this.notBefore * 1000L, DateTimeZone.UTC); + } + + /** + * Set the notBefore value. + * + * @param notBefore the notBefore value to set + * @return the Attributes object itself. + */ + public Attributes withNotBefore(DateTime notBefore) { + if (notBefore == null) { + this.notBefore = null; + } else { + this.notBefore = notBefore.toDateTime(DateTimeZone.UTC).getMillis() / 1000; + } + return this; + } + + /** + * Get the expires value. + * + * @return the expires value + */ + public DateTime expires() { + if (this.expires == null) { + return null; + } + return new DateTime(this.expires * 1000L, DateTimeZone.UTC); + } + + /** + * Set the expires value. + * + * @param expires the expires value to set + * @return the Attributes object itself. + */ + public Attributes withExpires(DateTime expires) { + if (expires == null) { + this.expires = null; + } else { + this.expires = expires.toDateTime(DateTimeZone.UTC).getMillis() / 1000; + } + return this; + } + + /** + * Get the created value. + * + * @return the created value + */ + public DateTime created() { + if (this.created == null) { + return null; + } + return new DateTime(this.created * 1000L, DateTimeZone.UTC); + } + + /** + * Get the updated value. + * + * @return the updated value + */ + public DateTime updated() { + if (this.updated == null) { + return null; + } + return new DateTime(this.updated * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupCertificateResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupCertificateResult.java index 94dafa7..8081743 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupCertificateResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupCertificateResult.java @@ -1,36 +1,36 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The backup certificate result, containing the backup blob. - */ -public class BackupCertificateResult { - /** - * The backup blob containing the backed up certificate. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url value; - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The backup certificate result, containing the backup blob. + */ +public class BackupCertificateResult { + /** + * The backup blob containing the backed up certificate. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url value; + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupKeyResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupKeyResult.java index f975c72..22c1dfb 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupKeyResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupKeyResult.java @@ -1,36 +1,36 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The backup key result, containing the backup blob. - */ -public class BackupKeyResult { - /** - * The backup blob containing the backed up key. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url value; - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The backup key result, containing the backup blob. + */ +public class BackupKeyResult { + /** + * The backup blob containing the backed up key. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url value; + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupSecretResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupSecretResult.java index bc76f33..8c5cf6d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupSecretResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupSecretResult.java @@ -1,36 +1,36 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The backup secret result, containing the backup blob. - */ -public class BackupSecretResult { - /** - * The backup blob containing the backed up secret. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url value; - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The backup secret result, containing the backup blob. + */ +public class BackupSecretResult { + /** + * The backup blob containing the backed up secret. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url value; + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupStorageResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupStorageResult.java index 48adf0d..9b4d93b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupStorageResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/BackupStorageResult.java @@ -1,36 +1,36 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The backup storage result, containing the backup blob. - */ -public class BackupStorageResult { - /** - * The backup blob containing the backed up storage account. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url value; - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The backup storage result, containing the backup blob. + */ +public class BackupStorageResult { + /** + * The backup blob containing the backed up storage account. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url value; + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateAttributes.java index c2f9484..810216c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateAttributes.java @@ -1,37 +1,37 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate management attributes. - */ -public class CertificateAttributes extends Attributes { - /** - * Reflects the deletion recovery level currently in effect for - * certificates in the current vault. If it contains 'Purgeable', the - * certificate can be permanently deleted by a privileged user; otherwise, - * only the system can purge the certificate, at the end of the retention - * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', - * 'Recoverable', 'Recoverable+ProtectedSubscription'. - */ - @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) - private DeletionRecoveryLevel recoveryLevel; - - /** - * Get the recoveryLevel value. - * - * @return the recoveryLevel value - */ - public DeletionRecoveryLevel recoveryLevel() { - return this.recoveryLevel; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate management attributes. + */ +public class CertificateAttributes extends Attributes { + /** + * Reflects the deletion recovery level currently in effect for + * certificates in the current vault. If it contains 'Purgeable', the + * certificate can be permanently deleted by a privileged user; otherwise, + * only the system can purge the certificate, at the end of the retention + * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', + * 'Recoverable', 'Recoverable+ProtectedSubscription'. + */ + @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) + private DeletionRecoveryLevel recoveryLevel; + + /** + * Get the recoveryLevel value. + * + * @return the recoveryLevel value + */ + public DeletionRecoveryLevel recoveryLevel() { + return this.recoveryLevel; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateBundle.java index 373c3a0..f9efa54 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateBundle.java @@ -1,201 +1,201 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A certificate bundle consists of a certificate (X509) plus its attributes. - */ -public class CertificateBundle extends com.microsoft.azure.keyvault.models.custom.CertificateBundle { - /** - * The certificate id. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * The key id. - */ - @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) - private String kid; - - /** - * The secret id. - */ - @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) - private String sid; - - /** - * Thumbprint of the certificate. - */ - @JsonProperty(value = "x5t", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url x509Thumbprint; - - /** - * The management policy. - */ - @JsonProperty(value = "policy", access = JsonProperty.Access.WRITE_ONLY) - private CertificatePolicy policy; - - /** - * CER contents of x509 certificate. - */ - @JsonProperty(value = "cer") - private byte[] cer; - - /** - * The content type of the secret. - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * The certificate attributes. - */ - @JsonProperty(value = "attributes") - private CertificateAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the kid value. - * - * @return the kid value - */ - public String kid() { - return this.kid; - } - - /** - * Get the sid value. - * - * @return the sid value - */ - public String sid() { - return this.sid; - } - - /** - * Get the x509Thumbprint value. - * - * @return the x509Thumbprint value - */ - public byte[] x509Thumbprint() { - if (this.x509Thumbprint == null) { - return null; - } - return this.x509Thumbprint.decodedBytes(); - } - - /** - * Get the policy value. - * - * @return the policy value - */ - public CertificatePolicy policy() { - return this.policy; - } - - /** - * Get the cer value. - * - * @return the cer value - */ - public byte[] cer() { - return this.cer; - } - - /** - * Set the cer value. - * - * @param cer the cer value to set - * @return the CertificateBundle object itself. - */ - public CertificateBundle withCer(byte[] cer) { - this.cer = cer; - return this; - } - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the CertificateBundle object itself. - */ - public CertificateBundle withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public CertificateAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the CertificateBundle object itself. - */ - public CertificateBundle withAttributes(CertificateAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateBundle object itself. - */ - public CertificateBundle withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A certificate bundle consists of a certificate (X509) plus its attributes. + */ +public class CertificateBundle extends com.microsoft.azure.keyvault.models.custom.CertificateBundle { + /** + * The certificate id. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * The key id. + */ + @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) + private String kid; + + /** + * The secret id. + */ + @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) + private String sid; + + /** + * Thumbprint of the certificate. + */ + @JsonProperty(value = "x5t", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url x509Thumbprint; + + /** + * The management policy. + */ + @JsonProperty(value = "policy", access = JsonProperty.Access.WRITE_ONLY) + private CertificatePolicy policy; + + /** + * CER contents of x509 certificate. + */ + @JsonProperty(value = "cer") + private byte[] cer; + + /** + * The content type of the secret. + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * The certificate attributes. + */ + @JsonProperty(value = "attributes") + private CertificateAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the kid value. + * + * @return the kid value + */ + public String kid() { + return this.kid; + } + + /** + * Get the sid value. + * + * @return the sid value + */ + public String sid() { + return this.sid; + } + + /** + * Get the x509Thumbprint value. + * + * @return the x509Thumbprint value + */ + public byte[] x509Thumbprint() { + if (this.x509Thumbprint == null) { + return null; + } + return this.x509Thumbprint.decodedBytes(); + } + + /** + * Get the policy value. + * + * @return the policy value + */ + public CertificatePolicy policy() { + return this.policy; + } + + /** + * Get the cer value. + * + * @return the cer value + */ + public byte[] cer() { + return this.cer; + } + + /** + * Set the cer value. + * + * @param cer the cer value to set + * @return the CertificateBundle object itself. + */ + public CertificateBundle withCer(byte[] cer) { + this.cer = cer; + return this; + } + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the CertificateBundle object itself. + */ + public CertificateBundle withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public CertificateAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the CertificateBundle object itself. + */ + public CertificateBundle withAttributes(CertificateAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateBundle object itself. + */ + public CertificateBundle withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateCreateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateCreateParameters.java index 6012e5e..301126e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateCreateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateCreateParameters.java @@ -1,96 +1,96 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate create parameters. - */ -public class CertificateCreateParameters { - /** - * The management policy for the certificate. - */ - @JsonProperty(value = "policy") - private CertificatePolicy certificatePolicy; - - /** - * The attributes of the certificate (optional). - */ - @JsonProperty(value = "attributes") - private CertificateAttributes certificateAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the certificatePolicy value. - * - * @return the certificatePolicy value - */ - public CertificatePolicy certificatePolicy() { - return this.certificatePolicy; - } - - /** - * Set the certificatePolicy value. - * - * @param certificatePolicy the certificatePolicy value to set - * @return the CertificateCreateParameters object itself. - */ - public CertificateCreateParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { - this.certificatePolicy = certificatePolicy; - return this; - } - - /** - * Get the certificateAttributes value. - * - * @return the certificateAttributes value - */ - public CertificateAttributes certificateAttributes() { - return this.certificateAttributes; - } - - /** - * Set the certificateAttributes value. - * - * @param certificateAttributes the certificateAttributes value to set - * @return the CertificateCreateParameters object itself. - */ - public CertificateCreateParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { - this.certificateAttributes = certificateAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateCreateParameters object itself. - */ - public CertificateCreateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate create parameters. + */ +public class CertificateCreateParameters { + /** + * The management policy for the certificate. + */ + @JsonProperty(value = "policy") + private CertificatePolicy certificatePolicy; + + /** + * The attributes of the certificate (optional). + */ + @JsonProperty(value = "attributes") + private CertificateAttributes certificateAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the certificatePolicy value. + * + * @return the certificatePolicy value + */ + public CertificatePolicy certificatePolicy() { + return this.certificatePolicy; + } + + /** + * Set the certificatePolicy value. + * + * @param certificatePolicy the certificatePolicy value to set + * @return the CertificateCreateParameters object itself. + */ + public CertificateCreateParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { + this.certificatePolicy = certificatePolicy; + return this; + } + + /** + * Get the certificateAttributes value. + * + * @return the certificateAttributes value + */ + public CertificateAttributes certificateAttributes() { + return this.certificateAttributes; + } + + /** + * Set the certificateAttributes value. + * + * @param certificateAttributes the certificateAttributes value to set + * @return the CertificateCreateParameters object itself. + */ + public CertificateCreateParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { + this.certificateAttributes = certificateAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateCreateParameters object itself. + */ + public CertificateCreateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateImportParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateImportParameters.java index 0a79aeb..ca53338 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateImportParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateImportParameters.java @@ -1,150 +1,150 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate import parameters. - */ -public class CertificateImportParameters { - /** - * Base64 encoded representation of the certificate object to import. This - * certificate needs to contain the private key. - */ - @JsonProperty(value = "value", required = true) - private String base64EncodedCertificate; - - /** - * If the private key in base64EncodedCertificate is encrypted, the - * password used for encryption. - */ - @JsonProperty(value = "pwd") - private String password; - - /** - * The management policy for the certificate. - */ - @JsonProperty(value = "policy") - private CertificatePolicy certificatePolicy; - - /** - * The attributes of the certificate (optional). - */ - @JsonProperty(value = "attributes") - private CertificateAttributes certificateAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the base64EncodedCertificate value. - * - * @return the base64EncodedCertificate value - */ - public String base64EncodedCertificate() { - return this.base64EncodedCertificate; - } - - /** - * Set the base64EncodedCertificate value. - * - * @param base64EncodedCertificate the base64EncodedCertificate value to set - * @return the CertificateImportParameters object itself. - */ - public CertificateImportParameters withBase64EncodedCertificate(String base64EncodedCertificate) { - this.base64EncodedCertificate = base64EncodedCertificate; - return this; - } - - /** - * Get the password value. - * - * @return the password value - */ - public String password() { - return this.password; - } - - /** - * Set the password value. - * - * @param password the password value to set - * @return the CertificateImportParameters object itself. - */ - public CertificateImportParameters withPassword(String password) { - this.password = password; - return this; - } - - /** - * Get the certificatePolicy value. - * - * @return the certificatePolicy value - */ - public CertificatePolicy certificatePolicy() { - return this.certificatePolicy; - } - - /** - * Set the certificatePolicy value. - * - * @param certificatePolicy the certificatePolicy value to set - * @return the CertificateImportParameters object itself. - */ - public CertificateImportParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { - this.certificatePolicy = certificatePolicy; - return this; - } - - /** - * Get the certificateAttributes value. - * - * @return the certificateAttributes value - */ - public CertificateAttributes certificateAttributes() { - return this.certificateAttributes; - } - - /** - * Set the certificateAttributes value. - * - * @param certificateAttributes the certificateAttributes value to set - * @return the CertificateImportParameters object itself. - */ - public CertificateImportParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { - this.certificateAttributes = certificateAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateImportParameters object itself. - */ - public CertificateImportParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate import parameters. + */ +public class CertificateImportParameters { + /** + * Base64 encoded representation of the certificate object to import. This + * certificate needs to contain the private key. + */ + @JsonProperty(value = "value", required = true) + private String base64EncodedCertificate; + + /** + * If the private key in base64EncodedCertificate is encrypted, the + * password used for encryption. + */ + @JsonProperty(value = "pwd") + private String password; + + /** + * The management policy for the certificate. + */ + @JsonProperty(value = "policy") + private CertificatePolicy certificatePolicy; + + /** + * The attributes of the certificate (optional). + */ + @JsonProperty(value = "attributes") + private CertificateAttributes certificateAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the base64EncodedCertificate value. + * + * @return the base64EncodedCertificate value + */ + public String base64EncodedCertificate() { + return this.base64EncodedCertificate; + } + + /** + * Set the base64EncodedCertificate value. + * + * @param base64EncodedCertificate the base64EncodedCertificate value to set + * @return the CertificateImportParameters object itself. + */ + public CertificateImportParameters withBase64EncodedCertificate(String base64EncodedCertificate) { + this.base64EncodedCertificate = base64EncodedCertificate; + return this; + } + + /** + * Get the password value. + * + * @return the password value + */ + public String password() { + return this.password; + } + + /** + * Set the password value. + * + * @param password the password value to set + * @return the CertificateImportParameters object itself. + */ + public CertificateImportParameters withPassword(String password) { + this.password = password; + return this; + } + + /** + * Get the certificatePolicy value. + * + * @return the certificatePolicy value + */ + public CertificatePolicy certificatePolicy() { + return this.certificatePolicy; + } + + /** + * Set the certificatePolicy value. + * + * @param certificatePolicy the certificatePolicy value to set + * @return the CertificateImportParameters object itself. + */ + public CertificateImportParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { + this.certificatePolicy = certificatePolicy; + return this; + } + + /** + * Get the certificateAttributes value. + * + * @return the certificateAttributes value + */ + public CertificateAttributes certificateAttributes() { + return this.certificateAttributes; + } + + /** + * Set the certificateAttributes value. + * + * @param certificateAttributes the certificateAttributes value to set + * @return the CertificateImportParameters object itself. + */ + public CertificateImportParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { + this.certificateAttributes = certificateAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateImportParameters object itself. + */ + public CertificateImportParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerItem.java index e3b4774..f56b05b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerItem.java @@ -1,69 +1,69 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate issuer item containing certificate issuer metadata. - */ -public class CertificateIssuerItem { - /** - * Certificate Identifier. - */ - @JsonProperty(value = "id") - private String id; - - /** - * The issuer provider. - */ - @JsonProperty(value = "provider") - private String provider; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Set the id value. - * - * @param id the id value to set - * @return the CertificateIssuerItem object itself. - */ - public CertificateIssuerItem withId(String id) { - this.id = id; - return this; - } - - /** - * Get the provider value. - * - * @return the provider value - */ - public String provider() { - return this.provider; - } - - /** - * Set the provider value. - * - * @param provider the provider value to set - * @return the CertificateIssuerItem object itself. - */ - public CertificateIssuerItem withProvider(String provider) { - this.provider = provider; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate issuer item containing certificate issuer metadata. + */ +public class CertificateIssuerItem { + /** + * Certificate Identifier. + */ + @JsonProperty(value = "id") + private String id; + + /** + * The issuer provider. + */ + @JsonProperty(value = "provider") + private String provider; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Set the id value. + * + * @param id the id value to set + * @return the CertificateIssuerItem object itself. + */ + public CertificateIssuerItem withId(String id) { + this.id = id; + return this; + } + + /** + * Get the provider value. + * + * @return the provider value + */ + public String provider() { + return this.provider; + } + + /** + * Set the provider value. + * + * @param provider the provider value to set + * @return the CertificateIssuerItem object itself. + */ + public CertificateIssuerItem withProvider(String provider) { + this.provider = provider; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerSetParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerSetParameters.java index 401e48e..9ef7c67 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerSetParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerSetParameters.java @@ -1,121 +1,121 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate issuer set parameters. - */ -public class CertificateIssuerSetParameters { - /** - * The issuer provider. - */ - @JsonProperty(value = "provider", required = true) - private String provider; - - /** - * The credentials to be used for the issuer. - */ - @JsonProperty(value = "credentials") - private IssuerCredentials credentials; - - /** - * Details of the organization as provided to the issuer. - */ - @JsonProperty(value = "org_details") - private OrganizationDetails organizationDetails; - - /** - * Attributes of the issuer object. - */ - @JsonProperty(value = "attributes") - private IssuerAttributes attributes; - - /** - * Get the provider value. - * - * @return the provider value - */ - public String provider() { - return this.provider; - } - - /** - * Set the provider value. - * - * @param provider the provider value to set - * @return the CertificateIssuerSetParameters object itself. - */ - public CertificateIssuerSetParameters withProvider(String provider) { - this.provider = provider; - return this; - } - - /** - * Get the credentials value. - * - * @return the credentials value - */ - public IssuerCredentials credentials() { - return this.credentials; - } - - /** - * Set the credentials value. - * - * @param credentials the credentials value to set - * @return the CertificateIssuerSetParameters object itself. - */ - public CertificateIssuerSetParameters withCredentials(IssuerCredentials credentials) { - this.credentials = credentials; - return this; - } - - /** - * Get the organizationDetails value. - * - * @return the organizationDetails value - */ - public OrganizationDetails organizationDetails() { - return this.organizationDetails; - } - - /** - * Set the organizationDetails value. - * - * @param organizationDetails the organizationDetails value to set - * @return the CertificateIssuerSetParameters object itself. - */ - public CertificateIssuerSetParameters withOrganizationDetails(OrganizationDetails organizationDetails) { - this.organizationDetails = organizationDetails; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public IssuerAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the CertificateIssuerSetParameters object itself. - */ - public CertificateIssuerSetParameters withAttributes(IssuerAttributes attributes) { - this.attributes = attributes; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate issuer set parameters. + */ +public class CertificateIssuerSetParameters { + /** + * The issuer provider. + */ + @JsonProperty(value = "provider", required = true) + private String provider; + + /** + * The credentials to be used for the issuer. + */ + @JsonProperty(value = "credentials") + private IssuerCredentials credentials; + + /** + * Details of the organization as provided to the issuer. + */ + @JsonProperty(value = "org_details") + private OrganizationDetails organizationDetails; + + /** + * Attributes of the issuer object. + */ + @JsonProperty(value = "attributes") + private IssuerAttributes attributes; + + /** + * Get the provider value. + * + * @return the provider value + */ + public String provider() { + return this.provider; + } + + /** + * Set the provider value. + * + * @param provider the provider value to set + * @return the CertificateIssuerSetParameters object itself. + */ + public CertificateIssuerSetParameters withProvider(String provider) { + this.provider = provider; + return this; + } + + /** + * Get the credentials value. + * + * @return the credentials value + */ + public IssuerCredentials credentials() { + return this.credentials; + } + + /** + * Set the credentials value. + * + * @param credentials the credentials value to set + * @return the CertificateIssuerSetParameters object itself. + */ + public CertificateIssuerSetParameters withCredentials(IssuerCredentials credentials) { + this.credentials = credentials; + return this; + } + + /** + * Get the organizationDetails value. + * + * @return the organizationDetails value + */ + public OrganizationDetails organizationDetails() { + return this.organizationDetails; + } + + /** + * Set the organizationDetails value. + * + * @param organizationDetails the organizationDetails value to set + * @return the CertificateIssuerSetParameters object itself. + */ + public CertificateIssuerSetParameters withOrganizationDetails(OrganizationDetails organizationDetails) { + this.organizationDetails = organizationDetails; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public IssuerAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the CertificateIssuerSetParameters object itself. + */ + public CertificateIssuerSetParameters withAttributes(IssuerAttributes attributes) { + this.attributes = attributes; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerUpdateParameters.java index 12c2dc5..656be38 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateIssuerUpdateParameters.java @@ -1,121 +1,121 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate issuer update parameters. - */ -public class CertificateIssuerUpdateParameters { - /** - * The issuer provider. - */ - @JsonProperty(value = "provider") - private String provider; - - /** - * The credentials to be used for the issuer. - */ - @JsonProperty(value = "credentials") - private IssuerCredentials credentials; - - /** - * Details of the organization as provided to the issuer. - */ - @JsonProperty(value = "org_details") - private OrganizationDetails organizationDetails; - - /** - * Attributes of the issuer object. - */ - @JsonProperty(value = "attributes") - private IssuerAttributes attributes; - - /** - * Get the provider value. - * - * @return the provider value - */ - public String provider() { - return this.provider; - } - - /** - * Set the provider value. - * - * @param provider the provider value to set - * @return the CertificateIssuerUpdateParameters object itself. - */ - public CertificateIssuerUpdateParameters withProvider(String provider) { - this.provider = provider; - return this; - } - - /** - * Get the credentials value. - * - * @return the credentials value - */ - public IssuerCredentials credentials() { - return this.credentials; - } - - /** - * Set the credentials value. - * - * @param credentials the credentials value to set - * @return the CertificateIssuerUpdateParameters object itself. - */ - public CertificateIssuerUpdateParameters withCredentials(IssuerCredentials credentials) { - this.credentials = credentials; - return this; - } - - /** - * Get the organizationDetails value. - * - * @return the organizationDetails value - */ - public OrganizationDetails organizationDetails() { - return this.organizationDetails; - } - - /** - * Set the organizationDetails value. - * - * @param organizationDetails the organizationDetails value to set - * @return the CertificateIssuerUpdateParameters object itself. - */ - public CertificateIssuerUpdateParameters withOrganizationDetails(OrganizationDetails organizationDetails) { - this.organizationDetails = organizationDetails; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public IssuerAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the CertificateIssuerUpdateParameters object itself. - */ - public CertificateIssuerUpdateParameters withAttributes(IssuerAttributes attributes) { - this.attributes = attributes; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate issuer update parameters. + */ +public class CertificateIssuerUpdateParameters { + /** + * The issuer provider. + */ + @JsonProperty(value = "provider") + private String provider; + + /** + * The credentials to be used for the issuer. + */ + @JsonProperty(value = "credentials") + private IssuerCredentials credentials; + + /** + * Details of the organization as provided to the issuer. + */ + @JsonProperty(value = "org_details") + private OrganizationDetails organizationDetails; + + /** + * Attributes of the issuer object. + */ + @JsonProperty(value = "attributes") + private IssuerAttributes attributes; + + /** + * Get the provider value. + * + * @return the provider value + */ + public String provider() { + return this.provider; + } + + /** + * Set the provider value. + * + * @param provider the provider value to set + * @return the CertificateIssuerUpdateParameters object itself. + */ + public CertificateIssuerUpdateParameters withProvider(String provider) { + this.provider = provider; + return this; + } + + /** + * Get the credentials value. + * + * @return the credentials value + */ + public IssuerCredentials credentials() { + return this.credentials; + } + + /** + * Set the credentials value. + * + * @param credentials the credentials value to set + * @return the CertificateIssuerUpdateParameters object itself. + */ + public CertificateIssuerUpdateParameters withCredentials(IssuerCredentials credentials) { + this.credentials = credentials; + return this; + } + + /** + * Get the organizationDetails value. + * + * @return the organizationDetails value + */ + public OrganizationDetails organizationDetails() { + return this.organizationDetails; + } + + /** + * Set the organizationDetails value. + * + * @param organizationDetails the organizationDetails value to set + * @return the CertificateIssuerUpdateParameters object itself. + */ + public CertificateIssuerUpdateParameters withOrganizationDetails(OrganizationDetails organizationDetails) { + this.organizationDetails = organizationDetails; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public IssuerAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the CertificateIssuerUpdateParameters object itself. + */ + public CertificateIssuerUpdateParameters withAttributes(IssuerAttributes attributes) { + this.attributes = attributes; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateItem.java index 4d8356a..b61faa2 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateItem.java @@ -1,130 +1,130 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate item containing certificate metadata. - */ -public class CertificateItem { - /** - * Certificate identifier. - */ - @JsonProperty(value = "id") - private String id; - - /** - * The certificate management attributes. - */ - @JsonProperty(value = "attributes") - private CertificateAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Thumbprint of the certificate. - */ - @JsonProperty(value = "x5t") - private Base64Url x509Thumbprint; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Set the id value. - * - * @param id the id value to set - * @return the CertificateItem object itself. - */ - public CertificateItem withId(String id) { - this.id = id; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public CertificateAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the CertificateItem object itself. - */ - public CertificateItem withAttributes(CertificateAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateItem object itself. - */ - public CertificateItem withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the x509Thumbprint value. - * - * @return the x509Thumbprint value - */ - public byte[] x509Thumbprint() { - if (this.x509Thumbprint == null) { - return null; - } - return this.x509Thumbprint.decodedBytes(); - } - - /** - * Set the x509Thumbprint value. - * - * @param x509Thumbprint the x509Thumbprint value to set - * @return the CertificateItem object itself. - */ - public CertificateItem withX509Thumbprint(byte[] x509Thumbprint) { - if (x509Thumbprint == null) { - this.x509Thumbprint = null; - } else { - this.x509Thumbprint = Base64Url.encode(x509Thumbprint); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate item containing certificate metadata. + */ +public class CertificateItem { + /** + * Certificate identifier. + */ + @JsonProperty(value = "id") + private String id; + + /** + * The certificate management attributes. + */ + @JsonProperty(value = "attributes") + private CertificateAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Thumbprint of the certificate. + */ + @JsonProperty(value = "x5t") + private Base64Url x509Thumbprint; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Set the id value. + * + * @param id the id value to set + * @return the CertificateItem object itself. + */ + public CertificateItem withId(String id) { + this.id = id; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public CertificateAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the CertificateItem object itself. + */ + public CertificateItem withAttributes(CertificateAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateItem object itself. + */ + public CertificateItem withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the x509Thumbprint value. + * + * @return the x509Thumbprint value + */ + public byte[] x509Thumbprint() { + if (this.x509Thumbprint == null) { + return null; + } + return this.x509Thumbprint.decodedBytes(); + } + + /** + * Set the x509Thumbprint value. + * + * @param x509Thumbprint the x509Thumbprint value to set + * @return the CertificateItem object itself. + */ + public CertificateItem withX509Thumbprint(byte[] x509Thumbprint) { + if (x509Thumbprint == null) { + this.x509Thumbprint = null; + } else { + this.x509Thumbprint = Base64Url.encode(x509Thumbprint); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateMergeParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateMergeParameters.java index 9fb1b98..6d40406 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateMergeParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateMergeParameters.java @@ -1,97 +1,97 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate merge parameters. - */ -public class CertificateMergeParameters { - /** - * The certificate or the certificate chain to merge. - */ - @JsonProperty(value = "x5c", required = true) - private List x509Certificates; - - /** - * The attributes of the certificate (optional). - */ - @JsonProperty(value = "attributes") - private CertificateAttributes certificateAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the x509Certificates value. - * - * @return the x509Certificates value - */ - public List x509Certificates() { - return this.x509Certificates; - } - - /** - * Set the x509Certificates value. - * - * @param x509Certificates the x509Certificates value to set - * @return the CertificateMergeParameters object itself. - */ - public CertificateMergeParameters withX509Certificates(List x509Certificates) { - this.x509Certificates = x509Certificates; - return this; - } - - /** - * Get the certificateAttributes value. - * - * @return the certificateAttributes value - */ - public CertificateAttributes certificateAttributes() { - return this.certificateAttributes; - } - - /** - * Set the certificateAttributes value. - * - * @param certificateAttributes the certificateAttributes value to set - * @return the CertificateMergeParameters object itself. - */ - public CertificateMergeParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { - this.certificateAttributes = certificateAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateMergeParameters object itself. - */ - public CertificateMergeParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate merge parameters. + */ +public class CertificateMergeParameters { + /** + * The certificate or the certificate chain to merge. + */ + @JsonProperty(value = "x5c", required = true) + private List x509Certificates; + + /** + * The attributes of the certificate (optional). + */ + @JsonProperty(value = "attributes") + private CertificateAttributes certificateAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the x509Certificates value. + * + * @return the x509Certificates value + */ + public List x509Certificates() { + return this.x509Certificates; + } + + /** + * Set the x509Certificates value. + * + * @param x509Certificates the x509Certificates value to set + * @return the CertificateMergeParameters object itself. + */ + public CertificateMergeParameters withX509Certificates(List x509Certificates) { + this.x509Certificates = x509Certificates; + return this; + } + + /** + * Get the certificateAttributes value. + * + * @return the certificateAttributes value + */ + public CertificateAttributes certificateAttributes() { + return this.certificateAttributes; + } + + /** + * Set the certificateAttributes value. + * + * @param certificateAttributes the certificateAttributes value to set + * @return the CertificateMergeParameters object itself. + */ + public CertificateMergeParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { + this.certificateAttributes = certificateAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateMergeParameters object itself. + */ + public CertificateMergeParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperation.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperation.java index eea5853..9e00258 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperation.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperation.java @@ -1,241 +1,241 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A certificate operation is returned in case of asynchronous requests. - */ -public class CertificateOperation extends com.microsoft.azure.keyvault.models.custom.CertificateOperation { - /** - * The certificate id. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * Parameters for the issuer of the X509 component of a certificate. - */ - @JsonProperty(value = "issuer") - private IssuerParameters issuerParameters; - - /** - * The certificate signing request (CSR) that is being used in the - * certificate operation. - */ - @JsonProperty(value = "csr") - private byte[] csr; - - /** - * Indicates if cancellation was requested on the certificate operation. - */ - @JsonProperty(value = "cancellation_requested") - private Boolean cancellationRequested; - - /** - * Status of the certificate operation. - */ - @JsonProperty(value = "status") - private String status; - - /** - * The status details of the certificate operation. - */ - @JsonProperty(value = "status_details") - private String statusDetails; - - /** - * Error encountered, if any, during the certificate operation. - */ - @JsonProperty(value = "error") - private Error error; - - /** - * Location which contains the result of the certificate operation. - */ - @JsonProperty(value = "target") - private String target; - - /** - * Identifier for the certificate operation. - */ - @JsonProperty(value = "request_id") - private String requestId; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the issuerParameters value. - * - * @return the issuerParameters value - */ - public IssuerParameters issuerParameters() { - return this.issuerParameters; - } - - /** - * Set the issuerParameters value. - * - * @param issuerParameters the issuerParameters value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withIssuerParameters(IssuerParameters issuerParameters) { - this.issuerParameters = issuerParameters; - return this; - } - - /** - * Get the csr value. - * - * @return the csr value - */ - public byte[] csr() { - return this.csr; - } - - /** - * Set the csr value. - * - * @param csr the csr value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withCsr(byte[] csr) { - this.csr = csr; - return this; - } - - /** - * Get the cancellationRequested value. - * - * @return the cancellationRequested value - */ - public Boolean cancellationRequested() { - return this.cancellationRequested; - } - - /** - * Set the cancellationRequested value. - * - * @param cancellationRequested the cancellationRequested value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withCancellationRequested(Boolean cancellationRequested) { - this.cancellationRequested = cancellationRequested; - return this; - } - - /** - * Get the status value. - * - * @return the status value - */ - public String status() { - return this.status; - } - - /** - * Set the status value. - * - * @param status the status value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withStatus(String status) { - this.status = status; - return this; - } - - /** - * Get the statusDetails value. - * - * @return the statusDetails value - */ - public String statusDetails() { - return this.statusDetails; - } - - /** - * Set the statusDetails value. - * - * @param statusDetails the statusDetails value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withStatusDetails(String statusDetails) { - this.statusDetails = statusDetails; - return this; - } - - /** - * Get the error value. - * - * @return the error value - */ - public Error error() { - return this.error; - } - - /** - * Set the error value. - * - * @param error the error value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withError(Error error) { - this.error = error; - return this; - } - - /** - * Get the target value. - * - * @return the target value - */ - public String target() { - return this.target; - } - - /** - * Set the target value. - * - * @param target the target value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withTarget(String target) { - this.target = target; - return this; - } - - /** - * Get the requestId value. - * - * @return the requestId value - */ - public String requestId() { - return this.requestId; - } - - /** - * Set the requestId value. - * - * @param requestId the requestId value to set - * @return the CertificateOperation object itself. - */ - public CertificateOperation withRequestId(String requestId) { - this.requestId = requestId; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A certificate operation is returned in case of asynchronous requests. + */ +public class CertificateOperation extends com.microsoft.azure.keyvault.models.custom.CertificateOperation { + /** + * The certificate id. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * Parameters for the issuer of the X509 component of a certificate. + */ + @JsonProperty(value = "issuer") + private IssuerParameters issuerParameters; + + /** + * The certificate signing request (CSR) that is being used in the + * certificate operation. + */ + @JsonProperty(value = "csr") + private byte[] csr; + + /** + * Indicates if cancellation was requested on the certificate operation. + */ + @JsonProperty(value = "cancellation_requested") + private Boolean cancellationRequested; + + /** + * Status of the certificate operation. + */ + @JsonProperty(value = "status") + private String status; + + /** + * The status details of the certificate operation. + */ + @JsonProperty(value = "status_details") + private String statusDetails; + + /** + * Error encountered, if any, during the certificate operation. + */ + @JsonProperty(value = "error") + private Error error; + + /** + * Location which contains the result of the certificate operation. + */ + @JsonProperty(value = "target") + private String target; + + /** + * Identifier for the certificate operation. + */ + @JsonProperty(value = "request_id") + private String requestId; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the issuerParameters value. + * + * @return the issuerParameters value + */ + public IssuerParameters issuerParameters() { + return this.issuerParameters; + } + + /** + * Set the issuerParameters value. + * + * @param issuerParameters the issuerParameters value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withIssuerParameters(IssuerParameters issuerParameters) { + this.issuerParameters = issuerParameters; + return this; + } + + /** + * Get the csr value. + * + * @return the csr value + */ + public byte[] csr() { + return this.csr; + } + + /** + * Set the csr value. + * + * @param csr the csr value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withCsr(byte[] csr) { + this.csr = csr; + return this; + } + + /** + * Get the cancellationRequested value. + * + * @return the cancellationRequested value + */ + public Boolean cancellationRequested() { + return this.cancellationRequested; + } + + /** + * Set the cancellationRequested value. + * + * @param cancellationRequested the cancellationRequested value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withCancellationRequested(Boolean cancellationRequested) { + this.cancellationRequested = cancellationRequested; + return this; + } + + /** + * Get the status value. + * + * @return the status value + */ + public String status() { + return this.status; + } + + /** + * Set the status value. + * + * @param status the status value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withStatus(String status) { + this.status = status; + return this; + } + + /** + * Get the statusDetails value. + * + * @return the statusDetails value + */ + public String statusDetails() { + return this.statusDetails; + } + + /** + * Set the statusDetails value. + * + * @param statusDetails the statusDetails value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withStatusDetails(String statusDetails) { + this.statusDetails = statusDetails; + return this; + } + + /** + * Get the error value. + * + * @return the error value + */ + public Error error() { + return this.error; + } + + /** + * Set the error value. + * + * @param error the error value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withError(Error error) { + this.error = error; + return this; + } + + /** + * Get the target value. + * + * @return the target value + */ + public String target() { + return this.target; + } + + /** + * Set the target value. + * + * @param target the target value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withTarget(String target) { + this.target = target; + return this; + } + + /** + * Get the requestId value. + * + * @return the requestId value + */ + public String requestId() { + return this.requestId; + } + + /** + * Set the requestId value. + * + * @param requestId the requestId value to set + * @return the CertificateOperation object itself. + */ + public CertificateOperation withRequestId(String requestId) { + this.requestId = requestId; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperationUpdateParameter.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperationUpdateParameter.java index d0ec158..98a494b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperationUpdateParameter.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateOperationUpdateParameter.java @@ -1,43 +1,43 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate operation update parameters. - */ -public class CertificateOperationUpdateParameter { - /** - * Indicates if cancellation was requested on the certificate operation. - */ - @JsonProperty(value = "cancellation_requested", required = true) - private boolean cancellationRequested; - - /** - * Get the cancellationRequested value. - * - * @return the cancellationRequested value - */ - public boolean cancellationRequested() { - return this.cancellationRequested; - } - - /** - * Set the cancellationRequested value. - * - * @param cancellationRequested the cancellationRequested value to set - * @return the CertificateOperationUpdateParameter object itself. - */ - public CertificateOperationUpdateParameter withCancellationRequested(boolean cancellationRequested) { - this.cancellationRequested = cancellationRequested; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate operation update parameters. + */ +public class CertificateOperationUpdateParameter { + /** + * Indicates if cancellation was requested on the certificate operation. + */ + @JsonProperty(value = "cancellation_requested", required = true) + private boolean cancellationRequested; + + /** + * Get the cancellationRequested value. + * + * @return the cancellationRequested value + */ + public boolean cancellationRequested() { + return this.cancellationRequested; + } + + /** + * Set the cancellationRequested value. + * + * @param cancellationRequested the cancellationRequested value to set + * @return the CertificateOperationUpdateParameter object itself. + */ + public CertificateOperationUpdateParameter withCancellationRequested(boolean cancellationRequested) { + this.cancellationRequested = cancellationRequested; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificatePolicy.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificatePolicy.java index 78a2687..44f94ba 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificatePolicy.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificatePolicy.java @@ -1,190 +1,190 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Management policy for a certificate. - */ -public class CertificatePolicy { - /** - * The certificate id. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * Properties of the key backing a certificate. - */ - @JsonProperty(value = "key_props") - private KeyProperties keyProperties; - - /** - * Properties of the secret backing a certificate. - */ - @JsonProperty(value = "secret_props") - private SecretProperties secretProperties; - - /** - * Properties of the X509 component of a certificate. - */ - @JsonProperty(value = "x509_props") - private X509CertificateProperties x509CertificateProperties; - - /** - * Actions that will be performed by Key Vault over the lifetime of a - * certificate. - */ - @JsonProperty(value = "lifetime_actions") - private List lifetimeActions; - - /** - * Parameters for the issuer of the X509 component of a certificate. - */ - @JsonProperty(value = "issuer") - private IssuerParameters issuerParameters; - - /** - * The certificate attributes. - */ - @JsonProperty(value = "attributes") - private CertificateAttributes attributes; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the keyProperties value. - * - * @return the keyProperties value - */ - public KeyProperties keyProperties() { - return this.keyProperties; - } - - /** - * Set the keyProperties value. - * - * @param keyProperties the keyProperties value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withKeyProperties(KeyProperties keyProperties) { - this.keyProperties = keyProperties; - return this; - } - - /** - * Get the secretProperties value. - * - * @return the secretProperties value - */ - public SecretProperties secretProperties() { - return this.secretProperties; - } - - /** - * Set the secretProperties value. - * - * @param secretProperties the secretProperties value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withSecretProperties(SecretProperties secretProperties) { - this.secretProperties = secretProperties; - return this; - } - - /** - * Get the x509CertificateProperties value. - * - * @return the x509CertificateProperties value - */ - public X509CertificateProperties x509CertificateProperties() { - return this.x509CertificateProperties; - } - - /** - * Set the x509CertificateProperties value. - * - * @param x509CertificateProperties the x509CertificateProperties value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withX509CertificateProperties(X509CertificateProperties x509CertificateProperties) { - this.x509CertificateProperties = x509CertificateProperties; - return this; - } - - /** - * Get the lifetimeActions value. - * - * @return the lifetimeActions value - */ - public List lifetimeActions() { - return this.lifetimeActions; - } - - /** - * Set the lifetimeActions value. - * - * @param lifetimeActions the lifetimeActions value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withLifetimeActions(List lifetimeActions) { - this.lifetimeActions = lifetimeActions; - return this; - } - - /** - * Get the issuerParameters value. - * - * @return the issuerParameters value - */ - public IssuerParameters issuerParameters() { - return this.issuerParameters; - } - - /** - * Set the issuerParameters value. - * - * @param issuerParameters the issuerParameters value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withIssuerParameters(IssuerParameters issuerParameters) { - this.issuerParameters = issuerParameters; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public CertificateAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the CertificatePolicy object itself. - */ - public CertificatePolicy withAttributes(CertificateAttributes attributes) { - this.attributes = attributes; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Management policy for a certificate. + */ +public class CertificatePolicy { + /** + * The certificate id. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * Properties of the key backing a certificate. + */ + @JsonProperty(value = "key_props") + private KeyProperties keyProperties; + + /** + * Properties of the secret backing a certificate. + */ + @JsonProperty(value = "secret_props") + private SecretProperties secretProperties; + + /** + * Properties of the X509 component of a certificate. + */ + @JsonProperty(value = "x509_props") + private X509CertificateProperties x509CertificateProperties; + + /** + * Actions that will be performed by Key Vault over the lifetime of a + * certificate. + */ + @JsonProperty(value = "lifetime_actions") + private List lifetimeActions; + + /** + * Parameters for the issuer of the X509 component of a certificate. + */ + @JsonProperty(value = "issuer") + private IssuerParameters issuerParameters; + + /** + * The certificate attributes. + */ + @JsonProperty(value = "attributes") + private CertificateAttributes attributes; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the keyProperties value. + * + * @return the keyProperties value + */ + public KeyProperties keyProperties() { + return this.keyProperties; + } + + /** + * Set the keyProperties value. + * + * @param keyProperties the keyProperties value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withKeyProperties(KeyProperties keyProperties) { + this.keyProperties = keyProperties; + return this; + } + + /** + * Get the secretProperties value. + * + * @return the secretProperties value + */ + public SecretProperties secretProperties() { + return this.secretProperties; + } + + /** + * Set the secretProperties value. + * + * @param secretProperties the secretProperties value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withSecretProperties(SecretProperties secretProperties) { + this.secretProperties = secretProperties; + return this; + } + + /** + * Get the x509CertificateProperties value. + * + * @return the x509CertificateProperties value + */ + public X509CertificateProperties x509CertificateProperties() { + return this.x509CertificateProperties; + } + + /** + * Set the x509CertificateProperties value. + * + * @param x509CertificateProperties the x509CertificateProperties value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withX509CertificateProperties(X509CertificateProperties x509CertificateProperties) { + this.x509CertificateProperties = x509CertificateProperties; + return this; + } + + /** + * Get the lifetimeActions value. + * + * @return the lifetimeActions value + */ + public List lifetimeActions() { + return this.lifetimeActions; + } + + /** + * Set the lifetimeActions value. + * + * @param lifetimeActions the lifetimeActions value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withLifetimeActions(List lifetimeActions) { + this.lifetimeActions = lifetimeActions; + return this; + } + + /** + * Get the issuerParameters value. + * + * @return the issuerParameters value + */ + public IssuerParameters issuerParameters() { + return this.issuerParameters; + } + + /** + * Set the issuerParameters value. + * + * @param issuerParameters the issuerParameters value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withIssuerParameters(IssuerParameters issuerParameters) { + this.issuerParameters = issuerParameters; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public CertificateAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the CertificatePolicy object itself. + */ + public CertificatePolicy withAttributes(CertificateAttributes attributes) { + this.attributes = attributes; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateRestoreParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateRestoreParameters.java index 93198c3..094f070 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateRestoreParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateRestoreParameters.java @@ -1,51 +1,51 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate restore parameters. - */ -public class CertificateRestoreParameters { - /** - * The backup blob associated with a certificate bundle. - */ - @JsonProperty(value = "value", required = true) - private Base64Url certificateBundleBackup; - - /** - * Get the certificateBundleBackup value. - * - * @return the certificateBundleBackup value - */ - public byte[] certificateBundleBackup() { - if (this.certificateBundleBackup == null) { - return null; - } - return this.certificateBundleBackup.decodedBytes(); - } - - /** - * Set the certificateBundleBackup value. - * - * @param certificateBundleBackup the certificateBundleBackup value to set - * @return the CertificateRestoreParameters object itself. - */ - public CertificateRestoreParameters withCertificateBundleBackup(byte[] certificateBundleBackup) { - if (certificateBundleBackup == null) { - this.certificateBundleBackup = null; - } else { - this.certificateBundleBackup = Base64Url.encode(certificateBundleBackup); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate restore parameters. + */ +public class CertificateRestoreParameters { + /** + * The backup blob associated with a certificate bundle. + */ + @JsonProperty(value = "value", required = true) + private Base64Url certificateBundleBackup; + + /** + * Get the certificateBundleBackup value. + * + * @return the certificateBundleBackup value + */ + public byte[] certificateBundleBackup() { + if (this.certificateBundleBackup == null) { + return null; + } + return this.certificateBundleBackup.decodedBytes(); + } + + /** + * Set the certificateBundleBackup value. + * + * @param certificateBundleBackup the certificateBundleBackup value to set + * @return the CertificateRestoreParameters object itself. + */ + public CertificateRestoreParameters withCertificateBundleBackup(byte[] certificateBundleBackup) { + if (certificateBundleBackup == null) { + this.certificateBundleBackup = null; + } else { + this.certificateBundleBackup = Base64Url.encode(certificateBundleBackup); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateUpdateParameters.java index 5ac31a1..7beed06 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/CertificateUpdateParameters.java @@ -1,96 +1,96 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The certificate update parameters. - */ -public class CertificateUpdateParameters { - /** - * The management policy for the certificate. - */ - @JsonProperty(value = "policy") - private CertificatePolicy certificatePolicy; - - /** - * The attributes of the certificate (optional). - */ - @JsonProperty(value = "attributes") - private CertificateAttributes certificateAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the certificatePolicy value. - * - * @return the certificatePolicy value - */ - public CertificatePolicy certificatePolicy() { - return this.certificatePolicy; - } - - /** - * Set the certificatePolicy value. - * - * @param certificatePolicy the certificatePolicy value to set - * @return the CertificateUpdateParameters object itself. - */ - public CertificateUpdateParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { - this.certificatePolicy = certificatePolicy; - return this; - } - - /** - * Get the certificateAttributes value. - * - * @return the certificateAttributes value - */ - public CertificateAttributes certificateAttributes() { - return this.certificateAttributes; - } - - /** - * Set the certificateAttributes value. - * - * @param certificateAttributes the certificateAttributes value to set - * @return the CertificateUpdateParameters object itself. - */ - public CertificateUpdateParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { - this.certificateAttributes = certificateAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the CertificateUpdateParameters object itself. - */ - public CertificateUpdateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The certificate update parameters. + */ +public class CertificateUpdateParameters { + /** + * The management policy for the certificate. + */ + @JsonProperty(value = "policy") + private CertificatePolicy certificatePolicy; + + /** + * The attributes of the certificate (optional). + */ + @JsonProperty(value = "attributes") + private CertificateAttributes certificateAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the certificatePolicy value. + * + * @return the certificatePolicy value + */ + public CertificatePolicy certificatePolicy() { + return this.certificatePolicy; + } + + /** + * Set the certificatePolicy value. + * + * @param certificatePolicy the certificatePolicy value to set + * @return the CertificateUpdateParameters object itself. + */ + public CertificateUpdateParameters withCertificatePolicy(CertificatePolicy certificatePolicy) { + this.certificatePolicy = certificatePolicy; + return this; + } + + /** + * Get the certificateAttributes value. + * + * @return the certificateAttributes value + */ + public CertificateAttributes certificateAttributes() { + return this.certificateAttributes; + } + + /** + * Set the certificateAttributes value. + * + * @param certificateAttributes the certificateAttributes value to set + * @return the CertificateUpdateParameters object itself. + */ + public CertificateUpdateParameters withCertificateAttributes(CertificateAttributes certificateAttributes) { + this.certificateAttributes = certificateAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the CertificateUpdateParameters object itself. + */ + public CertificateUpdateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contact.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contact.java index 13a2376..729c6ec 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contact.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contact.java @@ -1,95 +1,95 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The contact information for the vault certificates. - */ -public class Contact { - /** - * Email addresss. - */ - @JsonProperty(value = "email") - private String emailAddress; - - /** - * Name. - */ - @JsonProperty(value = "name") - private String name; - - /** - * Phone number. - */ - @JsonProperty(value = "phone") - private String phone; - - /** - * Get the emailAddress value. - * - * @return the emailAddress value - */ - public String emailAddress() { - return this.emailAddress; - } - - /** - * Set the emailAddress value. - * - * @param emailAddress the emailAddress value to set - * @return the Contact object itself. - */ - public Contact withEmailAddress(String emailAddress) { - this.emailAddress = emailAddress; - return this; - } - - /** - * Get the name value. - * - * @return the name value - */ - public String name() { - return this.name; - } - - /** - * Set the name value. - * - * @param name the name value to set - * @return the Contact object itself. - */ - public Contact withName(String name) { - this.name = name; - return this; - } - - /** - * Get the phone value. - * - * @return the phone value - */ - public String phone() { - return this.phone; - } - - /** - * Set the phone value. - * - * @param phone the phone value to set - * @return the Contact object itself. - */ - public Contact withPhone(String phone) { - this.phone = phone; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The contact information for the vault certificates. + */ +public class Contact { + /** + * Email addresss. + */ + @JsonProperty(value = "email") + private String emailAddress; + + /** + * Name. + */ + @JsonProperty(value = "name") + private String name; + + /** + * Phone number. + */ + @JsonProperty(value = "phone") + private String phone; + + /** + * Get the emailAddress value. + * + * @return the emailAddress value + */ + public String emailAddress() { + return this.emailAddress; + } + + /** + * Set the emailAddress value. + * + * @param emailAddress the emailAddress value to set + * @return the Contact object itself. + */ + public Contact withEmailAddress(String emailAddress) { + this.emailAddress = emailAddress; + return this; + } + + /** + * Get the name value. + * + * @return the name value + */ + public String name() { + return this.name; + } + + /** + * Set the name value. + * + * @param name the name value to set + * @return the Contact object itself. + */ + public Contact withName(String name) { + this.name = name; + return this; + } + + /** + * Get the phone value. + * + * @return the phone value + */ + public String phone() { + return this.phone; + } + + /** + * Set the phone value. + * + * @param phone the phone value to set + * @return the Contact object itself. + */ + public Contact withPhone(String phone) { + this.phone = phone; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contacts.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contacts.java index 14a7a94..b9b0b35 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contacts.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Contacts.java @@ -1,59 +1,59 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The contacts for the vault certificates. - */ -public class Contacts { - /** - * Identifier for the contacts collection. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * The contact list for the vault certificates. - */ - @JsonProperty(value = "contacts") - private List contactList; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the contactList value. - * - * @return the contactList value - */ - public List contactList() { - return this.contactList; - } - - /** - * Set the contactList value. - * - * @param contactList the contactList value to set - * @return the Contacts object itself. - */ - public Contacts withContactList(List contactList) { - this.contactList = contactList; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The contacts for the vault certificates. + */ +public class Contacts { + /** + * Identifier for the contacts collection. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * The contact list for the vault certificates. + */ + @JsonProperty(value = "contacts") + private List contactList; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the contactList value. + * + * @return the contactList value + */ + public List contactList() { + return this.contactList; + } + + /** + * Set the contactList value. + * + * @param contactList the contactList value to set + * @return the Contacts object itself. + */ + public Contacts withContactList(List contactList) { + this.contactList = contactList; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateBundle.java index afe1634..4b1926c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateBundle.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A Deleted Certificate consisting of its previous id, attributes and its - * tags, as well as information on when it will be purged. - */ -public class DeletedCertificateBundle extends CertificateBundle { - /** - * The url of the recovery object, used to identify and recover the deleted - * certificate. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the certificate is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the certificate was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedCertificateBundle object itself. - */ - public DeletedCertificateBundle withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A Deleted Certificate consisting of its previous id, attributes and its + * tags, as well as information on when it will be purged. + */ +public class DeletedCertificateBundle extends CertificateBundle { + /** + * The url of the recovery object, used to identify and recover the deleted + * certificate. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the certificate is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the certificate was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedCertificateBundle object itself. + */ + public DeletedCertificateBundle withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateItem.java index 9aff462..5d14c76 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedCertificateItem.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The deleted certificate item containing metadata about the deleted - * certificate. - */ -public class DeletedCertificateItem extends CertificateItem { - /** - * The url of the recovery object, used to identify and recover the deleted - * certificate. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the certificate is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the certificate was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedCertificateItem object itself. - */ - public DeletedCertificateItem withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The deleted certificate item containing metadata about the deleted + * certificate. + */ +public class DeletedCertificateItem extends CertificateItem { + /** + * The url of the recovery object, used to identify and recover the deleted + * certificate. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the certificate is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the certificate was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedCertificateItem object itself. + */ + public DeletedCertificateItem withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyBundle.java index 0499195..5125230 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyBundle.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion - * info. - */ -public class DeletedKeyBundle extends KeyBundle { - /** - * The url of the recovery object, used to identify and recover the deleted - * key. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the key is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the key was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedKeyBundle object itself. - */ - public DeletedKeyBundle withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A DeletedKeyBundle consisting of a WebKey plus its Attributes and deletion + * info. + */ +public class DeletedKeyBundle extends KeyBundle { + /** + * The url of the recovery object, used to identify and recover the deleted + * key. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the key is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the key was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedKeyBundle object itself. + */ + public DeletedKeyBundle withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyItem.java index dd67370..b374beb 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedKeyItem.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The deleted key item containing the deleted key metadata and information - * about deletion. - */ -public class DeletedKeyItem extends KeyItem { - /** - * The url of the recovery object, used to identify and recover the deleted - * key. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the key is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the key was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedKeyItem object itself. - */ - public DeletedKeyItem withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The deleted key item containing the deleted key metadata and information + * about deletion. + */ +public class DeletedKeyItem extends KeyItem { + /** + * The url of the recovery object, used to identify and recover the deleted + * key. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the key is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the key was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedKeyItem object itself. + */ + public DeletedKeyItem withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionBundle.java index d7da4f6..35575a2 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionBundle.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A deleted SAS definition bundle consisting of its previous id, attributes - * and its tags, as well as information on when it will be purged. - */ -public class DeletedSasDefinitionBundle extends SasDefinitionBundle { - /** - * The url of the recovery object, used to identify and recover the deleted - * SAS definition. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the SAS definition is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the SAS definition was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedSasDefinitionBundle object itself. - */ - public DeletedSasDefinitionBundle withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A deleted SAS definition bundle consisting of its previous id, attributes + * and its tags, as well as information on when it will be purged. + */ +public class DeletedSasDefinitionBundle extends SasDefinitionBundle { + /** + * The url of the recovery object, used to identify and recover the deleted + * SAS definition. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the SAS definition is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the SAS definition was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedSasDefinitionBundle object itself. + */ + public DeletedSasDefinitionBundle withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionItem.java index b68d052..15aae9e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSasDefinitionItem.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The deleted SAS definition item containing metadata about the deleted SAS - * definition. - */ -public class DeletedSasDefinitionItem extends SasDefinitionItem { - /** - * The url of the recovery object, used to identify and recover the deleted - * SAS definition. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the SAS definition is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the SAS definition was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedSasDefinitionItem object itself. - */ - public DeletedSasDefinitionItem withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The deleted SAS definition item containing metadata about the deleted SAS + * definition. + */ +public class DeletedSasDefinitionItem extends SasDefinitionItem { + /** + * The url of the recovery object, used to identify and recover the deleted + * SAS definition. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the SAS definition is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the SAS definition was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedSasDefinitionItem object itself. + */ + public DeletedSasDefinitionItem withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretBundle.java index eb9be19..001639d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretBundle.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A Deleted Secret consisting of its previous id, attributes and its tags, as - * well as information on when it will be purged. - */ -public class DeletedSecretBundle extends SecretBundle { - /** - * The url of the recovery object, used to identify and recover the deleted - * secret. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the secret is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the secret was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedSecretBundle object itself. - */ - public DeletedSecretBundle withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A Deleted Secret consisting of its previous id, attributes and its tags, as + * well as information on when it will be purged. + */ +public class DeletedSecretBundle extends SecretBundle { + /** + * The url of the recovery object, used to identify and recover the deleted + * secret. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the secret is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the secret was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedSecretBundle object itself. + */ + public DeletedSecretBundle withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretItem.java index 586ad64..35865f3 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedSecretItem.java @@ -1,82 +1,82 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The deleted secret item containing metadata about the deleted secret. - */ -public class DeletedSecretItem extends SecretItem { - /** - * The url of the recovery object, used to identify and recover the deleted - * secret. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the secret is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the secret was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedSecretItem object itself. - */ - public DeletedSecretItem withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The deleted secret item containing metadata about the deleted secret. + */ +public class DeletedSecretItem extends SecretItem { + /** + * The url of the recovery object, used to identify and recover the deleted + * secret. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the secret is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the secret was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedSecretItem object itself. + */ + public DeletedSecretItem withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageAccountItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageAccountItem.java index 6f1fd90..290bb19 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageAccountItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageAccountItem.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The deleted storage account item containing metadata about the deleted - * storage account. - */ -public class DeletedStorageAccountItem extends StorageAccountItem { - /** - * The url of the recovery object, used to identify and recover the deleted - * storage account. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the storage account is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the storage account was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedStorageAccountItem object itself. - */ - public DeletedStorageAccountItem withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The deleted storage account item containing metadata about the deleted + * storage account. + */ +public class DeletedStorageAccountItem extends StorageAccountItem { + /** + * The url of the recovery object, used to identify and recover the deleted + * storage account. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the storage account is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the storage account was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedStorageAccountItem object itself. + */ + public DeletedStorageAccountItem withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageBundle.java index ff49fb1..7d1baa4 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletedStorageBundle.java @@ -1,83 +1,83 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A deleted storage account bundle consisting of its previous id, attributes - * and its tags, as well as information on when it will be purged. - */ -public class DeletedStorageBundle extends StorageBundle { - /** - * The url of the recovery object, used to identify and recover the deleted - * storage account. - */ - @JsonProperty(value = "recoveryId") - private String recoveryId; - - /** - * The time when the storage account is scheduled to be purged, in UTC. - */ - @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) - private Long scheduledPurgeDate; - - /** - * The time when the storage account was deleted, in UTC. - */ - @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) - private Long deletedDate; - - /** - * Get the recoveryId value. - * - * @return the recoveryId value - */ - public String recoveryId() { - return this.recoveryId; - } - - /** - * Set the recoveryId value. - * - * @param recoveryId the recoveryId value to set - * @return the DeletedStorageBundle object itself. - */ - public DeletedStorageBundle withRecoveryId(String recoveryId) { - this.recoveryId = recoveryId; - return this; - } - - /** - * Get the scheduledPurgeDate value. - * - * @return the scheduledPurgeDate value - */ - public DateTime scheduledPurgeDate() { - if (this.scheduledPurgeDate == null) { - return null; - } - return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); - } - - /** - * Get the deletedDate value. - * - * @return the deletedDate value - */ - public DateTime deletedDate() { - if (this.deletedDate == null) { - return null; - } - return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A deleted storage account bundle consisting of its previous id, attributes + * and its tags, as well as information on when it will be purged. + */ +public class DeletedStorageBundle extends StorageBundle { + /** + * The url of the recovery object, used to identify and recover the deleted + * storage account. + */ + @JsonProperty(value = "recoveryId") + private String recoveryId; + + /** + * The time when the storage account is scheduled to be purged, in UTC. + */ + @JsonProperty(value = "scheduledPurgeDate", access = JsonProperty.Access.WRITE_ONLY) + private Long scheduledPurgeDate; + + /** + * The time when the storage account was deleted, in UTC. + */ + @JsonProperty(value = "deletedDate", access = JsonProperty.Access.WRITE_ONLY) + private Long deletedDate; + + /** + * Get the recoveryId value. + * + * @return the recoveryId value + */ + public String recoveryId() { + return this.recoveryId; + } + + /** + * Set the recoveryId value. + * + * @param recoveryId the recoveryId value to set + * @return the DeletedStorageBundle object itself. + */ + public DeletedStorageBundle withRecoveryId(String recoveryId) { + this.recoveryId = recoveryId; + return this; + } + + /** + * Get the scheduledPurgeDate value. + * + * @return the scheduledPurgeDate value + */ + public DateTime scheduledPurgeDate() { + if (this.scheduledPurgeDate == null) { + return null; + } + return new DateTime(this.scheduledPurgeDate * 1000L, DateTimeZone.UTC); + } + + /** + * Get the deletedDate value. + * + * @return the deletedDate value + */ + public DateTime deletedDate() { + if (this.deletedDate == null) { + return null; + } + return new DateTime(this.deletedDate * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletionRecoveryLevel.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletionRecoveryLevel.java index 9dc34d4..8e02a9c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletionRecoveryLevel.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/DeletionRecoveryLevel.java @@ -1,47 +1,65 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Collection; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.microsoft.rest.ExpandableStringEnum; - -/** - * Defines values for DeletionRecoveryLevel. - */ -public final class DeletionRecoveryLevel extends ExpandableStringEnum { - /** Static value Purgeable for DeletionRecoveryLevel. */ - public static final DeletionRecoveryLevel PURGEABLE = fromString("Purgeable"); - - /** Static value Recoverable+Purgeable for DeletionRecoveryLevel. */ - public static final DeletionRecoveryLevel RECOVERABLE_PURGEABLE = fromString("Recoverable+Purgeable"); - - /** Static value Recoverable for DeletionRecoveryLevel. */ - public static final DeletionRecoveryLevel RECOVERABLE = fromString("Recoverable"); - - /** Static value Recoverable+ProtectedSubscription for DeletionRecoveryLevel. */ - public static final DeletionRecoveryLevel RECOVERABLE_PROTECTED_SUBSCRIPTION = fromString("Recoverable+ProtectedSubscription"); - - /** - * Creates or finds a DeletionRecoveryLevel from its string representation. - * @param name a name to look for - * @return the corresponding DeletionRecoveryLevel - */ - @JsonCreator - public static DeletionRecoveryLevel fromString(String name) { - return fromString(name, DeletionRecoveryLevel.class); - } - - /** - * @return known DeletionRecoveryLevel values - */ - public static Collection values() { - return values(DeletionRecoveryLevel.class); - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines values for DeletionRecoveryLevel. + */ +public final class DeletionRecoveryLevel { + /** Static value Purgeable for DeletionRecoveryLevel. */ + public static final DeletionRecoveryLevel PURGEABLE = new DeletionRecoveryLevel("Purgeable"); + + /** Static value Recoverable+Purgeable for DeletionRecoveryLevel. */ + public static final DeletionRecoveryLevel RECOVERABLE_PURGEABLE = new DeletionRecoveryLevel("Recoverable+Purgeable"); + + /** Static value Recoverable for DeletionRecoveryLevel. */ + public static final DeletionRecoveryLevel RECOVERABLE = new DeletionRecoveryLevel("Recoverable"); + + /** Static value Recoverable+ProtectedSubscription for DeletionRecoveryLevel. */ + public static final DeletionRecoveryLevel RECOVERABLE_PROTECTED_SUBSCRIPTION = new DeletionRecoveryLevel("Recoverable+ProtectedSubscription"); + + private String value; + + /** + * Creates a custom value for DeletionRecoveryLevel. + * @param value the custom value + */ + public DeletionRecoveryLevel(String value) { + this.value = value; + } + + @JsonValue + @Override + public String toString() { + return value; + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof DeletionRecoveryLevel)) { + return false; + } + if (obj == this) { + return true; + } + DeletionRecoveryLevel rhs = (DeletionRecoveryLevel) obj; + if (value == null) { + return rhs.value == null; + } else { + return value.equals(rhs.value); + } + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Error.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Error.java index 46dba39..78fc47d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Error.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Error.java @@ -1,62 +1,62 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key vault server error. - */ -public class Error { - /** - * The error code. - */ - @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY) - private String code; - - /** - * The error message. - */ - @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY) - private String message; - - /** - * The innerError property. - */ - @JsonProperty(value = "innererror", access = JsonProperty.Access.WRITE_ONLY) - private Error innerError; - - /** - * Get the code value. - * - * @return the code value - */ - public String code() { - return this.code; - } - - /** - * Get the message value. - * - * @return the message value - */ - public String message() { - return this.message; - } - - /** - * Get the innerError value. - * - * @return the innerError value - */ - public Error innerError() { - return this.innerError; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key vault server error. + */ +public class Error { + /** + * The error code. + */ + @JsonProperty(value = "code", access = JsonProperty.Access.WRITE_ONLY) + private String code; + + /** + * The error message. + */ + @JsonProperty(value = "message", access = JsonProperty.Access.WRITE_ONLY) + private String message; + + /** + * The innerError property. + */ + @JsonProperty(value = "innererror", access = JsonProperty.Access.WRITE_ONLY) + private Error innerError; + + /** + * Get the code value. + * + * @return the code value + */ + public String code() { + return this.code; + } + + /** + * Get the message value. + * + * @return the message value + */ + public String message() { + return this.message; + } + + /** + * Get the innerError value. + * + * @return the innerError value + */ + public Error innerError() { + return this.innerError; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerAttributes.java index 32d1d01..baf7413 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerAttributes.java @@ -1,81 +1,81 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The attributes of an issuer managed by the Key Vault service. - */ -public class IssuerAttributes { - /** - * Determines whether the issuer is enabled. - */ - @JsonProperty(value = "enabled") - private Boolean enabled; - - /** - * Creation time in UTC. - */ - @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) - private Long created; - - /** - * Last updated time in UTC. - */ - @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) - private Long updated; - - /** - * Get the enabled value. - * - * @return the enabled value - */ - public Boolean enabled() { - return this.enabled; - } - - /** - * Set the enabled value. - * - * @param enabled the enabled value to set - * @return the IssuerAttributes object itself. - */ - public IssuerAttributes withEnabled(Boolean enabled) { - this.enabled = enabled; - return this; - } - - /** - * Get the created value. - * - * @return the created value - */ - public DateTime created() { - if (this.created == null) { - return null; - } - return new DateTime(this.created * 1000L, DateTimeZone.UTC); - } - - /** - * Get the updated value. - * - * @return the updated value - */ - public DateTime updated() { - if (this.updated == null) { - return null; - } - return new DateTime(this.updated * 1000L, DateTimeZone.UTC); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The attributes of an issuer managed by the Key Vault service. + */ +public class IssuerAttributes { + /** + * Determines whether the issuer is enabled. + */ + @JsonProperty(value = "enabled") + private Boolean enabled; + + /** + * Creation time in UTC. + */ + @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) + private Long created; + + /** + * Last updated time in UTC. + */ + @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) + private Long updated; + + /** + * Get the enabled value. + * + * @return the enabled value + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled value. + * + * @param enabled the enabled value to set + * @return the IssuerAttributes object itself. + */ + public IssuerAttributes withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the created value. + * + * @return the created value + */ + public DateTime created() { + if (this.created == null) { + return null; + } + return new DateTime(this.created * 1000L, DateTimeZone.UTC); + } + + /** + * Get the updated value. + * + * @return the updated value + */ + public DateTime updated() { + if (this.updated == null) { + return null; + } + return new DateTime(this.updated * 1000L, DateTimeZone.UTC); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerBundle.java index 811300c..a6b6d53 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerBundle.java @@ -1,136 +1,136 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The issuer for Key Vault certificate. - */ -public class IssuerBundle extends com.microsoft.azure.keyvault.models.custom.IssuerBundle { - /** - * Identifier for the issuer object. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * The issuer provider. - */ - @JsonProperty(value = "provider") - private String provider; - - /** - * The credentials to be used for the issuer. - */ - @JsonProperty(value = "credentials") - private IssuerCredentials credentials; - - /** - * Details of the organization as provided to the issuer. - */ - @JsonProperty(value = "org_details") - private OrganizationDetails organizationDetails; - - /** - * Attributes of the issuer object. - */ - @JsonProperty(value = "attributes") - private IssuerAttributes attributes; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the provider value. - * - * @return the provider value - */ - public String provider() { - return this.provider; - } - - /** - * Set the provider value. - * - * @param provider the provider value to set - * @return the IssuerBundle object itself. - */ - public IssuerBundle withProvider(String provider) { - this.provider = provider; - return this; - } - - /** - * Get the credentials value. - * - * @return the credentials value - */ - public IssuerCredentials credentials() { - return this.credentials; - } - - /** - * Set the credentials value. - * - * @param credentials the credentials value to set - * @return the IssuerBundle object itself. - */ - public IssuerBundle withCredentials(IssuerCredentials credentials) { - this.credentials = credentials; - return this; - } - - /** - * Get the organizationDetails value. - * - * @return the organizationDetails value - */ - public OrganizationDetails organizationDetails() { - return this.organizationDetails; - } - - /** - * Set the organizationDetails value. - * - * @param organizationDetails the organizationDetails value to set - * @return the IssuerBundle object itself. - */ - public IssuerBundle withOrganizationDetails(OrganizationDetails organizationDetails) { - this.organizationDetails = organizationDetails; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public IssuerAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the IssuerBundle object itself. - */ - public IssuerBundle withAttributes(IssuerAttributes attributes) { - this.attributes = attributes; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The issuer for Key Vault certificate. + */ +public class IssuerBundle extends com.microsoft.azure.keyvault.models.custom.IssuerBundle { + /** + * Identifier for the issuer object. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * The issuer provider. + */ + @JsonProperty(value = "provider") + private String provider; + + /** + * The credentials to be used for the issuer. + */ + @JsonProperty(value = "credentials") + private IssuerCredentials credentials; + + /** + * Details of the organization as provided to the issuer. + */ + @JsonProperty(value = "org_details") + private OrganizationDetails organizationDetails; + + /** + * Attributes of the issuer object. + */ + @JsonProperty(value = "attributes") + private IssuerAttributes attributes; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the provider value. + * + * @return the provider value + */ + public String provider() { + return this.provider; + } + + /** + * Set the provider value. + * + * @param provider the provider value to set + * @return the IssuerBundle object itself. + */ + public IssuerBundle withProvider(String provider) { + this.provider = provider; + return this; + } + + /** + * Get the credentials value. + * + * @return the credentials value + */ + public IssuerCredentials credentials() { + return this.credentials; + } + + /** + * Set the credentials value. + * + * @param credentials the credentials value to set + * @return the IssuerBundle object itself. + */ + public IssuerBundle withCredentials(IssuerCredentials credentials) { + this.credentials = credentials; + return this; + } + + /** + * Get the organizationDetails value. + * + * @return the organizationDetails value + */ + public OrganizationDetails organizationDetails() { + return this.organizationDetails; + } + + /** + * Set the organizationDetails value. + * + * @param organizationDetails the organizationDetails value to set + * @return the IssuerBundle object itself. + */ + public IssuerBundle withOrganizationDetails(OrganizationDetails organizationDetails) { + this.organizationDetails = organizationDetails; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public IssuerAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the IssuerBundle object itself. + */ + public IssuerBundle withAttributes(IssuerAttributes attributes) { + this.attributes = attributes; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerCredentials.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerCredentials.java index 5651c64..ea80447 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerCredentials.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerCredentials.java @@ -1,69 +1,69 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The credentials to be used for the certificate issuer. - */ -public class IssuerCredentials { - /** - * The user name/account name/account id. - */ - @JsonProperty(value = "account_id") - private String accountId; - - /** - * The password/secret/account key. - */ - @JsonProperty(value = "pwd") - private String password; - - /** - * Get the accountId value. - * - * @return the accountId value - */ - public String accountId() { - return this.accountId; - } - - /** - * Set the accountId value. - * - * @param accountId the accountId value to set - * @return the IssuerCredentials object itself. - */ - public IssuerCredentials withAccountId(String accountId) { - this.accountId = accountId; - return this; - } - - /** - * Get the password value. - * - * @return the password value - */ - public String password() { - return this.password; - } - - /** - * Set the password value. - * - * @param password the password value to set - * @return the IssuerCredentials object itself. - */ - public IssuerCredentials withPassword(String password) { - this.password = password; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The credentials to be used for the certificate issuer. + */ +public class IssuerCredentials { + /** + * The user name/account name/account id. + */ + @JsonProperty(value = "account_id") + private String accountId; + + /** + * The password/secret/account key. + */ + @JsonProperty(value = "pwd") + private String password; + + /** + * Get the accountId value. + * + * @return the accountId value + */ + public String accountId() { + return this.accountId; + } + + /** + * Set the accountId value. + * + * @param accountId the accountId value to set + * @return the IssuerCredentials object itself. + */ + public IssuerCredentials withAccountId(String accountId) { + this.accountId = accountId; + return this; + } + + /** + * Get the password value. + * + * @return the password value + */ + public String password() { + return this.password; + } + + /** + * Set the password value. + * + * @param password the password value to set + * @return the IssuerCredentials object itself. + */ + public IssuerCredentials withPassword(String password) { + this.password = password; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerParameters.java index f730584..4258978 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/IssuerParameters.java @@ -1,97 +1,97 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Parameters for the issuer of the X509 component of a certificate. - */ -public class IssuerParameters { - /** - * Name of the referenced issuer object or reserved names; for example, - * 'Self' or 'Unknown'. - */ - @JsonProperty(value = "name") - private String name; - - /** - * Type of certificate to be requested from the issuer provider. - */ - @JsonProperty(value = "cty") - private String certificateType; - - /** - * Indicates if the certificates generated under this policy should be - * published to certificate transparency logs. - */ - @JsonProperty(value = "cert_transparency") - private Boolean certificateTransparency; - - /** - * Get the name value. - * - * @return the name value - */ - public String name() { - return this.name; - } - - /** - * Set the name value. - * - * @param name the name value to set - * @return the IssuerParameters object itself. - */ - public IssuerParameters withName(String name) { - this.name = name; - return this; - } - - /** - * Get the certificateType value. - * - * @return the certificateType value - */ - public String certificateType() { - return this.certificateType; - } - - /** - * Set the certificateType value. - * - * @param certificateType the certificateType value to set - * @return the IssuerParameters object itself. - */ - public IssuerParameters withCertificateType(String certificateType) { - this.certificateType = certificateType; - return this; - } - - /** - * Get the certificateTransparency value. - * - * @return the certificateTransparency value - */ - public Boolean certificateTransparency() { - return this.certificateTransparency; - } - - /** - * Set the certificateTransparency value. - * - * @param certificateTransparency the certificateTransparency value to set - * @return the IssuerParameters object itself. - */ - public IssuerParameters withCertificateTransparency(Boolean certificateTransparency) { - this.certificateTransparency = certificateTransparency; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Parameters for the issuer of the X509 component of a certificate. + */ +public class IssuerParameters { + /** + * Name of the referenced issuer object or reserved names; for example, + * 'Self' or 'Unknown'. + */ + @JsonProperty(value = "name") + private String name; + + /** + * Type of certificate to be requested from the issuer provider. + */ + @JsonProperty(value = "cty") + private String certificateType; + + /** + * Indicates if the certificates generated under this policy should be + * published to certificate transparency logs. + */ + @JsonProperty(value = "cert_transparency") + private Boolean certificateTransparency; + + /** + * Get the name value. + * + * @return the name value + */ + public String name() { + return this.name; + } + + /** + * Set the name value. + * + * @param name the name value to set + * @return the IssuerParameters object itself. + */ + public IssuerParameters withName(String name) { + this.name = name; + return this; + } + + /** + * Get the certificateType value. + * + * @return the certificateType value + */ + public String certificateType() { + return this.certificateType; + } + + /** + * Set the certificateType value. + * + * @param certificateType the certificateType value to set + * @return the IssuerParameters object itself. + */ + public IssuerParameters withCertificateType(String certificateType) { + this.certificateType = certificateType; + return this; + } + + /** + * Get the certificateTransparency value. + * + * @return the certificateTransparency value + */ + public Boolean certificateTransparency() { + return this.certificateTransparency; + } + + /** + * Set the certificateTransparency value. + * + * @param certificateTransparency the certificateTransparency value to set + * @return the IssuerParameters object itself. + */ + public IssuerParameters withCertificateTransparency(Boolean certificateTransparency) { + this.certificateTransparency = certificateTransparency; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/JsonWebKeyCurveName.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/JsonWebKeyCurveName.java index 3c998f4..a1c2caf 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/JsonWebKeyCurveName.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/JsonWebKeyCurveName.java @@ -1,47 +1,65 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Collection; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.microsoft.rest.ExpandableStringEnum; - -/** - * Defines values for JsonWebKeyCurveName. - */ -public final class JsonWebKeyCurveName extends ExpandableStringEnum { - /** Static value P-256 for JsonWebKeyCurveName. */ - public static final JsonWebKeyCurveName P_256 = fromString("P-256"); - - /** Static value P-384 for JsonWebKeyCurveName. */ - public static final JsonWebKeyCurveName P_384 = fromString("P-384"); - - /** Static value P-521 for JsonWebKeyCurveName. */ - public static final JsonWebKeyCurveName P_521 = fromString("P-521"); - - /** Static value SECP256K1 for JsonWebKeyCurveName. */ - public static final JsonWebKeyCurveName SECP256K1 = fromString("SECP256K1"); - - /** - * Creates or finds a JsonWebKeyCurveName from its string representation. - * @param name a name to look for - * @return the corresponding JsonWebKeyCurveName - */ - @JsonCreator - public static JsonWebKeyCurveName fromString(String name) { - return fromString(name, JsonWebKeyCurveName.class); - } - - /** - * @return known JsonWebKeyCurveName values - */ - public static Collection values() { - return values(JsonWebKeyCurveName.class); - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines values for JsonWebKeyCurveName. + */ +public final class JsonWebKeyCurveName { + /** Static value P-256 for JsonWebKeyCurveName. */ + public static final JsonWebKeyCurveName P_256 = new JsonWebKeyCurveName("P-256"); + + /** Static value P-384 for JsonWebKeyCurveName. */ + public static final JsonWebKeyCurveName P_384 = new JsonWebKeyCurveName("P-384"); + + /** Static value P-521 for JsonWebKeyCurveName. */ + public static final JsonWebKeyCurveName P_521 = new JsonWebKeyCurveName("P-521"); + + /** Static value P-256K for JsonWebKeyCurveName. */ + public static final JsonWebKeyCurveName P_256K = new JsonWebKeyCurveName("P-256K"); + + private String value; + + /** + * Creates a custom value for JsonWebKeyCurveName. + * @param value the custom value + */ + public JsonWebKeyCurveName(String value) { + this.value = value; + } + + @JsonValue + @Override + public String toString() { + return value; + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof JsonWebKeyCurveName)) { + return false; + } + if (obj == this) { + return true; + } + JsonWebKeyCurveName rhs = (JsonWebKeyCurveName) obj; + if (value == null) { + return rhs.value == null; + } else { + return value.equals(rhs.value); + } + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyAttributes.java index 7d750ed..27c3115 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyAttributes.java @@ -1,37 +1,37 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The attributes of a key managed by the key vault service. - */ -public class KeyAttributes extends Attributes { - /** - * Reflects the deletion recovery level currently in effect for keys in the - * current vault. If it contains 'Purgeable' the key can be permanently - * deleted by a privileged user; otherwise, only the system can purge the - * key, at the end of the retention interval. Possible values include: - * 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription'. - */ - @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) - private DeletionRecoveryLevel recoveryLevel; - - /** - * Get the recoveryLevel value. - * - * @return the recoveryLevel value - */ - public DeletionRecoveryLevel recoveryLevel() { - return this.recoveryLevel; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The attributes of a key managed by the key vault service. + */ +public class KeyAttributes extends Attributes { + /** + * Reflects the deletion recovery level currently in effect for keys in the + * current vault. If it contains 'Purgeable' the key can be permanently + * deleted by a privileged user; otherwise, only the system can purge the + * key, at the end of the retention interval. Possible values include: + * 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', + * 'Recoverable+ProtectedSubscription'. + */ + @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) + private DeletionRecoveryLevel recoveryLevel; + + /** + * Get the recoveryLevel value. + * + * @return the recoveryLevel value + */ + public DeletionRecoveryLevel recoveryLevel() { + return this.recoveryLevel; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyBundle.java index e896912..a505c68 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyBundle.java @@ -1,113 +1,113 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A KeyBundle consisting of a WebKey plus its attributes. - */ -public class KeyBundle extends com.microsoft.azure.keyvault.models.custom.KeyBundle { - /** - * The Json web key. - */ - @JsonProperty(value = "key") - private JsonWebKey key; - - /** - * The key management attributes. - */ - @JsonProperty(value = "attributes") - private KeyAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * True if the key's lifetime is managed by key vault. If this is a key - * backing a certificate, then managed will be true. - */ - @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) - private Boolean managed; - - /** - * Get the key value. - * - * @return the key value - */ - public JsonWebKey key() { - return this.key; - } - - /** - * Set the key value. - * - * @param key the key value to set - * @return the KeyBundle object itself. - */ - public KeyBundle withKey(JsonWebKey key) { - this.key = key; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public KeyAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the KeyBundle object itself. - */ - public KeyBundle withAttributes(KeyAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the KeyBundle object itself. - */ - public KeyBundle withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the managed value. - * - * @return the managed value - */ - public Boolean managed() { - return this.managed; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A KeyBundle consisting of a WebKey plus its attributes. + */ +public class KeyBundle extends com.microsoft.azure.keyvault.models.custom.KeyBundle { + /** + * The Json web key. + */ + @JsonProperty(value = "key") + private JsonWebKey key; + + /** + * The key management attributes. + */ + @JsonProperty(value = "attributes") + private KeyAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * True if the key's lifetime is managed by key vault. If this is a key + * backing a certificate, then managed will be true. + */ + @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) + private Boolean managed; + + /** + * Get the key value. + * + * @return the key value + */ + public JsonWebKey key() { + return this.key; + } + + /** + * Set the key value. + * + * @param key the key value to set + * @return the KeyBundle object itself. + */ + public KeyBundle withKey(JsonWebKey key) { + this.key = key; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public KeyAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the KeyBundle object itself. + */ + public KeyBundle withAttributes(KeyAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the KeyBundle object itself. + */ + public KeyBundle withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the managed value. + * + * @return the managed value + */ + public Boolean managed() { + return this.managed; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyCreateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyCreateParameters.java index f3a03b3..76ecda2 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyCreateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyCreateParameters.java @@ -1,179 +1,179 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import java.util.List; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key create parameters. - */ -public class KeyCreateParameters { - /** - * The type of key to create. For valid values, see JsonWebKeyType. - * Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. - */ - @JsonProperty(value = "kty", required = true) - private JsonWebKeyType kty; - - /** - * The key size in bytes. For example, 1024 or 2048. - */ - @JsonProperty(value = "key_size") - private Integer keySize; - - /** - * The keyOps property. - */ - @JsonProperty(value = "key_ops") - private List keyOps; - - /** - * The keyAttributes property. - */ - @JsonProperty(value = "attributes") - private KeyAttributes keyAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible - * values include: 'P-256', 'P-384', 'P-521', 'SECP256K1'. - */ - @JsonProperty(value = "crv") - private JsonWebKeyCurveName curve; - - /** - * Get the kty value. - * - * @return the kty value - */ - public JsonWebKeyType kty() { - return this.kty; - } - - /** - * Set the kty value. - * - * @param kty the kty value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withKty(JsonWebKeyType kty) { - this.kty = kty; - return this; - } - - /** - * Get the keySize value. - * - * @return the keySize value - */ - public Integer keySize() { - return this.keySize; - } - - /** - * Set the keySize value. - * - * @param keySize the keySize value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withKeySize(Integer keySize) { - this.keySize = keySize; - return this; - } - - /** - * Get the keyOps value. - * - * @return the keyOps value - */ - public List keyOps() { - return this.keyOps; - } - - /** - * Set the keyOps value. - * - * @param keyOps the keyOps value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withKeyOps(List keyOps) { - this.keyOps = keyOps; - return this; - } - - /** - * Get the keyAttributes value. - * - * @return the keyAttributes value - */ - public KeyAttributes keyAttributes() { - return this.keyAttributes; - } - - /** - * Set the keyAttributes value. - * - * @param keyAttributes the keyAttributes value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withKeyAttributes(KeyAttributes keyAttributes) { - this.keyAttributes = keyAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the curve value. - * - * @return the curve value - */ - public JsonWebKeyCurveName curve() { - return this.curve; - } - - /** - * Set the curve value. - * - * @param curve the curve value to set - * @return the KeyCreateParameters object itself. - */ - public KeyCreateParameters withCurve(JsonWebKeyCurveName curve) { - this.curve = curve; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import java.util.List; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key create parameters. + */ +public class KeyCreateParameters { + /** + * The type of key to create. For valid values, see JsonWebKeyType. + * Possible values include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. + */ + @JsonProperty(value = "kty", required = true) + private JsonWebKeyType kty; + + /** + * The key size in bits. For example: 2048, 3072, or 4096 for RSA. + */ + @JsonProperty(value = "key_size") + private Integer keySize; + + /** + * The keyOps property. + */ + @JsonProperty(value = "key_ops") + private List keyOps; + + /** + * The keyAttributes property. + */ + @JsonProperty(value = "attributes") + private KeyAttributes keyAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible + * values include: 'P-256', 'P-384', 'P-521', 'P-256K'. + */ + @JsonProperty(value = "crv") + private JsonWebKeyCurveName curve; + + /** + * Get the kty value. + * + * @return the kty value + */ + public JsonWebKeyType kty() { + return this.kty; + } + + /** + * Set the kty value. + * + * @param kty the kty value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withKty(JsonWebKeyType kty) { + this.kty = kty; + return this; + } + + /** + * Get the keySize value. + * + * @return the keySize value + */ + public Integer keySize() { + return this.keySize; + } + + /** + * Set the keySize value. + * + * @param keySize the keySize value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withKeySize(Integer keySize) { + this.keySize = keySize; + return this; + } + + /** + * Get the keyOps value. + * + * @return the keyOps value + */ + public List keyOps() { + return this.keyOps; + } + + /** + * Set the keyOps value. + * + * @param keyOps the keyOps value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withKeyOps(List keyOps) { + this.keyOps = keyOps; + return this; + } + + /** + * Get the keyAttributes value. + * + * @return the keyAttributes value + */ + public KeyAttributes keyAttributes() { + return this.keyAttributes; + } + + /** + * Set the keyAttributes value. + * + * @param keyAttributes the keyAttributes value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withKeyAttributes(KeyAttributes keyAttributes) { + this.keyAttributes = keyAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the curve value. + * + * @return the curve value + */ + public JsonWebKeyCurveName curve() { + return this.curve; + } + + /** + * Set the curve value. + * + * @param curve the curve value to set + * @return the KeyCreateParameters object itself. + */ + public KeyCreateParameters withCurve(JsonWebKeyCurveName curve) { + this.curve = curve; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyImportParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyImportParameters.java index 17032b0..255f53a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyImportParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyImportParameters.java @@ -1,123 +1,123 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key import parameters. - */ -public class KeyImportParameters { - /** - * Whether to import as a hardware key (HSM) or software key. - */ - @JsonProperty(value = "Hsm") - private Boolean hsm; - - /** - * The Json web key. - */ - @JsonProperty(value = "key", required = true) - private JsonWebKey key; - - /** - * The key management attributes. - */ - @JsonProperty(value = "attributes") - private KeyAttributes keyAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the hsm value. - * - * @return the hsm value - */ - public Boolean hsm() { - return this.hsm; - } - - /** - * Set the hsm value. - * - * @param hsm the hsm value to set - * @return the KeyImportParameters object itself. - */ - public KeyImportParameters withHsm(Boolean hsm) { - this.hsm = hsm; - return this; - } - - /** - * Get the key value. - * - * @return the key value - */ - public JsonWebKey key() { - return this.key; - } - - /** - * Set the key value. - * - * @param key the key value to set - * @return the KeyImportParameters object itself. - */ - public KeyImportParameters withKey(JsonWebKey key) { - this.key = key; - return this; - } - - /** - * Get the keyAttributes value. - * - * @return the keyAttributes value - */ - public KeyAttributes keyAttributes() { - return this.keyAttributes; - } - - /** - * Set the keyAttributes value. - * - * @param keyAttributes the keyAttributes value to set - * @return the KeyImportParameters object itself. - */ - public KeyImportParameters withKeyAttributes(KeyAttributes keyAttributes) { - this.keyAttributes = keyAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the KeyImportParameters object itself. - */ - public KeyImportParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key import parameters. + */ +public class KeyImportParameters { + /** + * Whether to import as a hardware key (HSM) or software key. + */ + @JsonProperty(value = "Hsm") + private Boolean hsm; + + /** + * The Json web key. + */ + @JsonProperty(value = "key", required = true) + private JsonWebKey key; + + /** + * The key management attributes. + */ + @JsonProperty(value = "attributes") + private KeyAttributes keyAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the hsm value. + * + * @return the hsm value + */ + public Boolean hsm() { + return this.hsm; + } + + /** + * Set the hsm value. + * + * @param hsm the hsm value to set + * @return the KeyImportParameters object itself. + */ + public KeyImportParameters withHsm(Boolean hsm) { + this.hsm = hsm; + return this; + } + + /** + * Get the key value. + * + * @return the key value + */ + public JsonWebKey key() { + return this.key; + } + + /** + * Set the key value. + * + * @param key the key value to set + * @return the KeyImportParameters object itself. + */ + public KeyImportParameters withKey(JsonWebKey key) { + this.key = key; + return this; + } + + /** + * Get the keyAttributes value. + * + * @return the keyAttributes value + */ + public KeyAttributes keyAttributes() { + return this.keyAttributes; + } + + /** + * Set the keyAttributes value. + * + * @param keyAttributes the keyAttributes value to set + * @return the KeyImportParameters object itself. + */ + public KeyImportParameters withKeyAttributes(KeyAttributes keyAttributes) { + this.keyAttributes = keyAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the KeyImportParameters object itself. + */ + public KeyImportParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyItem.java index 63cd0fe..03617a8 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyItem.java @@ -1,112 +1,112 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key item containing key metadata. - */ -public class KeyItem { - /** - * Key identifier. - */ - @JsonProperty(value = "kid") - private String kid; - - /** - * The key management attributes. - */ - @JsonProperty(value = "attributes") - private KeyAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * True if the key's lifetime is managed by key vault. If this is a key - * backing a certificate, then managed will be true. - */ - @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) - private Boolean managed; - - /** - * Get the kid value. - * - * @return the kid value - */ - public String kid() { - return this.kid; - } - - /** - * Set the kid value. - * - * @param kid the kid value to set - * @return the KeyItem object itself. - */ - public KeyItem withKid(String kid) { - this.kid = kid; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public KeyAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the KeyItem object itself. - */ - public KeyItem withAttributes(KeyAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the KeyItem object itself. - */ - public KeyItem withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the managed value. - * - * @return the managed value - */ - public Boolean managed() { - return this.managed; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key item containing key metadata. + */ +public class KeyItem { + /** + * Key identifier. + */ + @JsonProperty(value = "kid") + private String kid; + + /** + * The key management attributes. + */ + @JsonProperty(value = "attributes") + private KeyAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * True if the key's lifetime is managed by key vault. If this is a key + * backing a certificate, then managed will be true. + */ + @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) + private Boolean managed; + + /** + * Get the kid value. + * + * @return the kid value + */ + public String kid() { + return this.kid; + } + + /** + * Set the kid value. + * + * @param kid the kid value to set + * @return the KeyItem object itself. + */ + public KeyItem withKid(String kid) { + this.kid = kid; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public KeyAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the KeyItem object itself. + */ + public KeyItem withAttributes(KeyAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the KeyItem object itself. + */ + public KeyItem withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the managed value. + * + * @return the managed value + */ + public Boolean managed() { + return this.managed; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationResult.java index 1b94980..3761229 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationResult.java @@ -1,51 +1,51 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key operation result. - */ -public class KeyOperationResult { - /** - * Key identifier. - */ - @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) - private String kid; - - /** - * The result property. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Base64Url result; - - /** - * Get the kid value. - * - * @return the kid value - */ - public String kid() { - return this.kid; - } - - /** - * Get the result value. - * - * @return the result value - */ - public byte[] result() { - if (this.result == null) { - return null; - } - return this.result.decodedBytes(); - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key operation result. + */ +public class KeyOperationResult { + /** + * Key identifier. + */ + @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) + private String kid; + + /** + * The result property. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Base64Url result; + + /** + * Get the kid value. + * + * @return the kid value + */ + public String kid() { + return this.kid; + } + + /** + * Get the result value. + * + * @return the result value + */ + public byte[] result() { + if (this.result == null) { + return null; + } + return this.result.decodedBytes(); + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationsParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationsParameters.java index fab5425..167b8a5 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationsParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyOperationsParameters.java @@ -1,79 +1,79 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key operations parameters. - */ -public class KeyOperationsParameters { - /** - * algorithm identifier. Possible values include: 'RSA-OAEP', - * 'RSA-OAEP-256', 'RSA1_5'. - */ - @JsonProperty(value = "alg", required = true) - private JsonWebKeyEncryptionAlgorithm algorithm; - - /** - * The value property. - */ - @JsonProperty(value = "value", required = true) - private Base64Url value; - - /** - * Get the algorithm value. - * - * @return the algorithm value - */ - public JsonWebKeyEncryptionAlgorithm algorithm() { - return this.algorithm; - } - - /** - * Set the algorithm value. - * - * @param algorithm the algorithm value to set - * @return the KeyOperationsParameters object itself. - */ - public KeyOperationsParameters withAlgorithm(JsonWebKeyEncryptionAlgorithm algorithm) { - this.algorithm = algorithm; - return this; - } - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - - /** - * Set the value value. - * - * @param value the value value to set - * @return the KeyOperationsParameters object itself. - */ - public KeyOperationsParameters withValue(byte[] value) { - if (value == null) { - this.value = null; - } else { - this.value = Base64Url.encode(value); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key operations parameters. + */ +public class KeyOperationsParameters { + /** + * algorithm identifier. Possible values include: 'RSA-OAEP', + * 'RSA-OAEP-256', 'RSA1_5'. + */ + @JsonProperty(value = "alg", required = true) + private JsonWebKeyEncryptionAlgorithm algorithm; + + /** + * The value property. + */ + @JsonProperty(value = "value", required = true) + private Base64Url value; + + /** + * Get the algorithm value. + * + * @return the algorithm value + */ + public JsonWebKeyEncryptionAlgorithm algorithm() { + return this.algorithm; + } + + /** + * Set the algorithm value. + * + * @param algorithm the algorithm value to set + * @return the KeyOperationsParameters object itself. + */ + public KeyOperationsParameters withAlgorithm(JsonWebKeyEncryptionAlgorithm algorithm) { + this.algorithm = algorithm; + return this; + } + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + + /** + * Set the value value. + * + * @param value the value value to set + * @return the KeyOperationsParameters object itself. + */ + public KeyOperationsParameters withValue(byte[] value) { + if (value == null) { + this.value = null; + } else { + this.value = Base64Url.encode(value); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyProperties.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyProperties.java index 0b2d3e3..fe32ccf 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyProperties.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyProperties.java @@ -1,121 +1,150 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Properties of the key pair backing a certificate. - */ -public class KeyProperties { - /** - * Indicates if the private key can be exported. - */ - @JsonProperty(value = "exportable") - private Boolean exportable; - - /** - * The key type. - */ - @JsonProperty(value = "kty") - private String keyType; - - /** - * The key size in bytes. For example; 1024 or 2048. - */ - @JsonProperty(value = "key_size") - private Integer keySize; - - /** - * Indicates if the same key pair will be used on certificate renewal. - */ - @JsonProperty(value = "reuse_key") - private Boolean reuseKey; - - /** - * Get the exportable value. - * - * @return the exportable value - */ - public Boolean exportable() { - return this.exportable; - } - - /** - * Set the exportable value. - * - * @param exportable the exportable value to set - * @return the KeyProperties object itself. - */ - public KeyProperties withExportable(Boolean exportable) { - this.exportable = exportable; - return this; - } - - /** - * Get the keyType value. - * - * @return the keyType value - */ - public String keyType() { - return this.keyType; - } - - /** - * Set the keyType value. - * - * @param keyType the keyType value to set - * @return the KeyProperties object itself. - */ - public KeyProperties withKeyType(String keyType) { - this.keyType = keyType; - return this; - } - - /** - * Get the keySize value. - * - * @return the keySize value - */ - public Integer keySize() { - return this.keySize; - } - - /** - * Set the keySize value. - * - * @param keySize the keySize value to set - * @return the KeyProperties object itself. - */ - public KeyProperties withKeySize(Integer keySize) { - this.keySize = keySize; - return this; - } - - /** - * Get the reuseKey value. - * - * @return the reuseKey value - */ - public Boolean reuseKey() { - return this.reuseKey; - } - - /** - * Set the reuseKey value. - * - * @param reuseKey the reuseKey value to set - * @return the KeyProperties object itself. - */ - public KeyProperties withReuseKey(Boolean reuseKey) { - this.reuseKey = reuseKey; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Properties of the key pair backing a certificate. + */ +public class KeyProperties { + /** + * Indicates if the private key can be exported. + */ + @JsonProperty(value = "exportable") + private Boolean exportable; + + /** + * The type of key pair to be used for the certificate. Possible values + * include: 'EC', 'EC-HSM', 'RSA', 'RSA-HSM', 'oct'. + */ + @JsonProperty(value = "kty") + private JsonWebKeyType keyType; + + /** + * The key size in bits. For example: 2048, 3072, or 4096 for RSA. + */ + @JsonProperty(value = "key_size") + private Integer keySize; + + /** + * Indicates if the same key pair will be used on certificate renewal. + */ + @JsonProperty(value = "reuse_key") + private Boolean reuseKey; + + /** + * Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible + * values include: 'P-256', 'P-384', 'P-521', 'P-256K'. + */ + @JsonProperty(value = "crv") + private JsonWebKeyCurveName curve; + + /** + * Get the exportable value. + * + * @return the exportable value + */ + public Boolean exportable() { + return this.exportable; + } + + /** + * Set the exportable value. + * + * @param exportable the exportable value to set + * @return the KeyProperties object itself. + */ + public KeyProperties withExportable(Boolean exportable) { + this.exportable = exportable; + return this; + } + + /** + * Get the keyType value. + * + * @return the keyType value + */ + public JsonWebKeyType keyType() { + return this.keyType; + } + + /** + * Set the keyType value. + * + * @param keyType the keyType value to set + * @return the KeyProperties object itself. + */ + public KeyProperties withKeyType(JsonWebKeyType keyType) { + this.keyType = keyType; + return this; + } + + /** + * Get the keySize value. + * + * @return the keySize value + */ + public Integer keySize() { + return this.keySize; + } + + /** + * Set the keySize value. + * + * @param keySize the keySize value to set + * @return the KeyProperties object itself. + */ + public KeyProperties withKeySize(Integer keySize) { + this.keySize = keySize; + return this; + } + + /** + * Get the reuseKey value. + * + * @return the reuseKey value + */ + public Boolean reuseKey() { + return this.reuseKey; + } + + /** + * Set the reuseKey value. + * + * @param reuseKey the reuseKey value to set + * @return the KeyProperties object itself. + */ + public KeyProperties withReuseKey(Boolean reuseKey) { + this.reuseKey = reuseKey; + return this; + } + + /** + * Get the curve value. + * + * @return the curve value + */ + public JsonWebKeyCurveName curve() { + return this.curve; + } + + /** + * Set the curve value. + * + * @param curve the curve value to set + * @return the KeyProperties object itself. + */ + public KeyProperties withCurve(JsonWebKeyCurveName curve) { + this.curve = curve; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyRestoreParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyRestoreParameters.java index 6145dd0..0cf867e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyRestoreParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyRestoreParameters.java @@ -1,51 +1,51 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key restore parameters. - */ -public class KeyRestoreParameters { - /** - * The backup blob associated with a key bundle. - */ - @JsonProperty(value = "value", required = true) - private Base64Url keyBundleBackup; - - /** - * Get the keyBundleBackup value. - * - * @return the keyBundleBackup value - */ - public byte[] keyBundleBackup() { - if (this.keyBundleBackup == null) { - return null; - } - return this.keyBundleBackup.decodedBytes(); - } - - /** - * Set the keyBundleBackup value. - * - * @param keyBundleBackup the keyBundleBackup value to set - * @return the KeyRestoreParameters object itself. - */ - public KeyRestoreParameters withKeyBundleBackup(byte[] keyBundleBackup) { - if (keyBundleBackup == null) { - this.keyBundleBackup = null; - } else { - this.keyBundleBackup = Base64Url.encode(keyBundleBackup); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key restore parameters. + */ +public class KeyRestoreParameters { + /** + * The backup blob associated with a key bundle. + */ + @JsonProperty(value = "value", required = true) + private Base64Url keyBundleBackup; + + /** + * Get the keyBundleBackup value. + * + * @return the keyBundleBackup value + */ + public byte[] keyBundleBackup() { + if (this.keyBundleBackup == null) { + return null; + } + return this.keyBundleBackup.decodedBytes(); + } + + /** + * Set the keyBundleBackup value. + * + * @param keyBundleBackup the keyBundleBackup value to set + * @return the KeyRestoreParameters object itself. + */ + public KeyRestoreParameters withKeyBundleBackup(byte[] keyBundleBackup) { + if (keyBundleBackup == null) { + this.keyBundleBackup = null; + } else { + this.keyBundleBackup = Base64Url.encode(keyBundleBackup); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeySignParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeySignParameters.java index 8765f27..c5d40ed 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeySignParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeySignParameters.java @@ -1,81 +1,81 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key operations parameters. - */ -public class KeySignParameters { - /** - * The signing/verification algorithm identifier. For more information on - * possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible - * values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', - * 'RSNULL', 'ES256', 'ES384', 'ES512', 'ECDSA256'. - */ - @JsonProperty(value = "alg", required = true) - private JsonWebKeySignatureAlgorithm algorithm; - - /** - * The value property. - */ - @JsonProperty(value = "value", required = true) - private Base64Url value; - - /** - * Get the algorithm value. - * - * @return the algorithm value - */ - public JsonWebKeySignatureAlgorithm algorithm() { - return this.algorithm; - } - - /** - * Set the algorithm value. - * - * @param algorithm the algorithm value to set - * @return the KeySignParameters object itself. - */ - public KeySignParameters withAlgorithm(JsonWebKeySignatureAlgorithm algorithm) { - this.algorithm = algorithm; - return this; - } - - /** - * Get the value value. - * - * @return the value value - */ - public byte[] value() { - if (this.value == null) { - return null; - } - return this.value.decodedBytes(); - } - - /** - * Set the value value. - * - * @param value the value value to set - * @return the KeySignParameters object itself. - */ - public KeySignParameters withValue(byte[] value) { - if (value == null) { - this.value = null; - } else { - this.value = Base64Url.encode(value); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key operations parameters. + */ +public class KeySignParameters { + /** + * The signing/verification algorithm identifier. For more information on + * possible algorithm types, see JsonWebKeySignatureAlgorithm. Possible + * values include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', + * 'RSNULL', 'ES256', 'ES384', 'ES512', 'ES256K'. + */ + @JsonProperty(value = "alg", required = true) + private JsonWebKeySignatureAlgorithm algorithm; + + /** + * The value property. + */ + @JsonProperty(value = "value", required = true) + private Base64Url value; + + /** + * Get the algorithm value. + * + * @return the algorithm value + */ + public JsonWebKeySignatureAlgorithm algorithm() { + return this.algorithm; + } + + /** + * Set the algorithm value. + * + * @param algorithm the algorithm value to set + * @return the KeySignParameters object itself. + */ + public KeySignParameters withAlgorithm(JsonWebKeySignatureAlgorithm algorithm) { + this.algorithm = algorithm; + return this; + } + + /** + * Get the value value. + * + * @return the value value + */ + public byte[] value() { + if (this.value == null) { + return null; + } + return this.value.decodedBytes(); + } + + /** + * Set the value value. + * + * @param value the value value to set + * @return the KeySignParameters object itself. + */ + public KeySignParameters withValue(byte[] value) { + if (value == null) { + this.value = null; + } else { + this.value = Base64Url.encode(value); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUpdateParameters.java index cd14ebb..9752c5b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUpdateParameters.java @@ -1,99 +1,99 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import java.util.List; -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key update parameters. - */ -public class KeyUpdateParameters { - /** - * Json web key operations. For more information on possible key - * operations, see JsonWebKeyOperation. - */ - @JsonProperty(value = "key_ops") - private List keyOps; - - /** - * The keyAttributes property. - */ - @JsonProperty(value = "attributes") - private KeyAttributes keyAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the keyOps value. - * - * @return the keyOps value - */ - public List keyOps() { - return this.keyOps; - } - - /** - * Set the keyOps value. - * - * @param keyOps the keyOps value to set - * @return the KeyUpdateParameters object itself. - */ - public KeyUpdateParameters withKeyOps(List keyOps) { - this.keyOps = keyOps; - return this; - } - - /** - * Get the keyAttributes value. - * - * @return the keyAttributes value - */ - public KeyAttributes keyAttributes() { - return this.keyAttributes; - } - - /** - * Set the keyAttributes value. - * - * @param keyAttributes the keyAttributes value to set - * @return the KeyUpdateParameters object itself. - */ - public KeyUpdateParameters withKeyAttributes(KeyAttributes keyAttributes) { - this.keyAttributes = keyAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the KeyUpdateParameters object itself. - */ - public KeyUpdateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import java.util.List; +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key update parameters. + */ +public class KeyUpdateParameters { + /** + * Json web key operations. For more information on possible key + * operations, see JsonWebKeyOperation. + */ + @JsonProperty(value = "key_ops") + private List keyOps; + + /** + * The keyAttributes property. + */ + @JsonProperty(value = "attributes") + private KeyAttributes keyAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the keyOps value. + * + * @return the keyOps value + */ + public List keyOps() { + return this.keyOps; + } + + /** + * Set the keyOps value. + * + * @param keyOps the keyOps value to set + * @return the KeyUpdateParameters object itself. + */ + public KeyUpdateParameters withKeyOps(List keyOps) { + this.keyOps = keyOps; + return this; + } + + /** + * Get the keyAttributes value. + * + * @return the keyAttributes value + */ + public KeyAttributes keyAttributes() { + return this.keyAttributes; + } + + /** + * Set the keyAttributes value. + * + * @param keyAttributes the keyAttributes value to set + * @return the KeyUpdateParameters object itself. + */ + public KeyUpdateParameters withKeyAttributes(KeyAttributes keyAttributes) { + this.keyAttributes = keyAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the KeyUpdateParameters object itself. + */ + public KeyUpdateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUsageType.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUsageType.java index 488386f..3bb0eb9 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUsageType.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyUsageType.java @@ -1,62 +1,80 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Collection; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.microsoft.rest.ExpandableStringEnum; - -/** - * Defines values for KeyUsageType. - */ -public final class KeyUsageType extends ExpandableStringEnum { - /** Static value digitalSignature for KeyUsageType. */ - public static final KeyUsageType DIGITAL_SIGNATURE = fromString("digitalSignature"); - - /** Static value nonRepudiation for KeyUsageType. */ - public static final KeyUsageType NON_REPUDIATION = fromString("nonRepudiation"); - - /** Static value keyEncipherment for KeyUsageType. */ - public static final KeyUsageType KEY_ENCIPHERMENT = fromString("keyEncipherment"); - - /** Static value dataEncipherment for KeyUsageType. */ - public static final KeyUsageType DATA_ENCIPHERMENT = fromString("dataEncipherment"); - - /** Static value keyAgreement for KeyUsageType. */ - public static final KeyUsageType KEY_AGREEMENT = fromString("keyAgreement"); - - /** Static value keyCertSign for KeyUsageType. */ - public static final KeyUsageType KEY_CERT_SIGN = fromString("keyCertSign"); - - /** Static value cRLSign for KeyUsageType. */ - public static final KeyUsageType C_RLSIGN = fromString("cRLSign"); - - /** Static value encipherOnly for KeyUsageType. */ - public static final KeyUsageType ENCIPHER_ONLY = fromString("encipherOnly"); - - /** Static value decipherOnly for KeyUsageType. */ - public static final KeyUsageType DECIPHER_ONLY = fromString("decipherOnly"); - - /** - * Creates or finds a KeyUsageType from its string representation. - * @param name a name to look for - * @return the corresponding KeyUsageType - */ - @JsonCreator - public static KeyUsageType fromString(String name) { - return fromString(name, KeyUsageType.class); - } - - /** - * @return known KeyUsageType values - */ - public static Collection values() { - return values(KeyUsageType.class); - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines values for KeyUsageType. + */ +public final class KeyUsageType { + /** Static value digitalSignature for KeyUsageType. */ + public static final KeyUsageType DIGITAL_SIGNATURE = new KeyUsageType("digitalSignature"); + + /** Static value nonRepudiation for KeyUsageType. */ + public static final KeyUsageType NON_REPUDIATION = new KeyUsageType("nonRepudiation"); + + /** Static value keyEncipherment for KeyUsageType. */ + public static final KeyUsageType KEY_ENCIPHERMENT = new KeyUsageType("keyEncipherment"); + + /** Static value dataEncipherment for KeyUsageType. */ + public static final KeyUsageType DATA_ENCIPHERMENT = new KeyUsageType("dataEncipherment"); + + /** Static value keyAgreement for KeyUsageType. */ + public static final KeyUsageType KEY_AGREEMENT = new KeyUsageType("keyAgreement"); + + /** Static value keyCertSign for KeyUsageType. */ + public static final KeyUsageType KEY_CERT_SIGN = new KeyUsageType("keyCertSign"); + + /** Static value cRLSign for KeyUsageType. */ + public static final KeyUsageType C_RLSIGN = new KeyUsageType("cRLSign"); + + /** Static value encipherOnly for KeyUsageType. */ + public static final KeyUsageType ENCIPHER_ONLY = new KeyUsageType("encipherOnly"); + + /** Static value decipherOnly for KeyUsageType. */ + public static final KeyUsageType DECIPHER_ONLY = new KeyUsageType("decipherOnly"); + + private String value; + + /** + * Creates a custom value for KeyUsageType. + * @param value the custom value + */ + public KeyUsageType(String value) { + this.value = value; + } + + @JsonValue + @Override + public String toString() { + return value; + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof KeyUsageType)) { + return false; + } + if (obj == this) { + return true; + } + KeyUsageType rhs = (KeyUsageType) obj; + if (value == null) { + return rhs.value == null; + } else { + return value.equals(rhs.value); + } + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultError.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultError.java index 95acc32..9ed3185 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultError.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultError.java @@ -1,32 +1,32 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key vault error exception. - */ -public class KeyVaultError { - /** - * The error property. - */ - @JsonProperty(value = "error", access = JsonProperty.Access.WRITE_ONLY) - private Error error; - - /** - * Get the error value. - * - * @return the error value - */ - public Error error() { - return this.error; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key vault error exception. + */ +public class KeyVaultError { + /** + * The error property. + */ + @JsonProperty(value = "error", access = JsonProperty.Access.WRITE_ONLY) + private Error error; + + /** + * Get the error value. + * + * @return the error value + */ + public Error error() { + return this.error; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultErrorException.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultErrorException.java index 64eafe2..8bd1678 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultErrorException.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVaultErrorException.java @@ -1,44 +1,44 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.RestException; -import okhttp3.ResponseBody; -import retrofit2.Response; - -/** - * Exception thrown for an invalid response with KeyVaultError information. - */ -public class KeyVaultErrorException extends RestException { - /** - * Initializes a new instance of the KeyVaultErrorException class. - * - * @param message the exception message or the response content if a message is not available - * @param response the HTTP response - */ - public KeyVaultErrorException(final String message, final Response response) { - super(message, response); - } - - /** - * Initializes a new instance of the KeyVaultErrorException class. - * - * @param message the exception message or the response content if a message is not available - * @param response the HTTP response - * @param body the deserialized response body - */ - public KeyVaultErrorException(final String message, final Response response, final KeyVaultError body) { - super(message, response, body); - } - - @Override - public KeyVaultError body() { - return (KeyVaultError) super.body(); - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.RestException; +import okhttp3.ResponseBody; +import retrofit2.Response; + +/** + * Exception thrown for an invalid response with KeyVaultError information. + */ +public class KeyVaultErrorException extends RestException { + /** + * Initializes a new instance of the KeyVaultErrorException class. + * + * @param message the exception message or the response content if a message is not available + * @param response the HTTP response + */ + public KeyVaultErrorException(final String message, final Response response) { + super(message, response); + } + + /** + * Initializes a new instance of the KeyVaultErrorException class. + * + * @param message the exception message or the response content if a message is not available + * @param response the HTTP response + * @param body the deserialized response body + */ + public KeyVaultErrorException(final String message, final Response response, final KeyVaultError body) { + super(message, response, body); + } + + @Override + public KeyVaultError body() { + return (KeyVaultError) super.body(); + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyParameters.java index a649ade..56e9cc8 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyParameters.java @@ -1,114 +1,114 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key verify parameters. - */ -public class KeyVerifyParameters { - /** - * The signing/verification algorithm. For more information on possible - * algorithm types, see JsonWebKeySignatureAlgorithm. Possible values - * include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', - * 'ES256', 'ES384', 'ES512', 'ECDSA256'. - */ - @JsonProperty(value = "alg", required = true) - private JsonWebKeySignatureAlgorithm algorithm; - - /** - * The digest used for signing. - */ - @JsonProperty(value = "digest", required = true) - private Base64Url digest; - - /** - * The signature to be verified. - */ - @JsonProperty(value = "value", required = true) - private Base64Url signature; - - /** - * Get the algorithm value. - * - * @return the algorithm value - */ - public JsonWebKeySignatureAlgorithm algorithm() { - return this.algorithm; - } - - /** - * Set the algorithm value. - * - * @param algorithm the algorithm value to set - * @return the KeyVerifyParameters object itself. - */ - public KeyVerifyParameters withAlgorithm(JsonWebKeySignatureAlgorithm algorithm) { - this.algorithm = algorithm; - return this; - } - - /** - * Get the digest value. - * - * @return the digest value - */ - public byte[] digest() { - if (this.digest == null) { - return null; - } - return this.digest.decodedBytes(); - } - - /** - * Set the digest value. - * - * @param digest the digest value to set - * @return the KeyVerifyParameters object itself. - */ - public KeyVerifyParameters withDigest(byte[] digest) { - if (digest == null) { - this.digest = null; - } else { - this.digest = Base64Url.encode(digest); - } - return this; - } - - /** - * Get the signature value. - * - * @return the signature value - */ - public byte[] signature() { - if (this.signature == null) { - return null; - } - return this.signature.decodedBytes(); - } - - /** - * Set the signature value. - * - * @param signature the signature value to set - * @return the KeyVerifyParameters object itself. - */ - public KeyVerifyParameters withSignature(byte[] signature) { - if (signature == null) { - this.signature = null; - } else { - this.signature = Base64Url.encode(signature); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key verify parameters. + */ +public class KeyVerifyParameters { + /** + * The signing/verification algorithm. For more information on possible + * algorithm types, see JsonWebKeySignatureAlgorithm. Possible values + * include: 'PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512', 'RSNULL', + * 'ES256', 'ES384', 'ES512', 'ES256K'. + */ + @JsonProperty(value = "alg", required = true) + private JsonWebKeySignatureAlgorithm algorithm; + + /** + * The digest used for signing. + */ + @JsonProperty(value = "digest", required = true) + private Base64Url digest; + + /** + * The signature to be verified. + */ + @JsonProperty(value = "value", required = true) + private Base64Url signature; + + /** + * Get the algorithm value. + * + * @return the algorithm value + */ + public JsonWebKeySignatureAlgorithm algorithm() { + return this.algorithm; + } + + /** + * Set the algorithm value. + * + * @param algorithm the algorithm value to set + * @return the KeyVerifyParameters object itself. + */ + public KeyVerifyParameters withAlgorithm(JsonWebKeySignatureAlgorithm algorithm) { + this.algorithm = algorithm; + return this; + } + + /** + * Get the digest value. + * + * @return the digest value + */ + public byte[] digest() { + if (this.digest == null) { + return null; + } + return this.digest.decodedBytes(); + } + + /** + * Set the digest value. + * + * @param digest the digest value to set + * @return the KeyVerifyParameters object itself. + */ + public KeyVerifyParameters withDigest(byte[] digest) { + if (digest == null) { + this.digest = null; + } else { + this.digest = Base64Url.encode(digest); + } + return this; + } + + /** + * Get the signature value. + * + * @return the signature value + */ + public byte[] signature() { + if (this.signature == null) { + return null; + } + return this.signature.decodedBytes(); + } + + /** + * Set the signature value. + * + * @param signature the signature value to set + * @return the KeyVerifyParameters object itself. + */ + public KeyVerifyParameters withSignature(byte[] signature) { + if (signature == null) { + this.signature = null; + } else { + this.signature = Base64Url.encode(signature); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyResult.java index cdb9c7a..85857ed 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/KeyVerifyResult.java @@ -1,32 +1,32 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The key verify result. - */ -public class KeyVerifyResult { - /** - * True if the signature is verified, otherwise false. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private Boolean value; - - /** - * Get the value value. - * - * @return the value value - */ - public Boolean value() { - return this.value; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The key verify result. + */ +public class KeyVerifyResult { + /** + * True if the signature is verified, otherwise false. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private Boolean value; + + /** + * Get the value value. + * + * @return the value value + */ + public Boolean value() { + return this.value; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/LifetimeAction.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/LifetimeAction.java index 42580cb..0ef4954 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/LifetimeAction.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/LifetimeAction.java @@ -1,70 +1,70 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Action and its trigger that will be performed by Key Vault over the lifetime - * of a certificate. - */ -public class LifetimeAction { - /** - * The condition that will execute the action. - */ - @JsonProperty(value = "trigger") - private Trigger trigger; - - /** - * The action that will be executed. - */ - @JsonProperty(value = "action") - private Action action; - - /** - * Get the trigger value. - * - * @return the trigger value - */ - public Trigger trigger() { - return this.trigger; - } - - /** - * Set the trigger value. - * - * @param trigger the trigger value to set - * @return the LifetimeAction object itself. - */ - public LifetimeAction withTrigger(Trigger trigger) { - this.trigger = trigger; - return this; - } - - /** - * Get the action value. - * - * @return the action value - */ - public Action action() { - return this.action; - } - - /** - * Set the action value. - * - * @param action the action value to set - * @return the LifetimeAction object itself. - */ - public LifetimeAction withAction(Action action) { - this.action = action; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Action and its trigger that will be performed by Key Vault over the lifetime + * of a certificate. + */ +public class LifetimeAction { + /** + * The condition that will execute the action. + */ + @JsonProperty(value = "trigger") + private Trigger trigger; + + /** + * The action that will be executed. + */ + @JsonProperty(value = "action") + private Action action; + + /** + * Get the trigger value. + * + * @return the trigger value + */ + public Trigger trigger() { + return this.trigger; + } + + /** + * Set the trigger value. + * + * @param trigger the trigger value to set + * @return the LifetimeAction object itself. + */ + public LifetimeAction withTrigger(Trigger trigger) { + this.trigger = trigger; + return this; + } + + /** + * Get the action value. + * + * @return the action value + */ + public Action action() { + return this.action; + } + + /** + * Set the action value. + * + * @param action the action value to set + * @return the LifetimeAction object itself. + */ + public LifetimeAction withAction(Action action) { + this.action = action; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/OrganizationDetails.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/OrganizationDetails.java index 3cac3ef..fbbeb04 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/OrganizationDetails.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/OrganizationDetails.java @@ -1,70 +1,70 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Details of the organization of the certificate issuer. - */ -public class OrganizationDetails { - /** - * Id of the organization. - */ - @JsonProperty(value = "id") - private String id; - - /** - * Details of the organization administrator. - */ - @JsonProperty(value = "admin_details") - private List adminDetails; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Set the id value. - * - * @param id the id value to set - * @return the OrganizationDetails object itself. - */ - public OrganizationDetails withId(String id) { - this.id = id; - return this; - } - - /** - * Get the adminDetails value. - * - * @return the adminDetails value - */ - public List adminDetails() { - return this.adminDetails; - } - - /** - * Set the adminDetails value. - * - * @param adminDetails the adminDetails value to set - * @return the OrganizationDetails object itself. - */ - public OrganizationDetails withAdminDetails(List adminDetails) { - this.adminDetails = adminDetails; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Details of the organization of the certificate issuer. + */ +public class OrganizationDetails { + /** + * Id of the organization. + */ + @JsonProperty(value = "id") + private String id; + + /** + * Details of the organization administrator. + */ + @JsonProperty(value = "admin_details") + private List adminDetails; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Set the id value. + * + * @param id the id value to set + * @return the OrganizationDetails object itself. + */ + public OrganizationDetails withId(String id) { + this.id = id; + return this; + } + + /** + * Get the adminDetails value. + * + * @return the adminDetails value + */ + public List adminDetails() { + return this.adminDetails; + } + + /** + * Set the adminDetails value. + * + * @param adminDetails the adminDetails value to set + * @return the OrganizationDetails object itself. + */ + public OrganizationDetails withAdminDetails(List adminDetails) { + this.adminDetails = adminDetails; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PageImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PageImpl.java index 4e8c2ec..014d893 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PageImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PageImpl.java @@ -1,75 +1,75 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.microsoft.azure.Page; -import java.util.List; - -/** - * An instance of this class defines a page of Azure resources and a link to - * get the next page of resources, if any. - * - * @param type of Azure resource - */ -public class PageImpl implements Page { - /** - * The link to the next page. - */ - @JsonProperty("nextLink") - private String nextPageLink; - - /** - * The list of items. - */ - @JsonProperty("value") - private List items; - - /** - * Gets the link to the next page. - * - * @return the link to the next page. - */ - @Override - public String nextPageLink() { - return this.nextPageLink; - } - - /** - * Gets the list of items. - * - * @return the list of items in {@link List}. - */ - @Override - public List items() { - return items; - } - - /** - * Sets the link to the next page. - * - * @param nextPageLink the link to the next page. - * @return this Page object itself. - */ - public PageImpl setNextPageLink(String nextPageLink) { - this.nextPageLink = nextPageLink; - return this; - } - - /** - * Sets the list of items. - * - * @param items the list of items in {@link List}. - * @return this Page object itself. - */ - public PageImpl setItems(List items) { - this.items = items; - return this; - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.microsoft.azure.Page; +import java.util.List; + +/** + * An instance of this class defines a page of Azure resources and a link to + * get the next page of resources, if any. + * + * @param type of Azure resource + */ +public class PageImpl implements Page { + /** + * The link to the next page. + */ + @JsonProperty("nextLink") + private String nextPageLink; + + /** + * The list of items. + */ + @JsonProperty("value") + private List items; + + /** + * Gets the link to the next page. + * + * @return the link to the next page. + */ + @Override + public String nextPageLink() { + return this.nextPageLink; + } + + /** + * Gets the list of items. + * + * @return the list of items in {@link List}. + */ + @Override + public List items() { + return items; + } + + /** + * Sets the link to the next page. + * + * @param nextPageLink the link to the next page. + * @return this Page object itself. + */ + public PageImpl setNextPageLink(String nextPageLink) { + this.nextPageLink = nextPageLink; + return this; + } + + /** + * Sets the list of items. + * + * @param items the list of items in {@link List}. + * @return this Page object itself. + */ + public PageImpl setItems(List items) { + this.items = items; + return this; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PendingCertificateSigningRequestResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PendingCertificateSigningRequestResult.java index 72f53ad..d508235 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PendingCertificateSigningRequestResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/PendingCertificateSigningRequestResult.java @@ -1,32 +1,32 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The pending certificate signing request result. - */ -public class PendingCertificateSigningRequestResult { - /** - * The pending certificate signing request as Base64 encoded string. - */ - @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) - private String value; - - /** - * Get the value value. - * - * @return the value value - */ - public String value() { - return this.value; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The pending certificate signing request result. + */ +public class PendingCertificateSigningRequestResult { + /** + * The pending certificate signing request as Base64 encoded string. + */ + @JsonProperty(value = "value", access = JsonProperty.Access.WRITE_ONLY) + private String value; + + /** + * Get the value value. + * + * @return the value value + */ + public String value() { + return this.value; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionAttributes.java index c5fa856..bfb59d2 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionAttributes.java @@ -1,102 +1,102 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The SAS definition management attributes. - */ -public class SasDefinitionAttributes { - /** - * the enabled state of the object. - */ - @JsonProperty(value = "enabled") - private Boolean enabled; - - /** - * Creation time in UTC. - */ - @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) - private Long created; - - /** - * Last updated time in UTC. - */ - @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) - private Long updated; - - /** - * Reflects the deletion recovery level currently in effect for SAS - * definitions in the current vault. If it contains 'Purgeable' the SAS - * definition can be permanently deleted by a privileged user; otherwise, - * only the system can purge the SAS definition, at the end of the - * retention interval. Possible values include: 'Purgeable', - * 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription'. - */ - @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) - private DeletionRecoveryLevel recoveryLevel; - - /** - * Get the enabled value. - * - * @return the enabled value - */ - public Boolean enabled() { - return this.enabled; - } - - /** - * Set the enabled value. - * - * @param enabled the enabled value to set - * @return the SasDefinitionAttributes object itself. - */ - public SasDefinitionAttributes withEnabled(Boolean enabled) { - this.enabled = enabled; - return this; - } - - /** - * Get the created value. - * - * @return the created value - */ - public DateTime created() { - if (this.created == null) { - return null; - } - return new DateTime(this.created * 1000L, DateTimeZone.UTC); - } - - /** - * Get the updated value. - * - * @return the updated value - */ - public DateTime updated() { - if (this.updated == null) { - return null; - } - return new DateTime(this.updated * 1000L, DateTimeZone.UTC); - } - - /** - * Get the recoveryLevel value. - * - * @return the recoveryLevel value - */ - public DeletionRecoveryLevel recoveryLevel() { - return this.recoveryLevel; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The SAS definition management attributes. + */ +public class SasDefinitionAttributes { + /** + * the enabled state of the object. + */ + @JsonProperty(value = "enabled") + private Boolean enabled; + + /** + * Creation time in UTC. + */ + @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) + private Long created; + + /** + * Last updated time in UTC. + */ + @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) + private Long updated; + + /** + * Reflects the deletion recovery level currently in effect for SAS + * definitions in the current vault. If it contains 'Purgeable' the SAS + * definition can be permanently deleted by a privileged user; otherwise, + * only the system can purge the SAS definition, at the end of the + * retention interval. Possible values include: 'Purgeable', + * 'Recoverable+Purgeable', 'Recoverable', + * 'Recoverable+ProtectedSubscription'. + */ + @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) + private DeletionRecoveryLevel recoveryLevel; + + /** + * Get the enabled value. + * + * @return the enabled value + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled value. + * + * @param enabled the enabled value to set + * @return the SasDefinitionAttributes object itself. + */ + public SasDefinitionAttributes withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the created value. + * + * @return the created value + */ + public DateTime created() { + if (this.created == null) { + return null; + } + return new DateTime(this.created * 1000L, DateTimeZone.UTC); + } + + /** + * Get the updated value. + * + * @return the updated value + */ + public DateTime updated() { + if (this.updated == null) { + return null; + } + return new DateTime(this.updated * 1000L, DateTimeZone.UTC); + } + + /** + * Get the recoveryLevel value. + * + * @return the recoveryLevel value + */ + public DeletionRecoveryLevel recoveryLevel() { + return this.recoveryLevel; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionBundle.java index 3d719cc..3c1f038 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionBundle.java @@ -1,128 +1,128 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A SAS definition bundle consists of key vault SAS definition details plus - * its attributes. - */ -public class SasDefinitionBundle { - /** - * The SAS definition id. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * Storage account SAS definition secret id. - */ - @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) - private String secretId; - - /** - * The SAS definition token template signed with an arbitrary key. Tokens - * created according to the SAS definition will have the same properties as - * the template. - */ - @JsonProperty(value = "templateUri", access = JsonProperty.Access.WRITE_ONLY) - private String templateUri; - - /** - * The type of SAS token the SAS definition will create. Possible values - * include: 'account', 'service'. - */ - @JsonProperty(value = "sasType", access = JsonProperty.Access.WRITE_ONLY) - private SasTokenType sasType; - - /** - * The validity period of SAS tokens created according to the SAS - * definition. - */ - @JsonProperty(value = "validityPeriod", access = JsonProperty.Access.WRITE_ONLY) - private String validityPeriod; - - /** - * The SAS definition attributes. - */ - @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) - private SasDefinitionAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) - private Map tags; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the secretId value. - * - * @return the secretId value - */ - public String secretId() { - return this.secretId; - } - - /** - * Get the templateUri value. - * - * @return the templateUri value - */ - public String templateUri() { - return this.templateUri; - } - - /** - * Get the sasType value. - * - * @return the sasType value - */ - public SasTokenType sasType() { - return this.sasType; - } - - /** - * Get the validityPeriod value. - * - * @return the validityPeriod value - */ - public String validityPeriod() { - return this.validityPeriod; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public SasDefinitionAttributes attributes() { - return this.attributes; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A SAS definition bundle consists of key vault SAS definition details plus + * its attributes. + */ +public class SasDefinitionBundle { + /** + * The SAS definition id. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * Storage account SAS definition secret id. + */ + @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) + private String secretId; + + /** + * The SAS definition token template signed with an arbitrary key. Tokens + * created according to the SAS definition will have the same properties as + * the template. + */ + @JsonProperty(value = "templateUri", access = JsonProperty.Access.WRITE_ONLY) + private String templateUri; + + /** + * The type of SAS token the SAS definition will create. Possible values + * include: 'account', 'service'. + */ + @JsonProperty(value = "sasType", access = JsonProperty.Access.WRITE_ONLY) + private SasTokenType sasType; + + /** + * The validity period of SAS tokens created according to the SAS + * definition. + */ + @JsonProperty(value = "validityPeriod", access = JsonProperty.Access.WRITE_ONLY) + private String validityPeriod; + + /** + * The SAS definition attributes. + */ + @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) + private SasDefinitionAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) + private Map tags; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the secretId value. + * + * @return the secretId value + */ + public String secretId() { + return this.secretId; + } + + /** + * Get the templateUri value. + * + * @return the templateUri value + */ + public String templateUri() { + return this.templateUri; + } + + /** + * Get the sasType value. + * + * @return the sasType value + */ + public SasTokenType sasType() { + return this.sasType; + } + + /** + * Get the validityPeriod value. + * + * @return the validityPeriod value + */ + public String validityPeriod() { + return this.validityPeriod; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public SasDefinitionAttributes attributes() { + return this.attributes; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionCreateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionCreateParameters.java index f07a25b..98c9980 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionCreateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionCreateParameters.java @@ -1,152 +1,152 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The SAS definition create parameters. - */ -public class SasDefinitionCreateParameters { - /** - * The SAS definition token template signed with an arbitrary key. Tokens - * created according to the SAS definition will have the same properties as - * the template. - */ - @JsonProperty(value = "templateUri", required = true) - private String templateUri; - - /** - * The type of SAS token the SAS definition will create. Possible values - * include: 'account', 'service'. - */ - @JsonProperty(value = "sasType", required = true) - private SasTokenType sasType; - - /** - * The validity period of SAS tokens created according to the SAS - * definition. - */ - @JsonProperty(value = "validityPeriod", required = true) - private String validityPeriod; - - /** - * The attributes of the SAS definition. - */ - @JsonProperty(value = "attributes") - private SasDefinitionAttributes sasDefinitionAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the templateUri value. - * - * @return the templateUri value - */ - public String templateUri() { - return this.templateUri; - } - - /** - * Set the templateUri value. - * - * @param templateUri the templateUri value to set - * @return the SasDefinitionCreateParameters object itself. - */ - public SasDefinitionCreateParameters withTemplateUri(String templateUri) { - this.templateUri = templateUri; - return this; - } - - /** - * Get the sasType value. - * - * @return the sasType value - */ - public SasTokenType sasType() { - return this.sasType; - } - - /** - * Set the sasType value. - * - * @param sasType the sasType value to set - * @return the SasDefinitionCreateParameters object itself. - */ - public SasDefinitionCreateParameters withSasType(SasTokenType sasType) { - this.sasType = sasType; - return this; - } - - /** - * Get the validityPeriod value. - * - * @return the validityPeriod value - */ - public String validityPeriod() { - return this.validityPeriod; - } - - /** - * Set the validityPeriod value. - * - * @param validityPeriod the validityPeriod value to set - * @return the SasDefinitionCreateParameters object itself. - */ - public SasDefinitionCreateParameters withValidityPeriod(String validityPeriod) { - this.validityPeriod = validityPeriod; - return this; - } - - /** - * Get the sasDefinitionAttributes value. - * - * @return the sasDefinitionAttributes value - */ - public SasDefinitionAttributes sasDefinitionAttributes() { - return this.sasDefinitionAttributes; - } - - /** - * Set the sasDefinitionAttributes value. - * - * @param sasDefinitionAttributes the sasDefinitionAttributes value to set - * @return the SasDefinitionCreateParameters object itself. - */ - public SasDefinitionCreateParameters withSasDefinitionAttributes(SasDefinitionAttributes sasDefinitionAttributes) { - this.sasDefinitionAttributes = sasDefinitionAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SasDefinitionCreateParameters object itself. - */ - public SasDefinitionCreateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The SAS definition create parameters. + */ +public class SasDefinitionCreateParameters { + /** + * The SAS definition token template signed with an arbitrary key. Tokens + * created according to the SAS definition will have the same properties as + * the template. + */ + @JsonProperty(value = "templateUri", required = true) + private String templateUri; + + /** + * The type of SAS token the SAS definition will create. Possible values + * include: 'account', 'service'. + */ + @JsonProperty(value = "sasType", required = true) + private SasTokenType sasType; + + /** + * The validity period of SAS tokens created according to the SAS + * definition. + */ + @JsonProperty(value = "validityPeriod", required = true) + private String validityPeriod; + + /** + * The attributes of the SAS definition. + */ + @JsonProperty(value = "attributes") + private SasDefinitionAttributes sasDefinitionAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the templateUri value. + * + * @return the templateUri value + */ + public String templateUri() { + return this.templateUri; + } + + /** + * Set the templateUri value. + * + * @param templateUri the templateUri value to set + * @return the SasDefinitionCreateParameters object itself. + */ + public SasDefinitionCreateParameters withTemplateUri(String templateUri) { + this.templateUri = templateUri; + return this; + } + + /** + * Get the sasType value. + * + * @return the sasType value + */ + public SasTokenType sasType() { + return this.sasType; + } + + /** + * Set the sasType value. + * + * @param sasType the sasType value to set + * @return the SasDefinitionCreateParameters object itself. + */ + public SasDefinitionCreateParameters withSasType(SasTokenType sasType) { + this.sasType = sasType; + return this; + } + + /** + * Get the validityPeriod value. + * + * @return the validityPeriod value + */ + public String validityPeriod() { + return this.validityPeriod; + } + + /** + * Set the validityPeriod value. + * + * @param validityPeriod the validityPeriod value to set + * @return the SasDefinitionCreateParameters object itself. + */ + public SasDefinitionCreateParameters withValidityPeriod(String validityPeriod) { + this.validityPeriod = validityPeriod; + return this; + } + + /** + * Get the sasDefinitionAttributes value. + * + * @return the sasDefinitionAttributes value + */ + public SasDefinitionAttributes sasDefinitionAttributes() { + return this.sasDefinitionAttributes; + } + + /** + * Set the sasDefinitionAttributes value. + * + * @param sasDefinitionAttributes the sasDefinitionAttributes value to set + * @return the SasDefinitionCreateParameters object itself. + */ + public SasDefinitionCreateParameters withSasDefinitionAttributes(SasDefinitionAttributes sasDefinitionAttributes) { + this.sasDefinitionAttributes = sasDefinitionAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SasDefinitionCreateParameters object itself. + */ + public SasDefinitionCreateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionItem.java index 6dc2c93..b6b8edc 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionItem.java @@ -1,78 +1,78 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The SAS definition item containing storage SAS definition metadata. - */ -public class SasDefinitionItem { - /** - * The storage SAS identifier. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * The storage account SAS definition secret id. - */ - @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) - private String secretId; - - /** - * The SAS definition management attributes. - */ - @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) - private SasDefinitionAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) - private Map tags; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the secretId value. - * - * @return the secretId value - */ - public String secretId() { - return this.secretId; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public SasDefinitionAttributes attributes() { - return this.attributes; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The SAS definition item containing storage SAS definition metadata. + */ +public class SasDefinitionItem { + /** + * The storage SAS identifier. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * The storage account SAS definition secret id. + */ + @JsonProperty(value = "sid", access = JsonProperty.Access.WRITE_ONLY) + private String secretId; + + /** + * The SAS definition management attributes. + */ + @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) + private SasDefinitionAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) + private Map tags; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the secretId value. + * + * @return the secretId value + */ + public String secretId() { + return this.secretId; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public SasDefinitionAttributes attributes() { + return this.attributes; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionUpdateParameters.java index adbdd1e..1604a62 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasDefinitionUpdateParameters.java @@ -1,152 +1,152 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The SAS definition update parameters. - */ -public class SasDefinitionUpdateParameters { - /** - * The SAS definition token template signed with an arbitrary key. Tokens - * created according to the SAS definition will have the same properties as - * the template. - */ - @JsonProperty(value = "templateUri") - private String templateUri; - - /** - * The type of SAS token the SAS definition will create. Possible values - * include: 'account', 'service'. - */ - @JsonProperty(value = "sasType") - private SasTokenType sasType; - - /** - * The validity period of SAS tokens created according to the SAS - * definition. - */ - @JsonProperty(value = "validityPeriod") - private String validityPeriod; - - /** - * The attributes of the SAS definition. - */ - @JsonProperty(value = "attributes") - private SasDefinitionAttributes sasDefinitionAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the templateUri value. - * - * @return the templateUri value - */ - public String templateUri() { - return this.templateUri; - } - - /** - * Set the templateUri value. - * - * @param templateUri the templateUri value to set - * @return the SasDefinitionUpdateParameters object itself. - */ - public SasDefinitionUpdateParameters withTemplateUri(String templateUri) { - this.templateUri = templateUri; - return this; - } - - /** - * Get the sasType value. - * - * @return the sasType value - */ - public SasTokenType sasType() { - return this.sasType; - } - - /** - * Set the sasType value. - * - * @param sasType the sasType value to set - * @return the SasDefinitionUpdateParameters object itself. - */ - public SasDefinitionUpdateParameters withSasType(SasTokenType sasType) { - this.sasType = sasType; - return this; - } - - /** - * Get the validityPeriod value. - * - * @return the validityPeriod value - */ - public String validityPeriod() { - return this.validityPeriod; - } - - /** - * Set the validityPeriod value. - * - * @param validityPeriod the validityPeriod value to set - * @return the SasDefinitionUpdateParameters object itself. - */ - public SasDefinitionUpdateParameters withValidityPeriod(String validityPeriod) { - this.validityPeriod = validityPeriod; - return this; - } - - /** - * Get the sasDefinitionAttributes value. - * - * @return the sasDefinitionAttributes value - */ - public SasDefinitionAttributes sasDefinitionAttributes() { - return this.sasDefinitionAttributes; - } - - /** - * Set the sasDefinitionAttributes value. - * - * @param sasDefinitionAttributes the sasDefinitionAttributes value to set - * @return the SasDefinitionUpdateParameters object itself. - */ - public SasDefinitionUpdateParameters withSasDefinitionAttributes(SasDefinitionAttributes sasDefinitionAttributes) { - this.sasDefinitionAttributes = sasDefinitionAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SasDefinitionUpdateParameters object itself. - */ - public SasDefinitionUpdateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The SAS definition update parameters. + */ +public class SasDefinitionUpdateParameters { + /** + * The SAS definition token template signed with an arbitrary key. Tokens + * created according to the SAS definition will have the same properties as + * the template. + */ + @JsonProperty(value = "templateUri") + private String templateUri; + + /** + * The type of SAS token the SAS definition will create. Possible values + * include: 'account', 'service'. + */ + @JsonProperty(value = "sasType") + private SasTokenType sasType; + + /** + * The validity period of SAS tokens created according to the SAS + * definition. + */ + @JsonProperty(value = "validityPeriod") + private String validityPeriod; + + /** + * The attributes of the SAS definition. + */ + @JsonProperty(value = "attributes") + private SasDefinitionAttributes sasDefinitionAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the templateUri value. + * + * @return the templateUri value + */ + public String templateUri() { + return this.templateUri; + } + + /** + * Set the templateUri value. + * + * @param templateUri the templateUri value to set + * @return the SasDefinitionUpdateParameters object itself. + */ + public SasDefinitionUpdateParameters withTemplateUri(String templateUri) { + this.templateUri = templateUri; + return this; + } + + /** + * Get the sasType value. + * + * @return the sasType value + */ + public SasTokenType sasType() { + return this.sasType; + } + + /** + * Set the sasType value. + * + * @param sasType the sasType value to set + * @return the SasDefinitionUpdateParameters object itself. + */ + public SasDefinitionUpdateParameters withSasType(SasTokenType sasType) { + this.sasType = sasType; + return this; + } + + /** + * Get the validityPeriod value. + * + * @return the validityPeriod value + */ + public String validityPeriod() { + return this.validityPeriod; + } + + /** + * Set the validityPeriod value. + * + * @param validityPeriod the validityPeriod value to set + * @return the SasDefinitionUpdateParameters object itself. + */ + public SasDefinitionUpdateParameters withValidityPeriod(String validityPeriod) { + this.validityPeriod = validityPeriod; + return this; + } + + /** + * Get the sasDefinitionAttributes value. + * + * @return the sasDefinitionAttributes value + */ + public SasDefinitionAttributes sasDefinitionAttributes() { + return this.sasDefinitionAttributes; + } + + /** + * Set the sasDefinitionAttributes value. + * + * @param sasDefinitionAttributes the sasDefinitionAttributes value to set + * @return the SasDefinitionUpdateParameters object itself. + */ + public SasDefinitionUpdateParameters withSasDefinitionAttributes(SasDefinitionAttributes sasDefinitionAttributes) { + this.sasDefinitionAttributes = sasDefinitionAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SasDefinitionUpdateParameters object itself. + */ + public SasDefinitionUpdateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasTokenType.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasTokenType.java index 8a7c0e8..56a9b0c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasTokenType.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SasTokenType.java @@ -1,41 +1,59 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Collection; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.microsoft.rest.ExpandableStringEnum; - -/** - * Defines values for SasTokenType. - */ -public final class SasTokenType extends ExpandableStringEnum { - /** Static value account for SasTokenType. */ - public static final SasTokenType ACCOUNT = fromString("account"); - - /** Static value service for SasTokenType. */ - public static final SasTokenType SERVICE = fromString("service"); - - /** - * Creates or finds a SasTokenType from its string representation. - * @param name a name to look for - * @return the corresponding SasTokenType - */ - @JsonCreator - public static SasTokenType fromString(String name) { - return fromString(name, SasTokenType.class); - } - - /** - * @return known SasTokenType values - */ - public static Collection values() { - return values(SasTokenType.class); - } -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonValue; + +/** + * Defines values for SasTokenType. + */ +public final class SasTokenType { + /** Static value account for SasTokenType. */ + public static final SasTokenType ACCOUNT = new SasTokenType("account"); + + /** Static value service for SasTokenType. */ + public static final SasTokenType SERVICE = new SasTokenType("service"); + + private String value; + + /** + * Creates a custom value for SasTokenType. + * @param value the custom value + */ + public SasTokenType(String value) { + this.value = value; + } + + @JsonValue + @Override + public String toString() { + return value; + } + + @Override + public int hashCode() { + return value.hashCode(); + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof SasTokenType)) { + return false; + } + if (obj == this) { + return true; + } + SasTokenType rhs = (SasTokenType) obj; + if (value == null) { + return rhs.value == null; + } else { + return value.equals(rhs.value); + } + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretAttributes.java index 6175c02..b3e08b9 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretAttributes.java @@ -1,37 +1,37 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret management attributes. - */ -public class SecretAttributes extends Attributes { - /** - * Reflects the deletion recovery level currently in effect for secrets in - * the current vault. If it contains 'Purgeable', the secret can be - * permanently deleted by a privileged user; otherwise, only the system can - * purge the secret, at the end of the retention interval. Possible values - * include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', - * 'Recoverable+ProtectedSubscription'. - */ - @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) - private DeletionRecoveryLevel recoveryLevel; - - /** - * Get the recoveryLevel value. - * - * @return the recoveryLevel value - */ - public DeletionRecoveryLevel recoveryLevel() { - return this.recoveryLevel; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret management attributes. + */ +public class SecretAttributes extends Attributes { + /** + * Reflects the deletion recovery level currently in effect for secrets in + * the current vault. If it contains 'Purgeable', the secret can be + * permanently deleted by a privileged user; otherwise, only the system can + * purge the secret, at the end of the retention interval. Possible values + * include: 'Purgeable', 'Recoverable+Purgeable', 'Recoverable', + * 'Recoverable+ProtectedSubscription'. + */ + @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) + private DeletionRecoveryLevel recoveryLevel; + + /** + * Get the recoveryLevel value. + * + * @return the recoveryLevel value + */ + public DeletionRecoveryLevel recoveryLevel() { + return this.recoveryLevel; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretBundle.java index 63082b8..180f6a4 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretBundle.java @@ -1,180 +1,180 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A secret consisting of a value, id and its attributes. - */ -public class SecretBundle extends com.microsoft.azure.keyvault.models.custom.SecretBundle { - /** - * The secret value. - */ - @JsonProperty(value = "value") - private String value; - - /** - * The secret id. - */ - @JsonProperty(value = "id") - private String id; - - /** - * The content type of the secret. - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * The secret management attributes. - */ - @JsonProperty(value = "attributes") - private SecretAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * If this is a secret backing a KV certificate, then this field specifies - * the corresponding key backing the KV certificate. - */ - @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) - private String kid; - - /** - * True if the secret's lifetime is managed by key vault. If this is a - * secret backing a certificate, then managed will be true. - */ - @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) - private Boolean managed; - - /** - * Get the value value. - * - * @return the value value - */ - public String value() { - return this.value; - } - - /** - * Set the value value. - * - * @param value the value value to set - * @return the SecretBundle object itself. - */ - public SecretBundle withValue(String value) { - this.value = value; - return this; - } - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Set the id value. - * - * @param id the id value to set - * @return the SecretBundle object itself. - */ - public SecretBundle withId(String id) { - this.id = id; - return this; - } - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the SecretBundle object itself. - */ - public SecretBundle withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public SecretAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the SecretBundle object itself. - */ - public SecretBundle withAttributes(SecretAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SecretBundle object itself. - */ - public SecretBundle withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the kid value. - * - * @return the kid value - */ - public String kid() { - return this.kid; - } - - /** - * Get the managed value. - * - * @return the managed value - */ - public Boolean managed() { - return this.managed; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A secret consisting of a value, id and its attributes. + */ +public class SecretBundle extends com.microsoft.azure.keyvault.models.custom.SecretBundle { + /** + * The secret value. + */ + @JsonProperty(value = "value") + private String value; + + /** + * The secret id. + */ + @JsonProperty(value = "id") + private String id; + + /** + * The content type of the secret. + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * The secret management attributes. + */ + @JsonProperty(value = "attributes") + private SecretAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * If this is a secret backing a KV certificate, then this field specifies + * the corresponding key backing the KV certificate. + */ + @JsonProperty(value = "kid", access = JsonProperty.Access.WRITE_ONLY) + private String kid; + + /** + * True if the secret's lifetime is managed by key vault. If this is a + * secret backing a certificate, then managed will be true. + */ + @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) + private Boolean managed; + + /** + * Get the value value. + * + * @return the value value + */ + public String value() { + return this.value; + } + + /** + * Set the value value. + * + * @param value the value value to set + * @return the SecretBundle object itself. + */ + public SecretBundle withValue(String value) { + this.value = value; + return this; + } + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Set the id value. + * + * @param id the id value to set + * @return the SecretBundle object itself. + */ + public SecretBundle withId(String id) { + this.id = id; + return this; + } + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the SecretBundle object itself. + */ + public SecretBundle withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public SecretAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the SecretBundle object itself. + */ + public SecretBundle withAttributes(SecretAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SecretBundle object itself. + */ + public SecretBundle withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the kid value. + * + * @return the kid value + */ + public String kid() { + return this.kid; + } + + /** + * Get the managed value. + * + * @return the managed value + */ + public Boolean managed() { + return this.managed; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretItem.java index be25b0e..9001d0f 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretItem.java @@ -1,138 +1,138 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret item containing secret metadata. - */ -public class SecretItem { - /** - * Secret identifier. - */ - @JsonProperty(value = "id") - private String id; - - /** - * The secret management attributes. - */ - @JsonProperty(value = "attributes") - private SecretAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Type of the secret value such as a password. - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * True if the secret's lifetime is managed by key vault. If this is a key - * backing a certificate, then managed will be true. - */ - @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) - private Boolean managed; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Set the id value. - * - * @param id the id value to set - * @return the SecretItem object itself. - */ - public SecretItem withId(String id) { - this.id = id; - return this; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public SecretAttributes attributes() { - return this.attributes; - } - - /** - * Set the attributes value. - * - * @param attributes the attributes value to set - * @return the SecretItem object itself. - */ - public SecretItem withAttributes(SecretAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SecretItem object itself. - */ - public SecretItem withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the SecretItem object itself. - */ - public SecretItem withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Get the managed value. - * - * @return the managed value - */ - public Boolean managed() { - return this.managed; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret item containing secret metadata. + */ +public class SecretItem { + /** + * Secret identifier. + */ + @JsonProperty(value = "id") + private String id; + + /** + * The secret management attributes. + */ + @JsonProperty(value = "attributes") + private SecretAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Type of the secret value such as a password. + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * True if the secret's lifetime is managed by key vault. If this is a key + * backing a certificate, then managed will be true. + */ + @JsonProperty(value = "managed", access = JsonProperty.Access.WRITE_ONLY) + private Boolean managed; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Set the id value. + * + * @param id the id value to set + * @return the SecretItem object itself. + */ + public SecretItem withId(String id) { + this.id = id; + return this; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public SecretAttributes attributes() { + return this.attributes; + } + + /** + * Set the attributes value. + * + * @param attributes the attributes value to set + * @return the SecretItem object itself. + */ + public SecretItem withAttributes(SecretAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SecretItem object itself. + */ + public SecretItem withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the SecretItem object itself. + */ + public SecretItem withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Get the managed value. + * + * @return the managed value + */ + public Boolean managed() { + return this.managed; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretProperties.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretProperties.java index 0877359..ceff8a7 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretProperties.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretProperties.java @@ -1,43 +1,43 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Properties of the key backing a certificate. - */ -public class SecretProperties { - /** - * The media type (MIME type). - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the SecretProperties object itself. - */ - public SecretProperties withContentType(String contentType) { - this.contentType = contentType; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Properties of the key backing a certificate. + */ +public class SecretProperties { + /** + * The media type (MIME type). + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the SecretProperties object itself. + */ + public SecretProperties withContentType(String contentType) { + this.contentType = contentType; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretRestoreParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretRestoreParameters.java index 651f814..27100e5 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretRestoreParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretRestoreParameters.java @@ -1,51 +1,51 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret restore parameters. - */ -public class SecretRestoreParameters { - /** - * The backup blob associated with a secret bundle. - */ - @JsonProperty(value = "value", required = true) - private Base64Url secretBundleBackup; - - /** - * Get the secretBundleBackup value. - * - * @return the secretBundleBackup value - */ - public byte[] secretBundleBackup() { - if (this.secretBundleBackup == null) { - return null; - } - return this.secretBundleBackup.decodedBytes(); - } - - /** - * Set the secretBundleBackup value. - * - * @param secretBundleBackup the secretBundleBackup value to set - * @return the SecretRestoreParameters object itself. - */ - public SecretRestoreParameters withSecretBundleBackup(byte[] secretBundleBackup) { - if (secretBundleBackup == null) { - this.secretBundleBackup = null; - } else { - this.secretBundleBackup = Base64Url.encode(secretBundleBackup); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret restore parameters. + */ +public class SecretRestoreParameters { + /** + * The backup blob associated with a secret bundle. + */ + @JsonProperty(value = "value", required = true) + private Base64Url secretBundleBackup; + + /** + * Get the secretBundleBackup value. + * + * @return the secretBundleBackup value + */ + public byte[] secretBundleBackup() { + if (this.secretBundleBackup == null) { + return null; + } + return this.secretBundleBackup.decodedBytes(); + } + + /** + * Set the secretBundleBackup value. + * + * @param secretBundleBackup the secretBundleBackup value to set + * @return the SecretRestoreParameters object itself. + */ + public SecretRestoreParameters withSecretBundleBackup(byte[] secretBundleBackup) { + if (secretBundleBackup == null) { + this.secretBundleBackup = null; + } else { + this.secretBundleBackup = Base64Url.encode(secretBundleBackup); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretSetParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretSetParameters.java index 8c9b5b4..515d369 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretSetParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretSetParameters.java @@ -1,122 +1,122 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret set parameters. - */ -public class SecretSetParameters { - /** - * The value of the secret. - */ - @JsonProperty(value = "value", required = true) - private String value; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Type of the secret value such as a password. - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * The secret management attributes. - */ - @JsonProperty(value = "attributes") - private SecretAttributes secretAttributes; - - /** - * Get the value value. - * - * @return the value value - */ - public String value() { - return this.value; - } - - /** - * Set the value value. - * - * @param value the value value to set - * @return the SecretSetParameters object itself. - */ - public SecretSetParameters withValue(String value) { - this.value = value; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SecretSetParameters object itself. - */ - public SecretSetParameters withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the SecretSetParameters object itself. - */ - public SecretSetParameters withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Get the secretAttributes value. - * - * @return the secretAttributes value - */ - public SecretAttributes secretAttributes() { - return this.secretAttributes; - } - - /** - * Set the secretAttributes value. - * - * @param secretAttributes the secretAttributes value to set - * @return the SecretSetParameters object itself. - */ - public SecretSetParameters withSecretAttributes(SecretAttributes secretAttributes) { - this.secretAttributes = secretAttributes; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret set parameters. + */ +public class SecretSetParameters { + /** + * The value of the secret. + */ + @JsonProperty(value = "value", required = true) + private String value; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Type of the secret value such as a password. + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * The secret management attributes. + */ + @JsonProperty(value = "attributes") + private SecretAttributes secretAttributes; + + /** + * Get the value value. + * + * @return the value value + */ + public String value() { + return this.value; + } + + /** + * Set the value value. + * + * @param value the value value to set + * @return the SecretSetParameters object itself. + */ + public SecretSetParameters withValue(String value) { + this.value = value; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SecretSetParameters object itself. + */ + public SecretSetParameters withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the SecretSetParameters object itself. + */ + public SecretSetParameters withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Get the secretAttributes value. + * + * @return the secretAttributes value + */ + public SecretAttributes secretAttributes() { + return this.secretAttributes; + } + + /** + * Set the secretAttributes value. + * + * @param secretAttributes the secretAttributes value to set + * @return the SecretSetParameters object itself. + */ + public SecretSetParameters withSecretAttributes(SecretAttributes secretAttributes) { + this.secretAttributes = secretAttributes; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretUpdateParameters.java index ec0fa2b..89e02e0 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SecretUpdateParameters.java @@ -1,96 +1,96 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret update parameters. - */ -public class SecretUpdateParameters { - /** - * Type of the secret value such as a password. - */ - @JsonProperty(value = "contentType") - private String contentType; - - /** - * The secret management attributes. - */ - @JsonProperty(value = "attributes") - private SecretAttributes secretAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the contentType value. - * - * @return the contentType value - */ - public String contentType() { - return this.contentType; - } - - /** - * Set the contentType value. - * - * @param contentType the contentType value to set - * @return the SecretUpdateParameters object itself. - */ - public SecretUpdateParameters withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Get the secretAttributes value. - * - * @return the secretAttributes value - */ - public SecretAttributes secretAttributes() { - return this.secretAttributes; - } - - /** - * Set the secretAttributes value. - * - * @param secretAttributes the secretAttributes value to set - * @return the SecretUpdateParameters object itself. - */ - public SecretUpdateParameters withSecretAttributes(SecretAttributes secretAttributes) { - this.secretAttributes = secretAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the SecretUpdateParameters object itself. - */ - public SecretUpdateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret update parameters. + */ +public class SecretUpdateParameters { + /** + * Type of the secret value such as a password. + */ + @JsonProperty(value = "contentType") + private String contentType; + + /** + * The secret management attributes. + */ + @JsonProperty(value = "attributes") + private SecretAttributes secretAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the contentType value. + * + * @return the contentType value + */ + public String contentType() { + return this.contentType; + } + + /** + * Set the contentType value. + * + * @param contentType the contentType value to set + * @return the SecretUpdateParameters object itself. + */ + public SecretUpdateParameters withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Get the secretAttributes value. + * + * @return the secretAttributes value + */ + public SecretAttributes secretAttributes() { + return this.secretAttributes; + } + + /** + * Set the secretAttributes value. + * + * @param secretAttributes the secretAttributes value to set + * @return the SecretUpdateParameters object itself. + */ + public SecretUpdateParameters withSecretAttributes(SecretAttributes secretAttributes) { + this.secretAttributes = secretAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the SecretUpdateParameters object itself. + */ + public SecretUpdateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountAttributes.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountAttributes.java index 4f4dbdf..109e2c5 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountAttributes.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountAttributes.java @@ -1,101 +1,101 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import org.joda.time.DateTime; -import org.joda.time.DateTimeZone; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The storage account management attributes. - */ -public class StorageAccountAttributes { - /** - * the enabled state of the object. - */ - @JsonProperty(value = "enabled") - private Boolean enabled; - - /** - * Creation time in UTC. - */ - @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) - private Long created; - - /** - * Last updated time in UTC. - */ - @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) - private Long updated; - - /** - * Reflects the deletion recovery level currently in effect for storage - * accounts in the current vault. If it contains 'Purgeable' the storage - * account can be permanently deleted by a privileged user; otherwise, only - * the system can purge the storage account, at the end of the retention - * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', - * 'Recoverable', 'Recoverable+ProtectedSubscription'. - */ - @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) - private DeletionRecoveryLevel recoveryLevel; - - /** - * Get the enabled value. - * - * @return the enabled value - */ - public Boolean enabled() { - return this.enabled; - } - - /** - * Set the enabled value. - * - * @param enabled the enabled value to set - * @return the StorageAccountAttributes object itself. - */ - public StorageAccountAttributes withEnabled(Boolean enabled) { - this.enabled = enabled; - return this; - } - - /** - * Get the created value. - * - * @return the created value - */ - public DateTime created() { - if (this.created == null) { - return null; - } - return new DateTime(this.created * 1000L, DateTimeZone.UTC); - } - - /** - * Get the updated value. - * - * @return the updated value - */ - public DateTime updated() { - if (this.updated == null) { - return null; - } - return new DateTime(this.updated * 1000L, DateTimeZone.UTC); - } - - /** - * Get the recoveryLevel value. - * - * @return the recoveryLevel value - */ - public DeletionRecoveryLevel recoveryLevel() { - return this.recoveryLevel; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import org.joda.time.DateTime; +import org.joda.time.DateTimeZone; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The storage account management attributes. + */ +public class StorageAccountAttributes { + /** + * the enabled state of the object. + */ + @JsonProperty(value = "enabled") + private Boolean enabled; + + /** + * Creation time in UTC. + */ + @JsonProperty(value = "created", access = JsonProperty.Access.WRITE_ONLY) + private Long created; + + /** + * Last updated time in UTC. + */ + @JsonProperty(value = "updated", access = JsonProperty.Access.WRITE_ONLY) + private Long updated; + + /** + * Reflects the deletion recovery level currently in effect for storage + * accounts in the current vault. If it contains 'Purgeable' the storage + * account can be permanently deleted by a privileged user; otherwise, only + * the system can purge the storage account, at the end of the retention + * interval. Possible values include: 'Purgeable', 'Recoverable+Purgeable', + * 'Recoverable', 'Recoverable+ProtectedSubscription'. + */ + @JsonProperty(value = "recoveryLevel", access = JsonProperty.Access.WRITE_ONLY) + private DeletionRecoveryLevel recoveryLevel; + + /** + * Get the enabled value. + * + * @return the enabled value + */ + public Boolean enabled() { + return this.enabled; + } + + /** + * Set the enabled value. + * + * @param enabled the enabled value to set + * @return the StorageAccountAttributes object itself. + */ + public StorageAccountAttributes withEnabled(Boolean enabled) { + this.enabled = enabled; + return this; + } + + /** + * Get the created value. + * + * @return the created value + */ + public DateTime created() { + if (this.created == null) { + return null; + } + return new DateTime(this.created * 1000L, DateTimeZone.UTC); + } + + /** + * Get the updated value. + * + * @return the updated value + */ + public DateTime updated() { + if (this.updated == null) { + return null; + } + return new DateTime(this.updated * 1000L, DateTimeZone.UTC); + } + + /** + * Get the recoveryLevel value. + * + * @return the recoveryLevel value + */ + public DeletionRecoveryLevel recoveryLevel() { + return this.recoveryLevel; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountCreateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountCreateParameters.java index eb91fd9..cb49d6e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountCreateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountCreateParameters.java @@ -1,174 +1,174 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The storage account create parameters. - */ -public class StorageAccountCreateParameters { - /** - * Storage account resource id. - */ - @JsonProperty(value = "resourceId", required = true) - private String resourceId; - - /** - * Current active storage account key name. - */ - @JsonProperty(value = "activeKeyName", required = true) - private String activeKeyName; - - /** - * whether keyvault should manage the storage account for the user. - */ - @JsonProperty(value = "autoRegenerateKey", required = true) - private boolean autoRegenerateKey; - - /** - * The key regeneration time duration specified in ISO-8601 format. - */ - @JsonProperty(value = "regenerationPeriod") - private String regenerationPeriod; - - /** - * The attributes of the storage account. - */ - @JsonProperty(value = "attributes") - private StorageAccountAttributes storageAccountAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the resourceId value. - * - * @return the resourceId value - */ - public String resourceId() { - return this.resourceId; - } - - /** - * Set the resourceId value. - * - * @param resourceId the resourceId value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withResourceId(String resourceId) { - this.resourceId = resourceId; - return this; - } - - /** - * Get the activeKeyName value. - * - * @return the activeKeyName value - */ - public String activeKeyName() { - return this.activeKeyName; - } - - /** - * Set the activeKeyName value. - * - * @param activeKeyName the activeKeyName value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withActiveKeyName(String activeKeyName) { - this.activeKeyName = activeKeyName; - return this; - } - - /** - * Get the autoRegenerateKey value. - * - * @return the autoRegenerateKey value - */ - public boolean autoRegenerateKey() { - return this.autoRegenerateKey; - } - - /** - * Set the autoRegenerateKey value. - * - * @param autoRegenerateKey the autoRegenerateKey value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withAutoRegenerateKey(boolean autoRegenerateKey) { - this.autoRegenerateKey = autoRegenerateKey; - return this; - } - - /** - * Get the regenerationPeriod value. - * - * @return the regenerationPeriod value - */ - public String regenerationPeriod() { - return this.regenerationPeriod; - } - - /** - * Set the regenerationPeriod value. - * - * @param regenerationPeriod the regenerationPeriod value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withRegenerationPeriod(String regenerationPeriod) { - this.regenerationPeriod = regenerationPeriod; - return this; - } - - /** - * Get the storageAccountAttributes value. - * - * @return the storageAccountAttributes value - */ - public StorageAccountAttributes storageAccountAttributes() { - return this.storageAccountAttributes; - } - - /** - * Set the storageAccountAttributes value. - * - * @param storageAccountAttributes the storageAccountAttributes value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withStorageAccountAttributes(StorageAccountAttributes storageAccountAttributes) { - this.storageAccountAttributes = storageAccountAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the StorageAccountCreateParameters object itself. - */ - public StorageAccountCreateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The storage account create parameters. + */ +public class StorageAccountCreateParameters { + /** + * Storage account resource id. + */ + @JsonProperty(value = "resourceId", required = true) + private String resourceId; + + /** + * Current active storage account key name. + */ + @JsonProperty(value = "activeKeyName", required = true) + private String activeKeyName; + + /** + * whether keyvault should manage the storage account for the user. + */ + @JsonProperty(value = "autoRegenerateKey", required = true) + private boolean autoRegenerateKey; + + /** + * The key regeneration time duration specified in ISO-8601 format. + */ + @JsonProperty(value = "regenerationPeriod") + private String regenerationPeriod; + + /** + * The attributes of the storage account. + */ + @JsonProperty(value = "attributes") + private StorageAccountAttributes storageAccountAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the resourceId value. + * + * @return the resourceId value + */ + public String resourceId() { + return this.resourceId; + } + + /** + * Set the resourceId value. + * + * @param resourceId the resourceId value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withResourceId(String resourceId) { + this.resourceId = resourceId; + return this; + } + + /** + * Get the activeKeyName value. + * + * @return the activeKeyName value + */ + public String activeKeyName() { + return this.activeKeyName; + } + + /** + * Set the activeKeyName value. + * + * @param activeKeyName the activeKeyName value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withActiveKeyName(String activeKeyName) { + this.activeKeyName = activeKeyName; + return this; + } + + /** + * Get the autoRegenerateKey value. + * + * @return the autoRegenerateKey value + */ + public boolean autoRegenerateKey() { + return this.autoRegenerateKey; + } + + /** + * Set the autoRegenerateKey value. + * + * @param autoRegenerateKey the autoRegenerateKey value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withAutoRegenerateKey(boolean autoRegenerateKey) { + this.autoRegenerateKey = autoRegenerateKey; + return this; + } + + /** + * Get the regenerationPeriod value. + * + * @return the regenerationPeriod value + */ + public String regenerationPeriod() { + return this.regenerationPeriod; + } + + /** + * Set the regenerationPeriod value. + * + * @param regenerationPeriod the regenerationPeriod value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withRegenerationPeriod(String regenerationPeriod) { + this.regenerationPeriod = regenerationPeriod; + return this; + } + + /** + * Get the storageAccountAttributes value. + * + * @return the storageAccountAttributes value + */ + public StorageAccountAttributes storageAccountAttributes() { + return this.storageAccountAttributes; + } + + /** + * Set the storageAccountAttributes value. + * + * @param storageAccountAttributes the storageAccountAttributes value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withStorageAccountAttributes(StorageAccountAttributes storageAccountAttributes) { + this.storageAccountAttributes = storageAccountAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the StorageAccountCreateParameters object itself. + */ + public StorageAccountCreateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountItem.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountItem.java index 1114a88..93c041e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountItem.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountItem.java @@ -1,78 +1,78 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The storage account item containing storage account metadata. - */ -public class StorageAccountItem { - /** - * Storage identifier. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * Storage account resource Id. - */ - @JsonProperty(value = "resourceId", access = JsonProperty.Access.WRITE_ONLY) - private String resourceId; - - /** - * The storage account management attributes. - */ - @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) - private StorageAccountAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) - private Map tags; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the resourceId value. - * - * @return the resourceId value - */ - public String resourceId() { - return this.resourceId; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public StorageAccountAttributes attributes() { - return this.attributes; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The storage account item containing storage account metadata. + */ +public class StorageAccountItem { + /** + * Storage identifier. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * Storage account resource Id. + */ + @JsonProperty(value = "resourceId", access = JsonProperty.Access.WRITE_ONLY) + private String resourceId; + + /** + * The storage account management attributes. + */ + @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) + private StorageAccountAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) + private Map tags; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the resourceId value. + * + * @return the resourceId value + */ + public String resourceId() { + return this.resourceId; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public StorageAccountAttributes attributes() { + return this.attributes; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountRegenerteKeyParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountRegenerteKeyParameters.java index 973b19e..c29c60b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountRegenerteKeyParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountRegenerteKeyParameters.java @@ -1,43 +1,43 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The storage account key regenerate parameters. - */ -public class StorageAccountRegenerteKeyParameters { - /** - * The storage account key name. - */ - @JsonProperty(value = "keyName", required = true) - private String keyName; - - /** - * Get the keyName value. - * - * @return the keyName value - */ - public String keyName() { - return this.keyName; - } - - /** - * Set the keyName value. - * - * @param keyName the keyName value to set - * @return the StorageAccountRegenerteKeyParameters object itself. - */ - public StorageAccountRegenerteKeyParameters withKeyName(String keyName) { - this.keyName = keyName; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The storage account key regenerate parameters. + */ +public class StorageAccountRegenerteKeyParameters { + /** + * The storage account key name. + */ + @JsonProperty(value = "keyName", required = true) + private String keyName; + + /** + * Get the keyName value. + * + * @return the keyName value + */ + public String keyName() { + return this.keyName; + } + + /** + * Set the keyName value. + * + * @param keyName the keyName value to set + * @return the StorageAccountRegenerteKeyParameters object itself. + */ + public StorageAccountRegenerteKeyParameters withKeyName(String keyName) { + this.keyName = keyName; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountUpdateParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountUpdateParameters.java index 2fa74d1..636137f 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountUpdateParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageAccountUpdateParameters.java @@ -1,148 +1,148 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The storage account update parameters. - */ -public class StorageAccountUpdateParameters { - /** - * The current active storage account key name. - */ - @JsonProperty(value = "activeKeyName") - private String activeKeyName; - - /** - * whether keyvault should manage the storage account for the user. - */ - @JsonProperty(value = "autoRegenerateKey") - private Boolean autoRegenerateKey; - - /** - * The key regeneration time duration specified in ISO-8601 format. - */ - @JsonProperty(value = "regenerationPeriod") - private String regenerationPeriod; - - /** - * The attributes of the storage account. - */ - @JsonProperty(value = "attributes") - private StorageAccountAttributes storageAccountAttributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags") - private Map tags; - - /** - * Get the activeKeyName value. - * - * @return the activeKeyName value - */ - public String activeKeyName() { - return this.activeKeyName; - } - - /** - * Set the activeKeyName value. - * - * @param activeKeyName the activeKeyName value to set - * @return the StorageAccountUpdateParameters object itself. - */ - public StorageAccountUpdateParameters withActiveKeyName(String activeKeyName) { - this.activeKeyName = activeKeyName; - return this; - } - - /** - * Get the autoRegenerateKey value. - * - * @return the autoRegenerateKey value - */ - public Boolean autoRegenerateKey() { - return this.autoRegenerateKey; - } - - /** - * Set the autoRegenerateKey value. - * - * @param autoRegenerateKey the autoRegenerateKey value to set - * @return the StorageAccountUpdateParameters object itself. - */ - public StorageAccountUpdateParameters withAutoRegenerateKey(Boolean autoRegenerateKey) { - this.autoRegenerateKey = autoRegenerateKey; - return this; - } - - /** - * Get the regenerationPeriod value. - * - * @return the regenerationPeriod value - */ - public String regenerationPeriod() { - return this.regenerationPeriod; - } - - /** - * Set the regenerationPeriod value. - * - * @param regenerationPeriod the regenerationPeriod value to set - * @return the StorageAccountUpdateParameters object itself. - */ - public StorageAccountUpdateParameters withRegenerationPeriod(String regenerationPeriod) { - this.regenerationPeriod = regenerationPeriod; - return this; - } - - /** - * Get the storageAccountAttributes value. - * - * @return the storageAccountAttributes value - */ - public StorageAccountAttributes storageAccountAttributes() { - return this.storageAccountAttributes; - } - - /** - * Set the storageAccountAttributes value. - * - * @param storageAccountAttributes the storageAccountAttributes value to set - * @return the StorageAccountUpdateParameters object itself. - */ - public StorageAccountUpdateParameters withStorageAccountAttributes(StorageAccountAttributes storageAccountAttributes) { - this.storageAccountAttributes = storageAccountAttributes; - return this; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - - /** - * Set the tags value. - * - * @param tags the tags value to set - * @return the StorageAccountUpdateParameters object itself. - */ - public StorageAccountUpdateParameters withTags(Map tags) { - this.tags = tags; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The storage account update parameters. + */ +public class StorageAccountUpdateParameters { + /** + * The current active storage account key name. + */ + @JsonProperty(value = "activeKeyName") + private String activeKeyName; + + /** + * whether keyvault should manage the storage account for the user. + */ + @JsonProperty(value = "autoRegenerateKey") + private Boolean autoRegenerateKey; + + /** + * The key regeneration time duration specified in ISO-8601 format. + */ + @JsonProperty(value = "regenerationPeriod") + private String regenerationPeriod; + + /** + * The attributes of the storage account. + */ + @JsonProperty(value = "attributes") + private StorageAccountAttributes storageAccountAttributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags") + private Map tags; + + /** + * Get the activeKeyName value. + * + * @return the activeKeyName value + */ + public String activeKeyName() { + return this.activeKeyName; + } + + /** + * Set the activeKeyName value. + * + * @param activeKeyName the activeKeyName value to set + * @return the StorageAccountUpdateParameters object itself. + */ + public StorageAccountUpdateParameters withActiveKeyName(String activeKeyName) { + this.activeKeyName = activeKeyName; + return this; + } + + /** + * Get the autoRegenerateKey value. + * + * @return the autoRegenerateKey value + */ + public Boolean autoRegenerateKey() { + return this.autoRegenerateKey; + } + + /** + * Set the autoRegenerateKey value. + * + * @param autoRegenerateKey the autoRegenerateKey value to set + * @return the StorageAccountUpdateParameters object itself. + */ + public StorageAccountUpdateParameters withAutoRegenerateKey(Boolean autoRegenerateKey) { + this.autoRegenerateKey = autoRegenerateKey; + return this; + } + + /** + * Get the regenerationPeriod value. + * + * @return the regenerationPeriod value + */ + public String regenerationPeriod() { + return this.regenerationPeriod; + } + + /** + * Set the regenerationPeriod value. + * + * @param regenerationPeriod the regenerationPeriod value to set + * @return the StorageAccountUpdateParameters object itself. + */ + public StorageAccountUpdateParameters withRegenerationPeriod(String regenerationPeriod) { + this.regenerationPeriod = regenerationPeriod; + return this; + } + + /** + * Get the storageAccountAttributes value. + * + * @return the storageAccountAttributes value + */ + public StorageAccountAttributes storageAccountAttributes() { + return this.storageAccountAttributes; + } + + /** + * Set the storageAccountAttributes value. + * + * @param storageAccountAttributes the storageAccountAttributes value to set + * @return the StorageAccountUpdateParameters object itself. + */ + public StorageAccountUpdateParameters withStorageAccountAttributes(StorageAccountAttributes storageAccountAttributes) { + this.storageAccountAttributes = storageAccountAttributes; + return this; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + + /** + * Set the tags value. + * + * @param tags the tags value to set + * @return the StorageAccountUpdateParameters object itself. + */ + public StorageAccountUpdateParameters withTags(Map tags) { + this.tags = tags; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageBundle.java index fe44233..86a2525 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageBundle.java @@ -1,124 +1,124 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.Map; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A Storage account bundle consists of key vault storage account details plus - * its attributes. - */ -public class StorageBundle { - /** - * The storage account id. - */ - @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) - private String id; - - /** - * The storage account resource id. - */ - @JsonProperty(value = "resourceId", access = JsonProperty.Access.WRITE_ONLY) - private String resourceId; - - /** - * The current active storage account key name. - */ - @JsonProperty(value = "activeKeyName", access = JsonProperty.Access.WRITE_ONLY) - private String activeKeyName; - - /** - * whether keyvault should manage the storage account for the user. - */ - @JsonProperty(value = "autoRegenerateKey", access = JsonProperty.Access.WRITE_ONLY) - private Boolean autoRegenerateKey; - - /** - * The key regeneration time duration specified in ISO-8601 format. - */ - @JsonProperty(value = "regenerationPeriod", access = JsonProperty.Access.WRITE_ONLY) - private String regenerationPeriod; - - /** - * The storage account attributes. - */ - @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) - private StorageAccountAttributes attributes; - - /** - * Application specific metadata in the form of key-value pairs. - */ - @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) - private Map tags; - - /** - * Get the id value. - * - * @return the id value - */ - public String id() { - return this.id; - } - - /** - * Get the resourceId value. - * - * @return the resourceId value - */ - public String resourceId() { - return this.resourceId; - } - - /** - * Get the activeKeyName value. - * - * @return the activeKeyName value - */ - public String activeKeyName() { - return this.activeKeyName; - } - - /** - * Get the autoRegenerateKey value. - * - * @return the autoRegenerateKey value - */ - public Boolean autoRegenerateKey() { - return this.autoRegenerateKey; - } - - /** - * Get the regenerationPeriod value. - * - * @return the regenerationPeriod value - */ - public String regenerationPeriod() { - return this.regenerationPeriod; - } - - /** - * Get the attributes value. - * - * @return the attributes value - */ - public StorageAccountAttributes attributes() { - return this.attributes; - } - - /** - * Get the tags value. - * - * @return the tags value - */ - public Map tags() { - return this.tags; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.Map; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A Storage account bundle consists of key vault storage account details plus + * its attributes. + */ +public class StorageBundle { + /** + * The storage account id. + */ + @JsonProperty(value = "id", access = JsonProperty.Access.WRITE_ONLY) + private String id; + + /** + * The storage account resource id. + */ + @JsonProperty(value = "resourceId", access = JsonProperty.Access.WRITE_ONLY) + private String resourceId; + + /** + * The current active storage account key name. + */ + @JsonProperty(value = "activeKeyName", access = JsonProperty.Access.WRITE_ONLY) + private String activeKeyName; + + /** + * whether keyvault should manage the storage account for the user. + */ + @JsonProperty(value = "autoRegenerateKey", access = JsonProperty.Access.WRITE_ONLY) + private Boolean autoRegenerateKey; + + /** + * The key regeneration time duration specified in ISO-8601 format. + */ + @JsonProperty(value = "regenerationPeriod", access = JsonProperty.Access.WRITE_ONLY) + private String regenerationPeriod; + + /** + * The storage account attributes. + */ + @JsonProperty(value = "attributes", access = JsonProperty.Access.WRITE_ONLY) + private StorageAccountAttributes attributes; + + /** + * Application specific metadata in the form of key-value pairs. + */ + @JsonProperty(value = "tags", access = JsonProperty.Access.WRITE_ONLY) + private Map tags; + + /** + * Get the id value. + * + * @return the id value + */ + public String id() { + return this.id; + } + + /** + * Get the resourceId value. + * + * @return the resourceId value + */ + public String resourceId() { + return this.resourceId; + } + + /** + * Get the activeKeyName value. + * + * @return the activeKeyName value + */ + public String activeKeyName() { + return this.activeKeyName; + } + + /** + * Get the autoRegenerateKey value. + * + * @return the autoRegenerateKey value + */ + public Boolean autoRegenerateKey() { + return this.autoRegenerateKey; + } + + /** + * Get the regenerationPeriod value. + * + * @return the regenerationPeriod value + */ + public String regenerationPeriod() { + return this.regenerationPeriod; + } + + /** + * Get the attributes value. + * + * @return the attributes value + */ + public StorageAccountAttributes attributes() { + return this.attributes; + } + + /** + * Get the tags value. + * + * @return the tags value + */ + public Map tags() { + return this.tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageRestoreParameters.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageRestoreParameters.java index 4f23c77..32ec85f 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageRestoreParameters.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/StorageRestoreParameters.java @@ -1,51 +1,51 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.microsoft.rest.Base64Url; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The secret restore parameters. - */ -public class StorageRestoreParameters { - /** - * The backup blob associated with a storage account. - */ - @JsonProperty(value = "value", required = true) - private Base64Url storageBundleBackup; - - /** - * Get the storageBundleBackup value. - * - * @return the storageBundleBackup value - */ - public byte[] storageBundleBackup() { - if (this.storageBundleBackup == null) { - return null; - } - return this.storageBundleBackup.decodedBytes(); - } - - /** - * Set the storageBundleBackup value. - * - * @param storageBundleBackup the storageBundleBackup value to set - * @return the StorageRestoreParameters object itself. - */ - public StorageRestoreParameters withStorageBundleBackup(byte[] storageBundleBackup) { - if (storageBundleBackup == null) { - this.storageBundleBackup = null; - } else { - this.storageBundleBackup = Base64Url.encode(storageBundleBackup); - } - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.microsoft.rest.Base64Url; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The secret restore parameters. + */ +public class StorageRestoreParameters { + /** + * The backup blob associated with a storage account. + */ + @JsonProperty(value = "value", required = true) + private Base64Url storageBundleBackup; + + /** + * Get the storageBundleBackup value. + * + * @return the storageBundleBackup value + */ + public byte[] storageBundleBackup() { + if (this.storageBundleBackup == null) { + return null; + } + return this.storageBundleBackup.decodedBytes(); + } + + /** + * Set the storageBundleBackup value. + * + * @param storageBundleBackup the storageBundleBackup value to set + * @return the StorageRestoreParameters object itself. + */ + public StorageRestoreParameters withStorageBundleBackup(byte[] storageBundleBackup) { + if (storageBundleBackup == null) { + this.storageBundleBackup = null; + } else { + this.storageBundleBackup = Base64Url.encode(storageBundleBackup); + } + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SubjectAlternativeNames.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SubjectAlternativeNames.java index cc373d1..2ab5185 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SubjectAlternativeNames.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/SubjectAlternativeNames.java @@ -1,96 +1,96 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * The subject alternate names of a X509 object. - */ -public class SubjectAlternativeNames { - /** - * Email addresses. - */ - @JsonProperty(value = "emails") - private List emails; - - /** - * Domain names. - */ - @JsonProperty(value = "dns_names") - private List dnsNames; - - /** - * User principal names. - */ - @JsonProperty(value = "upns") - private List upns; - - /** - * Get the emails value. - * - * @return the emails value - */ - public List emails() { - return this.emails; - } - - /** - * Set the emails value. - * - * @param emails the emails value to set - * @return the SubjectAlternativeNames object itself. - */ - public SubjectAlternativeNames withEmails(List emails) { - this.emails = emails; - return this; - } - - /** - * Get the dnsNames value. - * - * @return the dnsNames value - */ - public List dnsNames() { - return this.dnsNames; - } - - /** - * Set the dnsNames value. - * - * @param dnsNames the dnsNames value to set - * @return the SubjectAlternativeNames object itself. - */ - public SubjectAlternativeNames withDnsNames(List dnsNames) { - this.dnsNames = dnsNames; - return this; - } - - /** - * Get the upns value. - * - * @return the upns value - */ - public List upns() { - return this.upns; - } - - /** - * Set the upns value. - * - * @param upns the upns value to set - * @return the SubjectAlternativeNames object itself. - */ - public SubjectAlternativeNames withUpns(List upns) { - this.upns = upns; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * The subject alternate names of a X509 object. + */ +public class SubjectAlternativeNames { + /** + * Email addresses. + */ + @JsonProperty(value = "emails") + private List emails; + + /** + * Domain names. + */ + @JsonProperty(value = "dns_names") + private List dnsNames; + + /** + * User principal names. + */ + @JsonProperty(value = "upns") + private List upns; + + /** + * Get the emails value. + * + * @return the emails value + */ + public List emails() { + return this.emails; + } + + /** + * Set the emails value. + * + * @param emails the emails value to set + * @return the SubjectAlternativeNames object itself. + */ + public SubjectAlternativeNames withEmails(List emails) { + this.emails = emails; + return this; + } + + /** + * Get the dnsNames value. + * + * @return the dnsNames value + */ + public List dnsNames() { + return this.dnsNames; + } + + /** + * Set the dnsNames value. + * + * @param dnsNames the dnsNames value to set + * @return the SubjectAlternativeNames object itself. + */ + public SubjectAlternativeNames withDnsNames(List dnsNames) { + this.dnsNames = dnsNames; + return this; + } + + /** + * Get the upns value. + * + * @return the upns value + */ + public List upns() { + return this.upns; + } + + /** + * Set the upns value. + * + * @param upns the upns value to set + * @return the SubjectAlternativeNames object itself. + */ + public SubjectAlternativeNames withUpns(List upns) { + this.upns = upns; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Trigger.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Trigger.java index 544a760..c42884c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Trigger.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/Trigger.java @@ -1,72 +1,72 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * A condition to be satisfied for an action to be executed. - */ -public class Trigger { - /** - * Percentage of lifetime at which to trigger. Value should be between 1 - * and 99. - */ - @JsonProperty(value = "lifetime_percentage") - private Integer lifetimePercentage; - - /** - * Days before expiry to attempt renewal. Value should be between 1 and - * validity_in_months multiplied by 27. If validity_in_months is 36, then - * value should be between 1 and 972 (36 * 27). - */ - @JsonProperty(value = "days_before_expiry") - private Integer daysBeforeExpiry; - - /** - * Get the lifetimePercentage value. - * - * @return the lifetimePercentage value - */ - public Integer lifetimePercentage() { - return this.lifetimePercentage; - } - - /** - * Set the lifetimePercentage value. - * - * @param lifetimePercentage the lifetimePercentage value to set - * @return the Trigger object itself. - */ - public Trigger withLifetimePercentage(Integer lifetimePercentage) { - this.lifetimePercentage = lifetimePercentage; - return this; - } - - /** - * Get the daysBeforeExpiry value. - * - * @return the daysBeforeExpiry value - */ - public Integer daysBeforeExpiry() { - return this.daysBeforeExpiry; - } - - /** - * Set the daysBeforeExpiry value. - * - * @param daysBeforeExpiry the daysBeforeExpiry value to set - * @return the Trigger object itself. - */ - public Trigger withDaysBeforeExpiry(Integer daysBeforeExpiry) { - this.daysBeforeExpiry = daysBeforeExpiry; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * A condition to be satisfied for an action to be executed. + */ +public class Trigger { + /** + * Percentage of lifetime at which to trigger. Value should be between 1 + * and 99. + */ + @JsonProperty(value = "lifetime_percentage") + private Integer lifetimePercentage; + + /** + * Days before expiry to attempt renewal. Value should be between 1 and + * validity_in_months multiplied by 27. If validity_in_months is 36, then + * value should be between 1 and 972 (36 * 27). + */ + @JsonProperty(value = "days_before_expiry") + private Integer daysBeforeExpiry; + + /** + * Get the lifetimePercentage value. + * + * @return the lifetimePercentage value + */ + public Integer lifetimePercentage() { + return this.lifetimePercentage; + } + + /** + * Set the lifetimePercentage value. + * + * @param lifetimePercentage the lifetimePercentage value to set + * @return the Trigger object itself. + */ + public Trigger withLifetimePercentage(Integer lifetimePercentage) { + this.lifetimePercentage = lifetimePercentage; + return this; + } + + /** + * Get the daysBeforeExpiry value. + * + * @return the daysBeforeExpiry value + */ + public Integer daysBeforeExpiry() { + return this.daysBeforeExpiry; + } + + /** + * Set the daysBeforeExpiry value. + * + * @param daysBeforeExpiry the daysBeforeExpiry value to set + * @return the Trigger object itself. + */ + public Trigger withDaysBeforeExpiry(Integer daysBeforeExpiry) { + this.daysBeforeExpiry = daysBeforeExpiry; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/X509CertificateProperties.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/X509CertificateProperties.java index ad09b29..34a279a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/X509CertificateProperties.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/X509CertificateProperties.java @@ -1,148 +1,148 @@ -/** - * 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. - */ - -package com.microsoft.azure.keyvault.models; - -import java.util.List; -import com.fasterxml.jackson.annotation.JsonProperty; - -/** - * Properties of the X509 component of a certificate. - */ -public class X509CertificateProperties { - /** - * The subject name. Should be a valid X509 distinguished Name. - */ - @JsonProperty(value = "subject") - private String subject; - - /** - * The enhanced key usage. - */ - @JsonProperty(value = "ekus") - private List ekus; - - /** - * The subject alternative names. - */ - @JsonProperty(value = "sans") - private SubjectAlternativeNames subjectAlternativeNames; - - /** - * List of key usages. - */ - @JsonProperty(value = "key_usage") - private List keyUsage; - - /** - * The duration that the ceritifcate is valid in months. - */ - @JsonProperty(value = "validity_months") - private Integer validityInMonths; - - /** - * Get the subject value. - * - * @return the subject value - */ - public String subject() { - return this.subject; - } - - /** - * Set the subject value. - * - * @param subject the subject value to set - * @return the X509CertificateProperties object itself. - */ - public X509CertificateProperties withSubject(String subject) { - this.subject = subject; - return this; - } - - /** - * Get the ekus value. - * - * @return the ekus value - */ - public List ekus() { - return this.ekus; - } - - /** - * Set the ekus value. - * - * @param ekus the ekus value to set - * @return the X509CertificateProperties object itself. - */ - public X509CertificateProperties withEkus(List ekus) { - this.ekus = ekus; - return this; - } - - /** - * Get the subjectAlternativeNames value. - * - * @return the subjectAlternativeNames value - */ - public SubjectAlternativeNames subjectAlternativeNames() { - return this.subjectAlternativeNames; - } - - /** - * Set the subjectAlternativeNames value. - * - * @param subjectAlternativeNames the subjectAlternativeNames value to set - * @return the X509CertificateProperties object itself. - */ - public X509CertificateProperties withSubjectAlternativeNames(SubjectAlternativeNames subjectAlternativeNames) { - this.subjectAlternativeNames = subjectAlternativeNames; - return this; - } - - /** - * Get the keyUsage value. - * - * @return the keyUsage value - */ - public List keyUsage() { - return this.keyUsage; - } - - /** - * Set the keyUsage value. - * - * @param keyUsage the keyUsage value to set - * @return the X509CertificateProperties object itself. - */ - public X509CertificateProperties withKeyUsage(List keyUsage) { - this.keyUsage = keyUsage; - return this; - } - - /** - * Get the validityInMonths value. - * - * @return the validityInMonths value - */ - public Integer validityInMonths() { - return this.validityInMonths; - } - - /** - * Set the validityInMonths value. - * - * @param validityInMonths the validityInMonths value to set - * @return the X509CertificateProperties object itself. - */ - public X509CertificateProperties withValidityInMonths(Integer validityInMonths) { - this.validityInMonths = validityInMonths; - return this; - } - -} +/** + * 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. + */ + +package com.microsoft.azure.keyvault.models; + +import java.util.List; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Properties of the X509 component of a certificate. + */ +public class X509CertificateProperties { + /** + * The subject name. Should be a valid X509 distinguished Name. + */ + @JsonProperty(value = "subject") + private String subject; + + /** + * The enhanced key usage. + */ + @JsonProperty(value = "ekus") + private List ekus; + + /** + * The subject alternative names. + */ + @JsonProperty(value = "sans") + private SubjectAlternativeNames subjectAlternativeNames; + + /** + * List of key usages. + */ + @JsonProperty(value = "key_usage") + private List keyUsage; + + /** + * The duration that the ceritifcate is valid in months. + */ + @JsonProperty(value = "validity_months") + private Integer validityInMonths; + + /** + * Get the subject value. + * + * @return the subject value + */ + public String subject() { + return this.subject; + } + + /** + * Set the subject value. + * + * @param subject the subject value to set + * @return the X509CertificateProperties object itself. + */ + public X509CertificateProperties withSubject(String subject) { + this.subject = subject; + return this; + } + + /** + * Get the ekus value. + * + * @return the ekus value + */ + public List ekus() { + return this.ekus; + } + + /** + * Set the ekus value. + * + * @param ekus the ekus value to set + * @return the X509CertificateProperties object itself. + */ + public X509CertificateProperties withEkus(List ekus) { + this.ekus = ekus; + return this; + } + + /** + * Get the subjectAlternativeNames value. + * + * @return the subjectAlternativeNames value + */ + public SubjectAlternativeNames subjectAlternativeNames() { + return this.subjectAlternativeNames; + } + + /** + * Set the subjectAlternativeNames value. + * + * @param subjectAlternativeNames the subjectAlternativeNames value to set + * @return the X509CertificateProperties object itself. + */ + public X509CertificateProperties withSubjectAlternativeNames(SubjectAlternativeNames subjectAlternativeNames) { + this.subjectAlternativeNames = subjectAlternativeNames; + return this; + } + + /** + * Get the keyUsage value. + * + * @return the keyUsage value + */ + public List keyUsage() { + return this.keyUsage; + } + + /** + * Set the keyUsage value. + * + * @param keyUsage the keyUsage value to set + * @return the X509CertificateProperties object itself. + */ + public X509CertificateProperties withKeyUsage(List keyUsage) { + this.keyUsage = keyUsage; + return this; + } + + /** + * Get the validityInMonths value. + * + * @return the validityInMonths value + */ + public Integer validityInMonths() { + return this.validityInMonths; + } + + /** + * Set the validityInMonths value. + * + * @param validityInMonths the validityInMonths value to set + * @return the X509CertificateProperties object itself. + */ + public X509CertificateProperties withValidityInMonths(Integer validityInMonths) { + this.validityInMonths = validityInMonths; + return this; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/package-info.java index e06b098..641d85b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/package-info.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/package-info.java @@ -1,11 +1,11 @@ -// 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. - -/** - * This package contains the models classes for KeyVaultClientBase. - * The key vault client performs cryptographic key operations and vault operations against the Key Vault service. - */ -package com.microsoft.azure.keyvault.models; +// 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. + +/** + * This package contains the models classes for KeyVaultClientBase. + * The key vault client performs cryptographic key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.models; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/package-info.java index 9056e79..d9a1e4e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/package-info.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/package-info.java @@ -1,11 +1,11 @@ -// 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. - -/** - * This package contains the classes for KeyVaultClientBase. - * The key vault client performs cryptographic key operations and vault operations against the Key Vault service. - */ -package com.microsoft.azure.keyvault; +// 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. + +/** + * This package contains the classes for KeyVaultClientBase. + * The key vault client performs cryptographic key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java index 6237eed..4331163 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java @@ -1,193 +1,193 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.IssuerParameters; -import com.microsoft.azure.keyvault.models.KeyProperties; -import com.microsoft.azure.keyvault.models.LifetimeAction; -import com.microsoft.azure.keyvault.models.SecretProperties; -import com.microsoft.azure.keyvault.models.X509CertificateProperties; - -/** - * The create certificate request class. - */ -public final class CreateCertificateRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final CertificatePolicy certificatePolicy; - private final CertificateAttributes certificateAttributes; - private final Map tags; - - /** - * the {@link CreateCertificateRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - - // Optional parameters - private CertificatePolicy policy; - private CertificateAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link CreateCertificateRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param certificateName - * The name of the certificate in the given vault - */ - public Builder(String vaultBaseUrl, String certificateName) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - } - - /** - * Set the certificatePolicy value. Mandatory if sending the create - * request for the first time. - * - * @param certificatePolicy - * The management policy for the certificate. - * @return the Builder object itself. - */ - public Builder withPolicy(CertificatePolicy certificatePolicy) { - this.policy = certificatePolicy; - return this; - } - - /** - * Set the attributes value. - * - * @param attributes - * The attributes of the certificate. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (CertificateAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link CreateCertificateRequest} object. - * - * @return the {@link CreateCertificateRequest} object. - */ - public CreateCertificateRequest build() { - return new CreateCertificateRequest(this); - } - } - - private CreateCertificateRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - - if (builder.attributes != null) { - certificateAttributes = (CertificateAttributes) new CertificateAttributes() - .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) - .withExpires(builder.attributes.expires()); - } else { - certificateAttributes = null; - } - - if (builder.policy != null) { - certificatePolicy = new CertificatePolicy(); - if (builder.policy.attributes() != null) { - certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() - .withEnabled(builder.policy.attributes().enabled()) - .withExpires(builder.policy.attributes().expires()) - .withNotBefore(builder.policy.attributes().notBefore())); - } - if (builder.policy.issuerParameters() != null) { - certificatePolicy - .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); - } - if (builder.policy.x509CertificateProperties() != null) { - certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() - .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) - .withSubjectAlternativeNames( - builder.policy.x509CertificateProperties().subjectAlternativeNames()) - .withSubject(builder.policy.x509CertificateProperties().subject()) - .withEkus(builder.policy.x509CertificateProperties().ekus()) - .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); - } - if (builder.policy.lifetimeActions() != null) { - certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); - } - if (builder.policy.keyProperties() != null) { - certificatePolicy.withKeyProperties( - new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) - .withKeySize(builder.policy.keyProperties().keySize()) - .withKeyType(builder.policy.keyProperties().keyType()) - .withReuseKey(builder.policy.keyProperties().reuseKey())); - } - if (builder.policy.secretProperties() != null) { - certificatePolicy.withSecretProperties( - new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); - } - } else { - certificatePolicy = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the certificate policy - */ - public CertificatePolicy certificatePolicy() { - return certificatePolicy; - } - - /** - * @return the certificate attributes - */ - public CertificateAttributes certificateAttributes() { - return certificateAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.IssuerParameters; +import com.microsoft.azure.keyvault.models.KeyProperties; +import com.microsoft.azure.keyvault.models.LifetimeAction; +import com.microsoft.azure.keyvault.models.SecretProperties; +import com.microsoft.azure.keyvault.models.X509CertificateProperties; + +/** + * The create certificate request class. + */ +public final class CreateCertificateRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final CertificatePolicy certificatePolicy; + private final CertificateAttributes certificateAttributes; + private final Map tags; + + /** + * the {@link CreateCertificateRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + + // Optional parameters + private CertificatePolicy policy; + private CertificateAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link CreateCertificateRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param certificateName + * The name of the certificate in the given vault + */ + public Builder(String vaultBaseUrl, String certificateName) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + } + + /** + * Set the certificatePolicy value. Mandatory if sending the create + * request for the first time. + * + * @param certificatePolicy + * The management policy for the certificate. + * @return the Builder object itself. + */ + public Builder withPolicy(CertificatePolicy certificatePolicy) { + this.policy = certificatePolicy; + return this; + } + + /** + * Set the attributes value. + * + * @param attributes + * The attributes of the certificate. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (CertificateAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link CreateCertificateRequest} object. + * + * @return the {@link CreateCertificateRequest} object. + */ + public CreateCertificateRequest build() { + return new CreateCertificateRequest(this); + } + } + + private CreateCertificateRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + + if (builder.attributes != null) { + certificateAttributes = (CertificateAttributes) new CertificateAttributes() + .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) + .withExpires(builder.attributes.expires()); + } else { + certificateAttributes = null; + } + + if (builder.policy != null) { + certificatePolicy = new CertificatePolicy(); + if (builder.policy.attributes() != null) { + certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() + .withEnabled(builder.policy.attributes().enabled()) + .withExpires(builder.policy.attributes().expires()) + .withNotBefore(builder.policy.attributes().notBefore())); + } + if (builder.policy.issuerParameters() != null) { + certificatePolicy + .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); + } + if (builder.policy.x509CertificateProperties() != null) { + certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() + .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) + .withSubjectAlternativeNames( + builder.policy.x509CertificateProperties().subjectAlternativeNames()) + .withSubject(builder.policy.x509CertificateProperties().subject()) + .withEkus(builder.policy.x509CertificateProperties().ekus()) + .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); + } + if (builder.policy.lifetimeActions() != null) { + certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); + } + if (builder.policy.keyProperties() != null) { + certificatePolicy.withKeyProperties( + new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) + .withKeySize(builder.policy.keyProperties().keySize()) + .withKeyType(builder.policy.keyProperties().keyType()) + .withReuseKey(builder.policy.keyProperties().reuseKey())); + } + if (builder.policy.secretProperties() != null) { + certificatePolicy.withSecretProperties( + new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); + } + } else { + certificatePolicy = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the certificate policy + */ + public CertificatePolicy certificatePolicy() { + return certificatePolicy; + } + + /** + * @return the certificate attributes + */ + public CertificateAttributes certificateAttributes() { + return certificateAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java index a2ee886..452d446 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java @@ -1,220 +1,220 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; - -/** - * The create key request class. - */ -public final class CreateKeyRequest { - - private final String vaultBaseUrl; - private final String keyName; - private final JsonWebKeyType keyType; - private final Integer keySize; - private final List keyOperations; - private final KeyAttributes keyAttributes; - private final Map tags; - private final JsonWebKeyCurveName curve; - - /** - * The {@link CreateKeyRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String keyName; - private final JsonWebKeyType keyType; - - // Optional parameters - private Integer keySize; - private List keyOperations; - private KeyAttributes attributes; - private Map tags; - private JsonWebKeyCurveName curve; - - /** - * The builder for constructing {@link CreateKeyRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net - * @param keyName - * The name of the key in the given vault - * @param keyType - * The type of key to create. Valid key types, see JsonWebKeyType. - * Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. - * Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - */ - public Builder(String vaultBaseUrl, String keyName, JsonWebKeyType keyType) { - this.vaultBaseUrl = vaultBaseUrl; - this.keyName = keyName; - this.keyType = keyType; - } - - /** - * Set the key size value. - * - * @param size - * the size of the key. - * @return the Builder object itself. - */ - public Builder withKeySize(Integer size) { - this.keySize = size; - return this; - } - - /** - * Set the key operations value. - * - * @param keyOperations - * the key operation list. - * @return the Builder object itself. - */ - public Builder withKeyOperations(List keyOperations) { - this.keyOperations = keyOperations; - return this; - } - - /** - * Set the key attributes value. - * - * @param attributes - * the key management attributes value to set. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (KeyAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * Set the curve value. - * - * @param curve Defines values for JsonWebKeyCurveName; - * - * @return the Builder object itself. - */ - public Builder withCurve(JsonWebKeyCurveName curve) { - this.curve = curve; - return this; - } - - /** - * builds the {@link CreateKeyRequest} object. - * - * @return the {@link CreateKeyRequest} object. - */ - public CreateKeyRequest build() { - return new CreateKeyRequest(this); - } - } - - private CreateKeyRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - keyName = builder.keyName; - keyType = builder.keyType; - keySize = builder.keySize; - - if (builder.keyOperations != null) { - keyOperations = new ArrayList(builder.keyOperations); - } else { - keyOperations = null; - } - - if (builder.attributes != null) { - keyAttributes = (KeyAttributes) new KeyAttributes().withNotBefore(builder.attributes.notBefore()) - .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); - } else { - keyAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } - else { - tags = null; - } - - if (builder.curve != null) { - curve = builder.curve; - } else { - curve = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the key name - */ - public String keyName() { - return keyName; - } - - /** - * @return the key type - */ - public JsonWebKeyType keyType() { - return keyType; - } - - /** - * @return the key size - */ - public Integer keySize() { - return keySize; - } - - /** - * @return the key operations - */ - public List keyOperations() { - return keyOperations; - } - - /** - * @return the key attributes - */ - public KeyAttributes keyAttributes() { - return keyAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } - - /** - * @return the curve - */ - public JsonWebKeyCurveName curve() {return curve; } +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; + +/** + * The create key request class. + */ +public final class CreateKeyRequest { + + private final String vaultBaseUrl; + private final String keyName; + private final JsonWebKeyType keyType; + private final Integer keySize; + private final List keyOperations; + private final KeyAttributes keyAttributes; + private final Map tags; + private final JsonWebKeyCurveName curve; + + /** + * The {@link CreateKeyRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String keyName; + private final JsonWebKeyType keyType; + + // Optional parameters + private Integer keySize; + private List keyOperations; + private KeyAttributes attributes; + private Map tags; + private JsonWebKeyCurveName curve; + + /** + * The builder for constructing {@link CreateKeyRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key in the given vault + * @param keyType + * The type of key to create. Valid key types, see JsonWebKeyType. + * Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. + * Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + */ + public Builder(String vaultBaseUrl, String keyName, JsonWebKeyType keyType) { + this.vaultBaseUrl = vaultBaseUrl; + this.keyName = keyName; + this.keyType = keyType; + } + + /** + * Set the key size value. + * + * @param size + * the size of the key. + * @return the Builder object itself. + */ + public Builder withKeySize(Integer size) { + this.keySize = size; + return this; + } + + /** + * Set the key operations value. + * + * @param keyOperations + * the key operation list. + * @return the Builder object itself. + */ + public Builder withKeyOperations(List keyOperations) { + this.keyOperations = keyOperations; + return this; + } + + /** + * Set the key attributes value. + * + * @param attributes + * the key management attributes value to set. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (KeyAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * Set the curve value. + * + * @param curve Defines values for JsonWebKeyCurveName; + * + * @return the Builder object itself. + */ + public Builder withCurve(JsonWebKeyCurveName curve) { + this.curve = curve; + return this; + } + + /** + * builds the {@link CreateKeyRequest} object. + * + * @return the {@link CreateKeyRequest} object. + */ + public CreateKeyRequest build() { + return new CreateKeyRequest(this); + } + } + + private CreateKeyRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + keyName = builder.keyName; + keyType = builder.keyType; + keySize = builder.keySize; + + if (builder.keyOperations != null) { + keyOperations = new ArrayList(builder.keyOperations); + } else { + keyOperations = null; + } + + if (builder.attributes != null) { + keyAttributes = (KeyAttributes) new KeyAttributes().withNotBefore(builder.attributes.notBefore()) + .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); + } else { + keyAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } + else { + tags = null; + } + + if (builder.curve != null) { + curve = builder.curve; + } else { + curve = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the key name + */ + public String keyName() { + return keyName; + } + + /** + * @return the key type + */ + public JsonWebKeyType keyType() { + return keyType; + } + + /** + * @return the key size + */ + public Integer keySize() { + return keySize; + } + + /** + * @return the key operations + */ + public List keyOperations() { + return keyOperations; + } + + /** + * @return the key attributes + */ + public KeyAttributes keyAttributes() { + return keyAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } + + /** + * @return the curve + */ + public JsonWebKeyCurveName curve() {return curve; } } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java index 715ffa5..b139986 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java @@ -1,230 +1,230 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.IssuerParameters; -import com.microsoft.azure.keyvault.models.KeyProperties; -import com.microsoft.azure.keyvault.models.LifetimeAction; -import com.microsoft.azure.keyvault.models.SecretProperties; -import com.microsoft.azure.keyvault.models.X509CertificateProperties; - -/** - * The import certificate request class. - */ -public final class ImportCertificateRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final String base64EncodedCertificate; - private final String password; - private final CertificatePolicy certificatePolicy; - private final CertificateAttributes certificateAttributes; - private final Map tags; - - /** - * the {@link ImportCertificateRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - private final String base64EncodedCertificate; - - // Optional parameters - private String password; - private CertificatePolicy policy; - private CertificateAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link ImportCertificateRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName - * The name of the certificate in the given vault - * @param base64EncodedCertificate - * Base64 encoded representation of the certificate object to - * import. This certificate needs to contain the private key. - */ - public Builder(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - this.base64EncodedCertificate = base64EncodedCertificate; - } - - /** - * Set the password. - * - * @param password - * If the private key in base64EncodedCertificate is - * encrypted, the password used for encryption. - * @return the Builder object itself. - */ - public Builder withPassword(String password) { - this.password = password; - return this; - } - - /** - * Set the certificate policy. - * - * @param policy - * The management policy for the certificate. - * @return the Builder object itself. - */ - public Builder withPolicy(CertificatePolicy policy) { - this.policy = policy; - return this; - } - - /** - * Set the certificate attributes. - * - * @param attributes - * The attributes of the certificate. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (CertificateAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link ImportCertificateRequest} object. - * - * @return the {@link ImportCertificateRequest} object. - */ - public ImportCertificateRequest build() { - return new ImportCertificateRequest(this); - } - } - - private ImportCertificateRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - base64EncodedCertificate = builder.base64EncodedCertificate; - password = builder.password; - - if (builder.attributes != null) { - certificateAttributes = (CertificateAttributes) new CertificateAttributes() - .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) - .withExpires(builder.attributes.expires()); - } - else { - certificateAttributes = null; - } - - if (builder.policy != null) { - certificatePolicy = new CertificatePolicy(); - if (builder.policy.attributes() != null) { - certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() - .withEnabled(builder.policy.attributes().enabled()) - .withExpires(builder.policy.attributes().expires()) - .withNotBefore(builder.policy.attributes().notBefore())); - } - if (builder.policy.issuerParameters() != null) { - certificatePolicy - .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); - } - if (builder.policy.x509CertificateProperties() != null) { - certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() - .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) - .withSubjectAlternativeNames( - builder.policy.x509CertificateProperties().subjectAlternativeNames()) - .withSubject(builder.policy.x509CertificateProperties().subject()) - .withEkus(builder.policy.x509CertificateProperties().ekus()) - .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); - } - if (builder.policy.lifetimeActions() != null) { - certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); - } - if (builder.policy.keyProperties() != null) { - certificatePolicy.withKeyProperties( - new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) - .withKeySize(builder.policy.keyProperties().keySize()) - .withKeyType(builder.policy.keyProperties().keyType()) - .withReuseKey(builder.policy.keyProperties().reuseKey())); - } - if (builder.policy.secretProperties() != null) { - certificatePolicy.withSecretProperties( - new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); - } - } else { - certificatePolicy = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the base64 encoded certificate - */ - public String base64EncodedCertificate() { - return base64EncodedCertificate; - } - - /** - * @return the password - */ - public String password() { - return password; - } - - /** - * @return the certificatePolicy - */ - public CertificatePolicy certificatePolicy() { - return certificatePolicy; - } - - /** - * @return the certificateAttributes - */ - public CertificateAttributes certificateAttributes() { - return certificateAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.IssuerParameters; +import com.microsoft.azure.keyvault.models.KeyProperties; +import com.microsoft.azure.keyvault.models.LifetimeAction; +import com.microsoft.azure.keyvault.models.SecretProperties; +import com.microsoft.azure.keyvault.models.X509CertificateProperties; + +/** + * The import certificate request class. + */ +public final class ImportCertificateRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final String base64EncodedCertificate; + private final String password; + private final CertificatePolicy certificatePolicy; + private final CertificateAttributes certificateAttributes; + private final Map tags; + + /** + * the {@link ImportCertificateRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + private final String base64EncodedCertificate; + + // Optional parameters + private String password; + private CertificatePolicy policy; + private CertificateAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link ImportCertificateRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate in the given vault + * @param base64EncodedCertificate + * Base64 encoded representation of the certificate object to + * import. This certificate needs to contain the private key. + */ + public Builder(String vaultBaseUrl, String certificateName, String base64EncodedCertificate) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + this.base64EncodedCertificate = base64EncodedCertificate; + } + + /** + * Set the password. + * + * @param password + * If the private key in base64EncodedCertificate is + * encrypted, the password used for encryption. + * @return the Builder object itself. + */ + public Builder withPassword(String password) { + this.password = password; + return this; + } + + /** + * Set the certificate policy. + * + * @param policy + * The management policy for the certificate. + * @return the Builder object itself. + */ + public Builder withPolicy(CertificatePolicy policy) { + this.policy = policy; + return this; + } + + /** + * Set the certificate attributes. + * + * @param attributes + * The attributes of the certificate. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (CertificateAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link ImportCertificateRequest} object. + * + * @return the {@link ImportCertificateRequest} object. + */ + public ImportCertificateRequest build() { + return new ImportCertificateRequest(this); + } + } + + private ImportCertificateRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + base64EncodedCertificate = builder.base64EncodedCertificate; + password = builder.password; + + if (builder.attributes != null) { + certificateAttributes = (CertificateAttributes) new CertificateAttributes() + .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) + .withExpires(builder.attributes.expires()); + } + else { + certificateAttributes = null; + } + + if (builder.policy != null) { + certificatePolicy = new CertificatePolicy(); + if (builder.policy.attributes() != null) { + certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() + .withEnabled(builder.policy.attributes().enabled()) + .withExpires(builder.policy.attributes().expires()) + .withNotBefore(builder.policy.attributes().notBefore())); + } + if (builder.policy.issuerParameters() != null) { + certificatePolicy + .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); + } + if (builder.policy.x509CertificateProperties() != null) { + certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() + .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) + .withSubjectAlternativeNames( + builder.policy.x509CertificateProperties().subjectAlternativeNames()) + .withSubject(builder.policy.x509CertificateProperties().subject()) + .withEkus(builder.policy.x509CertificateProperties().ekus()) + .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); + } + if (builder.policy.lifetimeActions() != null) { + certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); + } + if (builder.policy.keyProperties() != null) { + certificatePolicy.withKeyProperties( + new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) + .withKeySize(builder.policy.keyProperties().keySize()) + .withKeyType(builder.policy.keyProperties().keyType()) + .withReuseKey(builder.policy.keyProperties().reuseKey())); + } + if (builder.policy.secretProperties() != null) { + certificatePolicy.withSecretProperties( + new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); + } + } else { + certificatePolicy = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the base64 encoded certificate + */ + public String base64EncodedCertificate() { + return base64EncodedCertificate; + } + + /** + * @return the password + */ + public String password() { + return password; + } + + /** + * @return the certificatePolicy + */ + public CertificatePolicy certificatePolicy() { + return certificatePolicy; + } + + /** + * @return the certificateAttributes + */ + public CertificateAttributes certificateAttributes() { + return certificateAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java index 908881d..323eb8a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java @@ -1,176 +1,176 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.webkey.JsonWebKey; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; - -/** - * The import key request class. - */ -public final class ImportKeyRequest { - - private final String vaultBaseUrl; - private final String keyName; - private final JsonWebKey key; - private final boolean isHsm; - private final KeyAttributes keyAttributes; - private final Map tags; - - /** - * The {@link ImportKeyRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String keyName; - private final JsonWebKey key; - - // Optional parameters - private boolean isHsm; - private KeyAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link ImportKeyRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param keyName - * The name of the key in the given vault. - * @param key - * The Json web key. - */ - public Builder(String vaultBaseUrl, String keyName, JsonWebKey key) { - this.vaultBaseUrl = vaultBaseUrl; - this.keyName = keyName; - this.key = key; - } - - /** - * Set the isHsm to true if the key is imported as a hardware key to - * HSM, false otherwise. - * - * @param isHsm - * True, if the key is hardware key to be stored in HSM. - * false otherwise - * @return the Builder object itself. - */ - public Builder withHsm(boolean isHsm) { - this.isHsm = isHsm; - return this; - } - - /** - * Set the key attributes value. - * - * @param attributes - * the key management attributes value to set - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (KeyAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link ImportKeyRequest} object. - * - * @return the {@link ImportKeyRequest} object. - */ - public ImportKeyRequest build() { - return new ImportKeyRequest(this); - } - } - - private ImportKeyRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - keyName = builder.keyName; - isHsm = builder.isHsm; - - if (builder.key != null) { - key = new JsonWebKey().withKty(builder.key.kty()).withN(builder.key.n()).withE(builder.key.e()) - .withD(builder.key.d()).withP(builder.key.p()).withQ(builder.key.q()).withDp(builder.key.dp()) - .withDq(builder.key.dq()).withQi(builder.key.qi()).withK(builder.key.k()).withT(builder.key.t()); - if (builder.key.keyOps() != null) { - key.withKeyOps(new ArrayList(builder.key.keyOps())); - } - } else { - key = null; - } - - if (builder.attributes != null) { - keyAttributes = (KeyAttributes) new KeyAttributes().withNotBefore(builder.attributes.notBefore()) - .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); - } else { - keyAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the key name - */ - public String keyName() { - return keyName; - } - - /** - * @return the key - */ - public JsonWebKey key() { - return key; - } - - /** - * @return the isHsm - */ - public boolean isHsm() { - return isHsm; - } - - /** - * @return the key attribute - */ - public KeyAttributes keyAttributes() { - return keyAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } - -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; + +/** + * The import key request class. + */ +public final class ImportKeyRequest { + + private final String vaultBaseUrl; + private final String keyName; + private final JsonWebKey key; + private final boolean isHsm; + private final KeyAttributes keyAttributes; + private final Map tags; + + /** + * The {@link ImportKeyRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String keyName; + private final JsonWebKey key; + + // Optional parameters + private boolean isHsm; + private KeyAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link ImportKeyRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param keyName + * The name of the key in the given vault. + * @param key + * The Json web key. + */ + public Builder(String vaultBaseUrl, String keyName, JsonWebKey key) { + this.vaultBaseUrl = vaultBaseUrl; + this.keyName = keyName; + this.key = key; + } + + /** + * Set the isHsm to true if the key is imported as a hardware key to + * HSM, false otherwise. + * + * @param isHsm + * True, if the key is hardware key to be stored in HSM. + * false otherwise + * @return the Builder object itself. + */ + public Builder withHsm(boolean isHsm) { + this.isHsm = isHsm; + return this; + } + + /** + * Set the key attributes value. + * + * @param attributes + * the key management attributes value to set + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (KeyAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link ImportKeyRequest} object. + * + * @return the {@link ImportKeyRequest} object. + */ + public ImportKeyRequest build() { + return new ImportKeyRequest(this); + } + } + + private ImportKeyRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + keyName = builder.keyName; + isHsm = builder.isHsm; + + if (builder.key != null) { + key = new JsonWebKey().withKty(builder.key.kty()).withN(builder.key.n()).withE(builder.key.e()) + .withD(builder.key.d()).withP(builder.key.p()).withQ(builder.key.q()).withDp(builder.key.dp()) + .withDq(builder.key.dq()).withQi(builder.key.qi()).withK(builder.key.k()).withT(builder.key.t()); + if (builder.key.keyOps() != null) { + key.withKeyOps(new ArrayList(builder.key.keyOps())); + } + } else { + key = null; + } + + if (builder.attributes != null) { + keyAttributes = (KeyAttributes) new KeyAttributes().withNotBefore(builder.attributes.notBefore()) + .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); + } else { + keyAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the key name + */ + public String keyName() { + return keyName; + } + + /** + * @return the key + */ + public JsonWebKey key() { + return key; + } + + /** + * @return the isHsm + */ + public boolean isHsm() { + return isHsm; + } + + /** + * @return the key attribute + */ + public KeyAttributes keyAttributes() { + return keyAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java index 1a1569e..16b3b1c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java @@ -1,139 +1,139 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.CertificateAttributes; - -/** - * The merge certificate request class. - */ -public final class MergeCertificateRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final List x509Certificates; - private final CertificateAttributes certificateAttributes; - private final Map tags; - - /** - * The {@link MergeCertificateRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - private final List x509Certificates; - - // Optional parameters - private CertificateAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link MergeCertificateRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param certificateName - * The name of the certificate in the given vault. - * @param x509Certificates - * The certificate or the certificate chain to merge. - */ - public Builder(String vaultBaseUrl, String certificateName, List x509Certificates) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - this.x509Certificates = x509Certificates; - } - - /** - * Set the attributes value. - * - * @param attributes - * The attributes of the certificate. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (CertificateAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link MergeCertificateRequest} object. - * - * @return the {@link MergeCertificateRequest} object. - */ - public MergeCertificateRequest build() { - return new MergeCertificateRequest(this); - } - } - - private MergeCertificateRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - x509Certificates = new ArrayList(builder.x509Certificates); - - if (builder.attributes != null) { - certificateAttributes = (CertificateAttributes) new CertificateAttributes() - .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) - .withExpires(builder.attributes.expires()); - } else { - certificateAttributes = null; - } - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the x509 certificates - */ - public List x509Certificates() { - return x509Certificates; - } - - /** - * @return the certificate attributes - */ - public CertificateAttributes certificateAttributes() { - return certificateAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.CertificateAttributes; + +/** + * The merge certificate request class. + */ +public final class MergeCertificateRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final List x509Certificates; + private final CertificateAttributes certificateAttributes; + private final Map tags; + + /** + * The {@link MergeCertificateRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + private final List x509Certificates; + + // Optional parameters + private CertificateAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link MergeCertificateRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param certificateName + * The name of the certificate in the given vault. + * @param x509Certificates + * The certificate or the certificate chain to merge. + */ + public Builder(String vaultBaseUrl, String certificateName, List x509Certificates) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + this.x509Certificates = x509Certificates; + } + + /** + * Set the attributes value. + * + * @param attributes + * The attributes of the certificate. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (CertificateAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link MergeCertificateRequest} object. + * + * @return the {@link MergeCertificateRequest} object. + */ + public MergeCertificateRequest build() { + return new MergeCertificateRequest(this); + } + } + + private MergeCertificateRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + x509Certificates = new ArrayList(builder.x509Certificates); + + if (builder.attributes != null) { + certificateAttributes = (CertificateAttributes) new CertificateAttributes() + .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) + .withExpires(builder.attributes.expires()); + } else { + certificateAttributes = null; + } + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the x509 certificates + */ + public List x509Certificates() { + return x509Certificates; + } + + /** + * @return the certificate attributes + */ + public CertificateAttributes certificateAttributes() { + return certificateAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java index 7d582e2..4622e59 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java @@ -1,165 +1,165 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; - -import com.microsoft.azure.keyvault.models.AdministratorDetails; -import com.microsoft.azure.keyvault.models.IssuerAttributes; -import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.models.OrganizationDetails; - -/** - * The set certificate issuer request class. - */ -public final class SetCertificateIssuerRequest { - - private final String vaultBaseUrl; - private final String issuerName; - private final String provider; - private final IssuerCredentials credentials; - private final OrganizationDetails organizationDetails; - private final IssuerAttributes attributes; - - /** - * The {@link SetCertificateIssuerRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String issuerName; - private final String provider; - - // Optional parameters - private IssuerCredentials credentials; - private OrganizationDetails organizationDetails; - private IssuerAttributes attributes; - - /** - * The builder for constructing {@link SetCertificateIssuerRequest} - * object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param issuerName - * The name of the issuer. - * @param provider The name of the issuer. - */ - public Builder(String vaultBaseUrl, String issuerName, String provider) { - this.vaultBaseUrl = vaultBaseUrl; - this.issuerName = issuerName; - this.provider = provider; - } - - /** - * Set issuer credentials. - * - * @param credentials - * The issuer credentials. - * @return the Builder object itself. - */ - public Builder withCredentials(IssuerCredentials credentials) { - this.credentials = credentials; - return this; - } - - /** - * Set issuer organization details. - * - * @param organizationDetails - * The issuer organization details. - * @return the Builder object itself. - */ - public Builder withOrganizationDetails(OrganizationDetails organizationDetails) { - this.organizationDetails = organizationDetails; - return this; - } - - /** - * Set issuer attributes. - * - * @param attributes - * The issuer attributes. - * @return the Builder object itself. - */ - public Builder withAttributes(IssuerAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * builds the {@link SetCertificateIssuerRequest} object. - * - * @return the {@link SetCertificateIssuerRequest} object. - */ - public SetCertificateIssuerRequest build() { - return new SetCertificateIssuerRequest(this); - } - } - - private SetCertificateIssuerRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - issuerName = builder.issuerName; - provider = builder.provider; - if (builder.organizationDetails != null) { - organizationDetails = new OrganizationDetails() - .withId(builder.organizationDetails.id()) - .withAdminDetails(new ArrayList(builder.organizationDetails.adminDetails())); - } else { - organizationDetails = null; - } - if (builder.credentials != null) { - credentials = new IssuerCredentials() - .withAccountId(builder.credentials.accountId()) - .withPassword(builder.credentials.password()); - } else { - credentials = null; - } - if (builder.attributes != null) { - attributes = new IssuerAttributes().withEnabled(builder.attributes.enabled()); - } else { - attributes = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the issuer name - */ - public String issuerName() { - return issuerName; - } - - /** - * @return the issuer provider name - */ - public String provider() { - return provider; - } - - /** - * @return the issuer credentials - */ - public IssuerCredentials credentials() { - return credentials; - } - - /** - * @return the organization details - */ - public OrganizationDetails organizationDetails() { - return organizationDetails; - } - - /** - * @return the issuer attributes - */ - public IssuerAttributes attributes() { - return attributes; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; + +import com.microsoft.azure.keyvault.models.AdministratorDetails; +import com.microsoft.azure.keyvault.models.IssuerAttributes; +import com.microsoft.azure.keyvault.models.IssuerCredentials; +import com.microsoft.azure.keyvault.models.OrganizationDetails; + +/** + * The set certificate issuer request class. + */ +public final class SetCertificateIssuerRequest { + + private final String vaultBaseUrl; + private final String issuerName; + private final String provider; + private final IssuerCredentials credentials; + private final OrganizationDetails organizationDetails; + private final IssuerAttributes attributes; + + /** + * The {@link SetCertificateIssuerRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String issuerName; + private final String provider; + + // Optional parameters + private IssuerCredentials credentials; + private OrganizationDetails organizationDetails; + private IssuerAttributes attributes; + + /** + * The builder for constructing {@link SetCertificateIssuerRequest} + * object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param issuerName + * The name of the issuer. + * @param provider The name of the issuer. + */ + public Builder(String vaultBaseUrl, String issuerName, String provider) { + this.vaultBaseUrl = vaultBaseUrl; + this.issuerName = issuerName; + this.provider = provider; + } + + /** + * Set issuer credentials. + * + * @param credentials + * The issuer credentials. + * @return the Builder object itself. + */ + public Builder withCredentials(IssuerCredentials credentials) { + this.credentials = credentials; + return this; + } + + /** + * Set issuer organization details. + * + * @param organizationDetails + * The issuer organization details. + * @return the Builder object itself. + */ + public Builder withOrganizationDetails(OrganizationDetails organizationDetails) { + this.organizationDetails = organizationDetails; + return this; + } + + /** + * Set issuer attributes. + * + * @param attributes + * The issuer attributes. + * @return the Builder object itself. + */ + public Builder withAttributes(IssuerAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * builds the {@link SetCertificateIssuerRequest} object. + * + * @return the {@link SetCertificateIssuerRequest} object. + */ + public SetCertificateIssuerRequest build() { + return new SetCertificateIssuerRequest(this); + } + } + + private SetCertificateIssuerRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + issuerName = builder.issuerName; + provider = builder.provider; + if (builder.organizationDetails != null) { + organizationDetails = new OrganizationDetails() + .withId(builder.organizationDetails.id()) + .withAdminDetails(new ArrayList(builder.organizationDetails.adminDetails())); + } else { + organizationDetails = null; + } + if (builder.credentials != null) { + credentials = new IssuerCredentials() + .withAccountId(builder.credentials.accountId()) + .withPassword(builder.credentials.password()); + } else { + credentials = null; + } + if (builder.attributes != null) { + attributes = new IssuerAttributes().withEnabled(builder.attributes.enabled()); + } else { + attributes = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the issuer name + */ + public String issuerName() { + return issuerName; + } + + /** + * @return the issuer provider name + */ + public String provider() { + return provider; + } + + /** + * @return the issuer credentials + */ + public IssuerCredentials credentials() { + return credentials; + } + + /** + * @return the organization details + */ + public OrganizationDetails organizationDetails() { + return organizationDetails; + } + + /** + * @return the issuer attributes + */ + public IssuerAttributes attributes() { + return attributes; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java index 2bfa1cc..dc37e71 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java @@ -1,160 +1,160 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.SecretAttributes; - -/** - * The set secret request class. - */ -public final class SetSecretRequest { - private final String vaultBaseUrl; - private final String secretName; - private final String value; - private final String contentType; - private final SecretAttributes secretAttributes; - private final Map tags; - - /** - * The {@link SetSecretRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String secretName; - private final String value; - - // Optional parameters - private String contentType; - private SecretAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link SetSecretRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net - * @param secretName - * The name of the secret in the given vault - * @param value - * The value of the secret - */ - public Builder(String vaultBaseUrl, String secretName, String value) { - this.vaultBaseUrl = vaultBaseUrl; - this.secretName = secretName; - this.value = value; - } - - /** - * Set the content type value. - * - * @param contentType - * Type of the secret value such as a password - * @return the Builder object itself. - */ - public Builder withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Set the attributes value. - * - * @param attributes - * The secret management attributes. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (SecretAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link SetSecretRequest} object. - * - * @return the {@link SetSecretRequest} object. - */ - public SetSecretRequest build() { - return new SetSecretRequest(this); - } - } - - private SetSecretRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - secretName = builder.secretName; - value = builder.value; - contentType = builder.contentType; - - if (builder.attributes != null) { - secretAttributes = (SecretAttributes) new SecretAttributes().withNotBefore(builder.attributes.notBefore()) - .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); - } else { - secretAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vaultBaseUrl - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the secretName - */ - public String secretName() { - return secretName; - } - - /** - * @return the value - */ - public String value() { - return value; - } - - /** - * @return the contentType - */ - public String contentType() { - return contentType; - } - - /** - * @return the secretAttributes - */ - public SecretAttributes secretAttributes() { - return secretAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } - -} +package com.microsoft.azure.keyvault.requests; + +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.SecretAttributes; + +/** + * The set secret request class. + */ +public final class SetSecretRequest { + private final String vaultBaseUrl; + private final String secretName; + private final String value; + private final String contentType; + private final SecretAttributes secretAttributes; + private final Map tags; + + /** + * The {@link SetSecretRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String secretName; + private final String value; + + // Optional parameters + private String contentType; + private SecretAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link SetSecretRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param value + * The value of the secret + */ + public Builder(String vaultBaseUrl, String secretName, String value) { + this.vaultBaseUrl = vaultBaseUrl; + this.secretName = secretName; + this.value = value; + } + + /** + * Set the content type value. + * + * @param contentType + * Type of the secret value such as a password + * @return the Builder object itself. + */ + public Builder withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Set the attributes value. + * + * @param attributes + * The secret management attributes. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (SecretAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link SetSecretRequest} object. + * + * @return the {@link SetSecretRequest} object. + */ + public SetSecretRequest build() { + return new SetSecretRequest(this); + } + } + + private SetSecretRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + secretName = builder.secretName; + value = builder.value; + contentType = builder.contentType; + + if (builder.attributes != null) { + secretAttributes = (SecretAttributes) new SecretAttributes().withNotBefore(builder.attributes.notBefore()) + .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); + } else { + secretAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vaultBaseUrl + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the secretName + */ + public String secretName() { + return secretName; + } + + /** + * @return the value + */ + public String value() { + return value; + } + + /** + * @return the contentType + */ + public String contentType() { + return contentType; + } + + /** + * @return the secretAttributes + */ + public SecretAttributes secretAttributes() { + return secretAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } + +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java index d743f86..6ce9ad2 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java @@ -1,174 +1,174 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; - -import com.microsoft.azure.keyvault.models.AdministratorDetails; -import com.microsoft.azure.keyvault.models.IssuerAttributes; -import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.models.OrganizationDetails; - -/** - * The update certificate issuer request class. - */ -public final class UpdateCertificateIssuerRequest { - private final String vaultBaseUrl; - private final String issuerName; - private final String provider; - private final IssuerCredentials credentials; - private final OrganizationDetails organizationDetails; - private final IssuerAttributes attributes; - - /** - * The {@link UpdateCertificateIssuerRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String issuerName; - - // Optional parameters - private String provider; - private IssuerCredentials credentials; - private OrganizationDetails organizationDetails; - private IssuerAttributes attributes; - - /** - * The builder for constructing {@link UpdateCertificateIssuerRequest} - * object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param issuerName - * The name of the issuer in the given vault. - */ - public Builder(String vaultBaseUrl, String issuerName) { - this.vaultBaseUrl = vaultBaseUrl; - this.issuerName = issuerName; - } - - /** - * Set issuer credentials. - * - * @param provider - * The issuer provider. - * @return the Builder object itself. - */ - public Builder withProvider(String provider) { - this.provider = provider; - return this; - } - - /** - * Set issuer credentials. - * - * @param credentials - * The issuer credentials. - * @return the Builder object itself. - */ - public Builder withCredentials(IssuerCredentials credentials) { - this.credentials = credentials; - return this; - } - - /** - * Set issuer organization details. - * - * @param organizationDetails - * The issuer organization details. - * @return the Builder object itself. - */ - public Builder withOrganizationDetails(OrganizationDetails organizationDetails) { - this.organizationDetails = organizationDetails; - return this; - } - - /** - * Set issuer attributes. - * - * @param attributes - * The issuer attributes. - * @return the Builder object itself. - */ - public Builder withAttributes(IssuerAttributes attributes) { - this.attributes = attributes; - return this; - } - - /** - * builds the {@link UpdateCertificateIssuerRequest} object. - * - * @return the {@link UpdateCertificateIssuerRequest} object. - */ - public UpdateCertificateIssuerRequest build() { - return new UpdateCertificateIssuerRequest(this); - } - } - - private UpdateCertificateIssuerRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - issuerName = builder.issuerName; - provider = builder.provider; - if (builder.organizationDetails != null) { - organizationDetails = new OrganizationDetails() - .withId(builder.organizationDetails.id()) - .withAdminDetails(new ArrayList(builder.organizationDetails.adminDetails())); - } else { - organizationDetails = null; - } - if (builder.credentials != null) { - credentials = new IssuerCredentials() - .withAccountId(builder.credentials.accountId()) - .withPassword(builder.credentials.password()); - } else { - credentials = null; - } - if (builder.attributes != null) { - attributes = new IssuerAttributes().withEnabled(builder.attributes.enabled()); - } else { - attributes = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the issuer name - */ - public String issuerName() { - return issuerName; - } - - /** - * @return the issuer provider name - */ - public String provider() { - return provider; - } - - /** - * @return the issuer credentials - */ - public IssuerCredentials credentials() { - return credentials; - } - - /** - * @return the organization details - */ - public OrganizationDetails organizationDetails() { - return organizationDetails; - } - - /** - * @return the issuer attributes - */ - public IssuerAttributes attributes() { - return attributes; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; + +import com.microsoft.azure.keyvault.models.AdministratorDetails; +import com.microsoft.azure.keyvault.models.IssuerAttributes; +import com.microsoft.azure.keyvault.models.IssuerCredentials; +import com.microsoft.azure.keyvault.models.OrganizationDetails; + +/** + * The update certificate issuer request class. + */ +public final class UpdateCertificateIssuerRequest { + private final String vaultBaseUrl; + private final String issuerName; + private final String provider; + private final IssuerCredentials credentials; + private final OrganizationDetails organizationDetails; + private final IssuerAttributes attributes; + + /** + * The {@link UpdateCertificateIssuerRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String issuerName; + + // Optional parameters + private String provider; + private IssuerCredentials credentials; + private OrganizationDetails organizationDetails; + private IssuerAttributes attributes; + + /** + * The builder for constructing {@link UpdateCertificateIssuerRequest} + * object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param issuerName + * The name of the issuer in the given vault. + */ + public Builder(String vaultBaseUrl, String issuerName) { + this.vaultBaseUrl = vaultBaseUrl; + this.issuerName = issuerName; + } + + /** + * Set issuer credentials. + * + * @param provider + * The issuer provider. + * @return the Builder object itself. + */ + public Builder withProvider(String provider) { + this.provider = provider; + return this; + } + + /** + * Set issuer credentials. + * + * @param credentials + * The issuer credentials. + * @return the Builder object itself. + */ + public Builder withCredentials(IssuerCredentials credentials) { + this.credentials = credentials; + return this; + } + + /** + * Set issuer organization details. + * + * @param organizationDetails + * The issuer organization details. + * @return the Builder object itself. + */ + public Builder withOrganizationDetails(OrganizationDetails organizationDetails) { + this.organizationDetails = organizationDetails; + return this; + } + + /** + * Set issuer attributes. + * + * @param attributes + * The issuer attributes. + * @return the Builder object itself. + */ + public Builder withAttributes(IssuerAttributes attributes) { + this.attributes = attributes; + return this; + } + + /** + * builds the {@link UpdateCertificateIssuerRequest} object. + * + * @return the {@link UpdateCertificateIssuerRequest} object. + */ + public UpdateCertificateIssuerRequest build() { + return new UpdateCertificateIssuerRequest(this); + } + } + + private UpdateCertificateIssuerRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + issuerName = builder.issuerName; + provider = builder.provider; + if (builder.organizationDetails != null) { + organizationDetails = new OrganizationDetails() + .withId(builder.organizationDetails.id()) + .withAdminDetails(new ArrayList(builder.organizationDetails.adminDetails())); + } else { + organizationDetails = null; + } + if (builder.credentials != null) { + credentials = new IssuerCredentials() + .withAccountId(builder.credentials.accountId()) + .withPassword(builder.credentials.password()); + } else { + credentials = null; + } + if (builder.attributes != null) { + attributes = new IssuerAttributes().withEnabled(builder.attributes.enabled()); + } else { + attributes = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the issuer name + */ + public String issuerName() { + return issuerName; + } + + /** + * @return the issuer provider name + */ + public String provider() { + return provider; + } + + /** + * @return the issuer credentials + */ + public IssuerCredentials credentials() { + return credentials; + } + + /** + * @return the organization details + */ + public OrganizationDetails organizationDetails() { + return organizationDetails; + } + + /** + * @return the issuer attributes + */ + public IssuerAttributes attributes() { + return attributes; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java index 24f6889..86cec5f 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java @@ -1,75 +1,75 @@ -package com.microsoft.azure.keyvault.requests; - -/** - * The update certificate operation request class. - */ -public final class UpdateCertificateOperationRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final Boolean cancellationRequested; - - /** - * The {@link UpdateCertificateOperationRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - private final Boolean cancellationRequested; - - // Optional parameters - - /** - * The builder for constructing {@link CreateCertificateRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param certificateName - * The name of the certificate in the given vault. - * @param cancellationRequested - * Indicates if cancellation was requested on the certificate operation. - */ - public Builder(String vaultBaseUrl, String certificateName, Boolean cancellationRequested) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - this.cancellationRequested = cancellationRequested; - } - - /** - * builds the {@link UpdateCertificateOperationRequest} object. - * - * @return the {@link UpdateCertificateOperationRequest} object. - */ - public UpdateCertificateOperationRequest build() { - return new UpdateCertificateOperationRequest(this); - } - } - - private UpdateCertificateOperationRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - cancellationRequested = builder.cancellationRequested; - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the certificate policy - */ - public Boolean cancellationRequested() { - return cancellationRequested; - } -} +package com.microsoft.azure.keyvault.requests; + +/** + * The update certificate operation request class. + */ +public final class UpdateCertificateOperationRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final Boolean cancellationRequested; + + /** + * The {@link UpdateCertificateOperationRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + private final Boolean cancellationRequested; + + // Optional parameters + + /** + * The builder for constructing {@link CreateCertificateRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param certificateName + * The name of the certificate in the given vault. + * @param cancellationRequested + * Indicates if cancellation was requested on the certificate operation. + */ + public Builder(String vaultBaseUrl, String certificateName, Boolean cancellationRequested) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + this.cancellationRequested = cancellationRequested; + } + + /** + * builds the {@link UpdateCertificateOperationRequest} object. + * + * @return the {@link UpdateCertificateOperationRequest} object. + */ + public UpdateCertificateOperationRequest build() { + return new UpdateCertificateOperationRequest(this); + } + } + + private UpdateCertificateOperationRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + cancellationRequested = builder.cancellationRequested; + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the certificate policy + */ + public Boolean cancellationRequested() { + return cancellationRequested; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java index eb78368..571ed26 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java @@ -1,133 +1,133 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; - -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.IssuerParameters; -import com.microsoft.azure.keyvault.models.KeyProperties; -import com.microsoft.azure.keyvault.models.LifetimeAction; -import com.microsoft.azure.keyvault.models.SecretProperties; -import com.microsoft.azure.keyvault.models.X509CertificateProperties; - -/** - * The update certificate policy request class. - */ -public final class UpdateCertificatePolicyRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final CertificatePolicy certificatePolicy; - - /** - * The {@link UpdateCertificatePolicyRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - - // Optional parameters - private CertificatePolicy policy; - - /** - * The builder for constructing {@link UpdateCertificatePolicyRequest} - * object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param certificateName - * The name of the certificate in the given vault. - */ - public Builder(String vaultBaseUrl, String certificateName) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - } - - /** - * Set the certificatePolicy value. - * - * @param certificatePolicy - * The management policy for the certificate. - * @return the Builder object itself. - */ - public Builder withPolicy(CertificatePolicy certificatePolicy) { - this.policy = certificatePolicy; - return this; - } - - /** - * builds the {@link UpdateCertificatePolicyRequest} object. - * - * @return the {@link UpdateCertificatePolicyRequest} object. - */ - public UpdateCertificatePolicyRequest build() { - return new UpdateCertificatePolicyRequest(this); - } - } - - private UpdateCertificatePolicyRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - - if (builder.policy != null) { - certificatePolicy = new CertificatePolicy(); - if (builder.policy.attributes() != null) { - certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() - .withEnabled(builder.policy.attributes().enabled()) - .withExpires(builder.policy.attributes().expires()) - .withNotBefore(builder.policy.attributes().notBefore())); - } - if (builder.policy.issuerParameters() != null) { - certificatePolicy - .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); - } - if (builder.policy.x509CertificateProperties() != null) { - certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() - .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) - .withSubjectAlternativeNames( - builder.policy.x509CertificateProperties().subjectAlternativeNames()) - .withSubject(builder.policy.x509CertificateProperties().subject()) - .withEkus(builder.policy.x509CertificateProperties().ekus()) - .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); - } - if (builder.policy.lifetimeActions() != null) { - certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); - } - if (builder.policy.keyProperties() != null) { - certificatePolicy.withKeyProperties( - new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) - .withKeySize(builder.policy.keyProperties().keySize()) - .withKeyType(builder.policy.keyProperties().keyType()) - .withReuseKey(builder.policy.keyProperties().reuseKey())); - } - if (builder.policy.secretProperties() != null) { - certificatePolicy.withSecretProperties( - new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); - } - } else { - certificatePolicy = new CertificatePolicy(); - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the certificate policy - */ - public CertificatePolicy certificatePolicy() { - return certificatePolicy; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; + +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.IssuerParameters; +import com.microsoft.azure.keyvault.models.KeyProperties; +import com.microsoft.azure.keyvault.models.LifetimeAction; +import com.microsoft.azure.keyvault.models.SecretProperties; +import com.microsoft.azure.keyvault.models.X509CertificateProperties; + +/** + * The update certificate policy request class. + */ +public final class UpdateCertificatePolicyRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final CertificatePolicy certificatePolicy; + + /** + * The {@link UpdateCertificatePolicyRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + + // Optional parameters + private CertificatePolicy policy; + + /** + * The builder for constructing {@link UpdateCertificatePolicyRequest} + * object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param certificateName + * The name of the certificate in the given vault. + */ + public Builder(String vaultBaseUrl, String certificateName) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + } + + /** + * Set the certificatePolicy value. + * + * @param certificatePolicy + * The management policy for the certificate. + * @return the Builder object itself. + */ + public Builder withPolicy(CertificatePolicy certificatePolicy) { + this.policy = certificatePolicy; + return this; + } + + /** + * builds the {@link UpdateCertificatePolicyRequest} object. + * + * @return the {@link UpdateCertificatePolicyRequest} object. + */ + public UpdateCertificatePolicyRequest build() { + return new UpdateCertificatePolicyRequest(this); + } + } + + private UpdateCertificatePolicyRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + + if (builder.policy != null) { + certificatePolicy = new CertificatePolicy(); + if (builder.policy.attributes() != null) { + certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() + .withEnabled(builder.policy.attributes().enabled()) + .withExpires(builder.policy.attributes().expires()) + .withNotBefore(builder.policy.attributes().notBefore())); + } + if (builder.policy.issuerParameters() != null) { + certificatePolicy + .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); + } + if (builder.policy.x509CertificateProperties() != null) { + certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() + .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) + .withSubjectAlternativeNames( + builder.policy.x509CertificateProperties().subjectAlternativeNames()) + .withSubject(builder.policy.x509CertificateProperties().subject()) + .withEkus(builder.policy.x509CertificateProperties().ekus()) + .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); + } + if (builder.policy.lifetimeActions() != null) { + certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); + } + if (builder.policy.keyProperties() != null) { + certificatePolicy.withKeyProperties( + new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) + .withKeySize(builder.policy.keyProperties().keySize()) + .withKeyType(builder.policy.keyProperties().keyType()) + .withReuseKey(builder.policy.keyProperties().reuseKey())); + } + if (builder.policy.secretProperties() != null) { + certificatePolicy.withSecretProperties( + new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); + } + } else { + certificatePolicy = new CertificatePolicy(); + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the certificate policy + */ + public CertificatePolicy certificatePolicy() { + return certificatePolicy; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java index 556fecd..7d86cd1 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java @@ -1,215 +1,215 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.CertificateAttributes; -import com.microsoft.azure.keyvault.models.CertificatePolicy; -import com.microsoft.azure.keyvault.models.IssuerParameters; -import com.microsoft.azure.keyvault.models.KeyProperties; -import com.microsoft.azure.keyvault.models.LifetimeAction; -import com.microsoft.azure.keyvault.models.SecretProperties; -import com.microsoft.azure.keyvault.models.X509CertificateProperties; - -/** - * The update certificate request class. - */ -public final class UpdateCertificateRequest { - private final String vaultBaseUrl; - private final String certificateName; - private final String certificateVersion; - private final CertificatePolicy certificatePolicy; - private final CertificateAttributes certificateAttributes; - private final Map tags; - - /** - * The {@link UpdateCertificateRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String certificateName; - - // Optional parameters - private String certificateVersion; - private CertificateAttributes attributes; - private Map tags; - private CertificatePolicy policy; - - /** - * The builder for constructing {@link UpdateCertificateRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param certificateName - * The name of the certificate in the given vault. - */ - public Builder(String vaultBaseUrl, String certificateName) { - this.vaultBaseUrl = vaultBaseUrl; - this.certificateName = certificateName; - } - - /** - * Set the certificate version value. - * - * @param version - * The version of the certificate. - * @return the Builder object itself. - */ - public Builder withCertificateVersion(String version) { - this.certificateVersion = version; - return this; - } - - /** - * Set the certificatePolicy value. Mandatory if sending the create - * request for the first time. - * - * @param certificatePolicy - * The management policy for the certificate. - * @return the Builder object itself. - */ - public Builder withPolicy(CertificatePolicy certificatePolicy) { - this.policy = certificatePolicy; - return this; - } - - /** - * Set the attributes value. - * - * @param attributes - * The attributes of the certificate. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (CertificateAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link UpdateCertificateRequest} object. - * - * @return the {@link UpdateCertificateRequest} object. - */ - public UpdateCertificateRequest build() { - return new UpdateCertificateRequest(this); - } - } - - private UpdateCertificateRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - certificateName = builder.certificateName; - certificateVersion = builder.certificateVersion == null ? "" : builder.certificateVersion; - - if (builder.attributes != null) { - certificateAttributes = (CertificateAttributes) new CertificateAttributes() - .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) - .withExpires(builder.attributes.expires()); - } else { - certificateAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - - if (builder.policy != null) { - certificatePolicy = new CertificatePolicy(); - if (builder.policy.attributes() != null) { - certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() - .withEnabled(builder.policy.attributes().enabled()) - .withExpires(builder.policy.attributes().expires()) - .withNotBefore(builder.policy.attributes().notBefore())); - } - if (builder.policy.issuerParameters() != null) { - certificatePolicy - .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); - } - if (builder.policy.x509CertificateProperties() != null) { - certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() - .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) - .withSubjectAlternativeNames( - builder.policy.x509CertificateProperties().subjectAlternativeNames()) - .withSubject(builder.policy.x509CertificateProperties().subject()) - .withEkus(builder.policy.x509CertificateProperties().ekus()) - .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); - } - if (builder.policy.lifetimeActions() != null) { - certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); - } - if (builder.policy.keyProperties() != null) { - certificatePolicy.withKeyProperties( - new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) - .withKeySize(builder.policy.keyProperties().keySize()) - .withKeyType(builder.policy.keyProperties().keyType()) - .withReuseKey(builder.policy.keyProperties().reuseKey())); - } - if (builder.policy.secretProperties() != null) { - certificatePolicy.withSecretProperties( - new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); - } - } else { - certificatePolicy = new CertificatePolicy(); - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the certificate name - */ - public String certificateName() { - return certificateName; - } - - /** - * @return the certificate version - */ - public String certificateVersion() { - return certificateVersion; - } - - /** - * @return the certificate policy - */ - public CertificatePolicy certificatePolicy() { - return certificatePolicy; - } - - /** - * @return the certificate attributes - */ - public CertificateAttributes certificateAttributes() { - return certificateAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.CertificateAttributes; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.IssuerParameters; +import com.microsoft.azure.keyvault.models.KeyProperties; +import com.microsoft.azure.keyvault.models.LifetimeAction; +import com.microsoft.azure.keyvault.models.SecretProperties; +import com.microsoft.azure.keyvault.models.X509CertificateProperties; + +/** + * The update certificate request class. + */ +public final class UpdateCertificateRequest { + private final String vaultBaseUrl; + private final String certificateName; + private final String certificateVersion; + private final CertificatePolicy certificatePolicy; + private final CertificateAttributes certificateAttributes; + private final Map tags; + + /** + * The {@link UpdateCertificateRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String certificateName; + + // Optional parameters + private String certificateVersion; + private CertificateAttributes attributes; + private Map tags; + private CertificatePolicy policy; + + /** + * The builder for constructing {@link UpdateCertificateRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param certificateName + * The name of the certificate in the given vault. + */ + public Builder(String vaultBaseUrl, String certificateName) { + this.vaultBaseUrl = vaultBaseUrl; + this.certificateName = certificateName; + } + + /** + * Set the certificate version value. + * + * @param version + * The version of the certificate. + * @return the Builder object itself. + */ + public Builder withCertificateVersion(String version) { + this.certificateVersion = version; + return this; + } + + /** + * Set the certificatePolicy value. Mandatory if sending the create + * request for the first time. + * + * @param certificatePolicy + * The management policy for the certificate. + * @return the Builder object itself. + */ + public Builder withPolicy(CertificatePolicy certificatePolicy) { + this.policy = certificatePolicy; + return this; + } + + /** + * Set the attributes value. + * + * @param attributes + * The attributes of the certificate. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (CertificateAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link UpdateCertificateRequest} object. + * + * @return the {@link UpdateCertificateRequest} object. + */ + public UpdateCertificateRequest build() { + return new UpdateCertificateRequest(this); + } + } + + private UpdateCertificateRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + certificateName = builder.certificateName; + certificateVersion = builder.certificateVersion == null ? "" : builder.certificateVersion; + + if (builder.attributes != null) { + certificateAttributes = (CertificateAttributes) new CertificateAttributes() + .withNotBefore(builder.attributes.notBefore()).withEnabled(builder.attributes.enabled()) + .withExpires(builder.attributes.expires()); + } else { + certificateAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + + if (builder.policy != null) { + certificatePolicy = new CertificatePolicy(); + if (builder.policy.attributes() != null) { + certificatePolicy.withAttributes((CertificateAttributes) new CertificateAttributes() + .withEnabled(builder.policy.attributes().enabled()) + .withExpires(builder.policy.attributes().expires()) + .withNotBefore(builder.policy.attributes().notBefore())); + } + if (builder.policy.issuerParameters() != null) { + certificatePolicy + .withIssuerParameters(new IssuerParameters().withName(builder.policy.issuerParameters().name())); + } + if (builder.policy.x509CertificateProperties() != null) { + certificatePolicy.withX509CertificateProperties(new X509CertificateProperties() + .withValidityInMonths(builder.policy.x509CertificateProperties().validityInMonths()) + .withSubjectAlternativeNames( + builder.policy.x509CertificateProperties().subjectAlternativeNames()) + .withSubject(builder.policy.x509CertificateProperties().subject()) + .withEkus(builder.policy.x509CertificateProperties().ekus()) + .withKeyUsage(builder.policy.x509CertificateProperties().keyUsage())); + } + if (builder.policy.lifetimeActions() != null) { + certificatePolicy.withLifetimeActions(new ArrayList(builder.policy.lifetimeActions())); + } + if (builder.policy.keyProperties() != null) { + certificatePolicy.withKeyProperties( + new KeyProperties().withExportable(builder.policy.keyProperties().exportable()) + .withKeySize(builder.policy.keyProperties().keySize()) + .withKeyType(builder.policy.keyProperties().keyType()) + .withReuseKey(builder.policy.keyProperties().reuseKey())); + } + if (builder.policy.secretProperties() != null) { + certificatePolicy.withSecretProperties( + new SecretProperties().withContentType(builder.policy.secretProperties().contentType())); + } + } else { + certificatePolicy = new CertificatePolicy(); + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the certificate name + */ + public String certificateName() { + return certificateName; + } + + /** + * @return the certificate version + */ + public String certificateVersion() { + return certificateVersion; + } + + /** + * @return the certificate policy + */ + public CertificatePolicy certificatePolicy() { + return certificatePolicy; + } + + /** + * @return the certificate attributes + */ + public CertificateAttributes certificateAttributes() { + return certificateAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java index 6d62c41..ab7dec4 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java @@ -1,193 +1,193 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; - -import com.microsoft.azure.keyvault.KeyIdentifier; -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.KeyAttributes; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; - -/** - * The key update request class. - */ -public final class UpdateKeyRequest { - - private final String vaultBaseUrl; - private final String keyName; - private final String keyVersion; - private final List keyOperations; - private final KeyAttributes keyAttributes; - private final Map tags; - - /** - * The {@link UpdateKeyRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String keyName; - - // Optional parameters - private String keyVersion; - private List keyOperations; - private KeyAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link UpdateKeyRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param keyName - * The name of the key in the given vault. - */ - public Builder(String vaultBaseUrl, String keyName) { - this.vaultBaseUrl = vaultBaseUrl; - this.keyName = keyName; - } - - /** - * The builder for constructing {@link UpdateKeyRequest} object. - * - * @param keyIdentifier - * The key identifier, e.g. - * https://{vault-name}.vault.azure.net/keys/{key-name}/{key- - * version}. - */ - public Builder(String keyIdentifier) { - KeyIdentifier id = new KeyIdentifier(keyIdentifier); - this.vaultBaseUrl = id.vault(); - this.keyName = id.name(); - this.keyVersion = id.version(); - } - - /** - * Set the key version value. - * - * @param keyVersion - * the key version. - * @return the Builder object itself. - */ - public Builder withVersion(String keyVersion) { - this.keyVersion = keyVersion; - return this; - } - - /** - * Set the key operations value. - * - * @param keyOperations - * the key operation list - * @return the Builder object itself. - */ - public Builder withKeyOperations(List keyOperations) { - this.keyOperations = keyOperations; - return this; - } - - /** - * Set the key attributes value. - * - * @param attributes - * the key management attributes value to set - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (KeyAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link UpdateKeyRequest} object. - * - * @return the {@link UpdateKeyRequest} object. - */ - public UpdateKeyRequest build() { - return new UpdateKeyRequest(this); - } - } - - private UpdateKeyRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - keyName = builder.keyName; - keyVersion = builder.keyVersion == null ? "" : builder.keyVersion; - - if (builder.keyOperations != null) { - keyOperations = new ArrayList(builder.keyOperations); - } else { - keyOperations = null; - } - - if (builder.attributes != null) { - keyAttributes = (KeyAttributes) new KeyAttributes().withEnabled(builder.attributes.enabled()) - .withExpires(builder.attributes.expires()).withNotBefore(builder.attributes.notBefore()); - } else { - keyAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vault base url - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the key name - */ - public String keyName() { - return keyName; - } - - /** - * @return the key version - */ - public String keyVersion() { - return keyVersion; - } - - /** - * @return the key operations - */ - public List keyOperations() { - return keyOperations; - } - - /** - * @return the key attributes - */ - public KeyAttributes keyAttributes() { - return keyAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +import com.microsoft.azure.keyvault.KeyIdentifier; +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; + +/** + * The key update request class. + */ +public final class UpdateKeyRequest { + + private final String vaultBaseUrl; + private final String keyName; + private final String keyVersion; + private final List keyOperations; + private final KeyAttributes keyAttributes; + private final Map tags; + + /** + * The {@link UpdateKeyRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String keyName; + + // Optional parameters + private String keyVersion; + private List keyOperations; + private KeyAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link UpdateKeyRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param keyName + * The name of the key in the given vault. + */ + public Builder(String vaultBaseUrl, String keyName) { + this.vaultBaseUrl = vaultBaseUrl; + this.keyName = keyName; + } + + /** + * The builder for constructing {@link UpdateKeyRequest} object. + * + * @param keyIdentifier + * The key identifier, e.g. + * https://{vault-name}.vault.azure.net/keys/{key-name}/{key- + * version}. + */ + public Builder(String keyIdentifier) { + KeyIdentifier id = new KeyIdentifier(keyIdentifier); + this.vaultBaseUrl = id.vault(); + this.keyName = id.name(); + this.keyVersion = id.version(); + } + + /** + * Set the key version value. + * + * @param keyVersion + * the key version. + * @return the Builder object itself. + */ + public Builder withVersion(String keyVersion) { + this.keyVersion = keyVersion; + return this; + } + + /** + * Set the key operations value. + * + * @param keyOperations + * the key operation list + * @return the Builder object itself. + */ + public Builder withKeyOperations(List keyOperations) { + this.keyOperations = keyOperations; + return this; + } + + /** + * Set the key attributes value. + * + * @param attributes + * the key management attributes value to set + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (KeyAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link UpdateKeyRequest} object. + * + * @return the {@link UpdateKeyRequest} object. + */ + public UpdateKeyRequest build() { + return new UpdateKeyRequest(this); + } + } + + private UpdateKeyRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + keyName = builder.keyName; + keyVersion = builder.keyVersion == null ? "" : builder.keyVersion; + + if (builder.keyOperations != null) { + keyOperations = new ArrayList(builder.keyOperations); + } else { + keyOperations = null; + } + + if (builder.attributes != null) { + keyAttributes = (KeyAttributes) new KeyAttributes().withEnabled(builder.attributes.enabled()) + .withExpires(builder.attributes.expires()).withNotBefore(builder.attributes.notBefore()); + } else { + keyAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vault base url + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the key name + */ + public String keyName() { + return keyName; + } + + /** + * @return the key version + */ + public String keyVersion() { + return keyVersion; + } + + /** + * @return the key operations + */ + public List keyOperations() { + return keyOperations; + } + + /** + * @return the key attributes + */ + public KeyAttributes keyAttributes() { + return keyAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java index e56f9f7..f59c101 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java @@ -1,182 +1,182 @@ -package com.microsoft.azure.keyvault.requests; - -import java.util.Collections; -import java.util.Map; - -import com.microsoft.azure.keyvault.SecretIdentifier; -import com.microsoft.azure.keyvault.models.Attributes; -import com.microsoft.azure.keyvault.models.SecretAttributes; - -/** - * The update secret request class. - */ -public final class UpdateSecretRequest { - private final String vaultBaseUrl; - private final String secretName; - private final String secretVersion; - private final String contentType; - private final SecretAttributes secretAttributes; - private final Map tags; - - /** - * The {@link UpdateSecretRequest} builder. - */ - public static class Builder { - - // Required parameters - private final String vaultBaseUrl; - private final String secretName; - - // Optional parameters - private String secretVersion; - private String contentType; - private SecretAttributes attributes; - private Map tags; - - /** - * The builder for constructing {@link UpdateSecretRequest} object. - * - * @param vaultBaseUrl - * The vault name, e.g. https://myvault.vault.azure.net. - * @param secretName - * The name of the secret in the given vault. - */ - public Builder(String vaultBaseUrl, String secretName) { - this.vaultBaseUrl = vaultBaseUrl; - this.secretName = secretName; - } - - /** - * The builder for constructing {@link UpdateSecretRequest} object. - * - * @param secretId - * The secret identifier, e.g. - * https://{vault-name}.vault.azure.net/secrets/{secret-name} - * /{ secret-version}. - */ - public Builder(String secretId) { - SecretIdentifier id = new SecretIdentifier(secretId); - this.vaultBaseUrl = id.vault(); - this.secretName = id.name(); - this.secretVersion = id.version(); - } - - /** - * Sets the secret version. - * @param version the secret version. - * @return the Builder object itself. - */ - public Builder withVersion(String version) { - this.secretVersion = version; - return this; - } - - /** - * Set the content type value. - * - * @param contentType - * Type of the secret value such as a password. - * @return the Builder object itself. - */ - public Builder withContentType(String contentType) { - this.contentType = contentType; - return this; - } - - /** - * Set the attributes value. - * - * @param attributes - * The secret management attributes. - * @return the Builder object itself. - */ - public Builder withAttributes(Attributes attributes) { - this.attributes = (SecretAttributes) attributes; - return this; - } - - /** - * Set the tags value. - * - * @param tags - * Application-specific metadata in the form of key-value - * pairs. - * @return the Builder object itself. - */ - public Builder withTags(Map tags) { - this.tags = tags; - return this; - } - - /** - * builds the {@link UpdateSecretRequest} object. - * - * @return the {@link UpdateSecretRequest} object. - */ - public UpdateSecretRequest build() { - return new UpdateSecretRequest(this); - } - } - - private UpdateSecretRequest(Builder builder) { - vaultBaseUrl = builder.vaultBaseUrl; - secretName = builder.secretName; - secretVersion = builder.secretVersion == null ? "" : builder.secretVersion; - contentType = builder.contentType; - - if (builder.attributes != null) { - secretAttributes = (SecretAttributes) new SecretAttributes().withNotBefore(builder.attributes.notBefore()) - .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); - } else { - secretAttributes = null; - } - - if (builder.tags != null) { - tags = Collections.unmodifiableMap(builder.tags); - } else { - tags = null; - } - } - - /** - * @return the vaultBaseUrl - */ - public String vaultBaseUrl() { - return vaultBaseUrl; - } - - /** - * @return the secretName - */ - public String secretName() { - return secretName; - } - - /** - * @return the secretVersion - */ - public String secretVersion() { - return secretVersion; - } - - /** - * @return the contentType - */ - public String contentType() { - return contentType; - } - - /** - * @return the secretAttributes - */ - public SecretAttributes secretAttributes() { - return secretAttributes; - } - - /** - * @return the tags - */ - public Map tags() { - return tags; - } -} +package com.microsoft.azure.keyvault.requests; + +import java.util.Collections; +import java.util.Map; + +import com.microsoft.azure.keyvault.SecretIdentifier; +import com.microsoft.azure.keyvault.models.Attributes; +import com.microsoft.azure.keyvault.models.SecretAttributes; + +/** + * The update secret request class. + */ +public final class UpdateSecretRequest { + private final String vaultBaseUrl; + private final String secretName; + private final String secretVersion; + private final String contentType; + private final SecretAttributes secretAttributes; + private final Map tags; + + /** + * The {@link UpdateSecretRequest} builder. + */ + public static class Builder { + + // Required parameters + private final String vaultBaseUrl; + private final String secretName; + + // Optional parameters + private String secretVersion; + private String contentType; + private SecretAttributes attributes; + private Map tags; + + /** + * The builder for constructing {@link UpdateSecretRequest} object. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net. + * @param secretName + * The name of the secret in the given vault. + */ + public Builder(String vaultBaseUrl, String secretName) { + this.vaultBaseUrl = vaultBaseUrl; + this.secretName = secretName; + } + + /** + * The builder for constructing {@link UpdateSecretRequest} object. + * + * @param secretId + * The secret identifier, e.g. + * https://{vault-name}.vault.azure.net/secrets/{secret-name} + * /{ secret-version}. + */ + public Builder(String secretId) { + SecretIdentifier id = new SecretIdentifier(secretId); + this.vaultBaseUrl = id.vault(); + this.secretName = id.name(); + this.secretVersion = id.version(); + } + + /** + * Sets the secret version. + * @param version the secret version. + * @return the Builder object itself. + */ + public Builder withVersion(String version) { + this.secretVersion = version; + return this; + } + + /** + * Set the content type value. + * + * @param contentType + * Type of the secret value such as a password. + * @return the Builder object itself. + */ + public Builder withContentType(String contentType) { + this.contentType = contentType; + return this; + } + + /** + * Set the attributes value. + * + * @param attributes + * The secret management attributes. + * @return the Builder object itself. + */ + public Builder withAttributes(Attributes attributes) { + this.attributes = (SecretAttributes) attributes; + return this; + } + + /** + * Set the tags value. + * + * @param tags + * Application-specific metadata in the form of key-value + * pairs. + * @return the Builder object itself. + */ + public Builder withTags(Map tags) { + this.tags = tags; + return this; + } + + /** + * builds the {@link UpdateSecretRequest} object. + * + * @return the {@link UpdateSecretRequest} object. + */ + public UpdateSecretRequest build() { + return new UpdateSecretRequest(this); + } + } + + private UpdateSecretRequest(Builder builder) { + vaultBaseUrl = builder.vaultBaseUrl; + secretName = builder.secretName; + secretVersion = builder.secretVersion == null ? "" : builder.secretVersion; + contentType = builder.contentType; + + if (builder.attributes != null) { + secretAttributes = (SecretAttributes) new SecretAttributes().withNotBefore(builder.attributes.notBefore()) + .withEnabled(builder.attributes.enabled()).withExpires(builder.attributes.expires()); + } else { + secretAttributes = null; + } + + if (builder.tags != null) { + tags = Collections.unmodifiableMap(builder.tags); + } else { + tags = null; + } + } + + /** + * @return the vaultBaseUrl + */ + public String vaultBaseUrl() { + return vaultBaseUrl; + } + + /** + * @return the secretName + */ + public String secretName() { + return secretName; + } + + /** + * @return the secretVersion + */ + public String secretVersion() { + return secretVersion; + } + + /** + * @return the contentType + */ + public String contentType() { + return contentType; + } + + /** + * @return the secretAttributes + */ + public SecretAttributes secretAttributes() { + return secretAttributes; + } + + /** + * @return the tags + */ + public Map tags() { + return tags; + } +} diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/package-info.java index bc20391..a2056d0 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/package-info.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/package-info.java @@ -1,10 +1,10 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. See License.txt in the project root for -// license information. -// - -/** - * This package contains the classes for KeyVaultClient. Performs cryptographic - * key operations and vault operations against the Key Vault service. - */ -package com.microsoft.azure.keyvault.requests; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for +// license information. +// + +/** + * This package contains the classes for KeyVaultClient. Performs cryptographic + * key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.requests; diff --git a/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/crudNames.json b/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/crudNames.json index 7185ad7..2f3ee53 100644 --- a/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/crudNames.json +++ b/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/crudNames.json @@ -1 +1 @@ -{"roleDefUUID":"61927a2e-1dd1-4ae2-8ad1-e53fdf3ae32d","storageAccountName":"sa7333192560","vaultName":"vaultf9c58684e"} \ No newline at end of file +{"roleDefUUID":"4a9d964f-b76c-4e33-9d89-bf6f3a3d220b","storageAccountName":"sa22c29322de","vaultName":"vault815130495"} \ No newline at end of file diff --git a/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/sasNames.json b/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/sasNames.json index 0dba2ab..619b409 100644 --- a/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/sasNames.json +++ b/azure-keyvault/src/test/java/com/microsoft/azure/keyvault/test/sasNames.json @@ -1 +1 @@ -{"roleDefUUID":"0c337b82-553c-4aaf-aa62-eab5dc446bb3","storageAccountName":"sa2c77808410","vaultName":"vault669612016"} \ No newline at end of file +{"roleDefUUID":"8a6fc5ba-7601-4071-954a-adbce7cae7ae","storageAccountName":"sabc0663752a","vaultName":"vaultff052787b"} \ No newline at end of file diff --git a/azure-keyvault/target/test-classes/session-records/backupRestoreForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/backupRestoreForKeyOperationsTest.json index f6720f5..2c549c9 100644 --- a/azure-keyvault/target/test-classes/session-records/backupRestoreForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/backupRestoreForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:16 GMT", + "date" : "Mon, 25 Jun 2018 19:43:34 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c22194e3-3eb0-4bad-b107-88ed7e4106c1", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "57e60b39-02e2-46c7-aadf-f3a3459300ef", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:16 GMT", + "date" : "Mon, 25 Jun 2018 19:43:35 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "851eb1f5-5072-4a31-818c-bbffa984cdb3", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/cfafbccc14bc46f2814d75f6944ce8b0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"3gSbCxEf9tZg-WBzbwWPZ5kGPbO1QxARdEaJWmfh4BImRY9mm6gTX2R6xN8V1ILIsrb7fSRjSSWQURlrD9MrLddAMicgCQEIKcaFxToGJkLC2BChTYaZQlcWWy2fBp7DMVdFHJ074PcVozgxjcyTRLUJLzdIE2nvDsW4JVaP3fHUkGhJb3CEsNjDVlArpeKhNqhB4Z14_BJs4qOBiu-yZehjcKYMUxv_2uPgfbAtsc9k6Dst8KykYF4YCHOU8Swgjd8y7VZsGDZXyp4wuOj_EsD2LDuFc07Gf5EBtXYaTOS2QhL6XTRrqg7nBQAe06VLQ8cmKTrzzYNhe1pH48U7TQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539336,\"updated\":1520539336,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7feec002-d95b-43ba-ba07-d7e44fbd4ba2", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/455c7272682d4de689881f179e63e20b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"qku3i9yaW1__0KD9WU8RYfR8BNea95TPuoEYwMQwp6iiPjS7UeVJIkbRskI_9A9S54xK-t8eZbCNGnTgEF4fFWu6s1CSxnAx3iOvxwpoB5nxgMWuMIHsjUfDbGGqHLrf7wH_nFpXyt_W5PqR095ujz4967fOoVwY04SXa3tTxGAxRve4sABMi5sZ2lT1sSaf-ItwEjs9ntCL5eV4PYAF4xzqUgWxZc0pjUegCqnfNDnmTGM88t7TH72EqjCoB2tkcSoETer107aGteEmzGOEERFVFVvzyrSRsoiBmvCjsYkyv4gnicnE1-tZeW6-7GU5cxMm_f-RMGJwdsgH6yZVxQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955815,\"updated\":1529955815,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/backup?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/backup?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:17 GMT", - "content-length" : "19168", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:43:36 GMT", + "content-length" : "22526", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "85e5aa1e-bbfe-41ab-bd0a-f3e71955fc8b", - "Body" : "{\"value\":\"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLlpoVGJnbGNIdFE5LTFuay1EQkdheDFQMXNvUWVkWlhiZjVOZzM2ZGNCbUVLaXgyZ3hlOU9jWXAtUE9GR3V2NWhwcmdfdWtydXVlekRnY2Q4bWRDMDFPSi1PTDc2ZU1wUUtzZ1I2YmpYbWwtVGZfdnBFZDNwSGtWX2Z1eUZvUXNKYUVVSllESzFESDhPc2lua2ZWajZHdVdxcGc0TEpJd0Jla0VhOWZpdk1kWmRTQUlfNTFRY2tidWc0VE0wdmhtS3FWUGQ4UHhhU1daemhtM1Q3REhwMV96M1lOcWhRTUZsYWRGVFgwcU5NWnF3aF9OLWpfMDVXLXNfZ2JsUUgxRm1Fd0txOGRBNHVHV2M1cGFtd3lLcjdPMUtPbWhWY2tyckpBRjFveGRkUzRXMFA3cUdvSVFNU1kxdEJacUpCMWZTMS1SVVN0MDRDV0dDTDd2cXJaQXgzQS5NZDhkakZVelJXNGJrQ0loSGNOQWRnLmlzMWtPMmExWE12ZW4zbVUtdWRVaHY3Mm5Hdmtaa1NTa3RDa3g3UzJId2tqZ0h4bkZCR1U4RUZzYkVVaFExR0FZNTExdUhEWHB5NkYtRUFoSjdaWUQtZUZUdkdlbVNUVHJvRWJHc1VFSTZKcTZsRmt0UVJKWjNRV3BsNTRkY0RtNEhtaDhvcERVNlpGem5WblVmVmNIUnhEZWFDZHI1SVQ3Y3RtNi1nQ0k1MzNZYTVKVzRRM0MxMUhBdDdGeE5RcDdza1N2UWZNQ3ZHWlNyLXdibVI1Y2ZSQW5VUUUyd3Q5RlRORndjcjVvRXl6VFhJWGpuWGdhb2xpN2tWQndZUzl2S0NhUnUzY29xaC01SXVBTnhnNGh3bDNEbTlpQVlCMTI5VUdmdmFKbnBheW10eWZDWVFWRnhkUkJUR2R6Z3ZES0tsUnlwcXJWZS1OSlVOcjVHUlQ1WHhWS1RCQ191NnZsa1pYeFQ3YzV4RGlyX0ZhNFB2THYxRFRrNy04c2lwRTBJUWt1ZzVPY0d3Y05UenFDSjR2T0dtOU90OTZVbV9oSnBkUGJ5QUlsbXNudkFLZjZOUjVCSGJhYjhqN1FCYmhNVGFWNmMxNy1Ud3RFM2ttTUJ2blR6QkFaaExUb2tQWjVmWWVOTENWSXdEV1VfR0NTRUZnd2g5bVo4Y1pZZFcxMURoeG9adnB5X0V3eHlqUmVqYTA0bllCRDNTV0VaRUd4SzZMSWZFUm5VUjVkeU9DNjR5WDZHQ1dRYnVNcm5kYW1EekhZQlB5RUNzRGFEY2pmaUVDVkc5NEdFNkRJb2tDdHlSWGhZcEdDX050MC1qOC01UEV0T3c3RFJ5aGpwYXJRUXUzdEc5NEFjQWNGSFZiOVdzVHFYVTdZclVZWldpMTR2ZC1Mc0xkaktHZDRvS2w2dDVRT0pXWHFzeEpRMjhMb1hGTUtOOXQtVElGUW1uOE5KdEJudkFZWTJNTkxxZ1F6Y3VZNF9VM0MzZnRtWDljeFZkbVozRDQ4YWhSdVJOQWQ4OTBBQXAtZmRZZDVUd2ZyMmhjbTYxc2tUME02RDZKQVZFOGRlUzNUY0MxelROYkZzUFFoTkozcEVjSXZxNGFGS3Q4clJuZVlBTWhYajRsYl84a1BaWFhKcktpNXAxV1VPeE9iTXdIbTFZT3dOd1daNlFZZGRLY01YSGw0dWtZb2ppWHJMNkU4VElsV0liMndtUHM5SGUyWWRKQmhBRTJBZGVYTGhCV09GcEt5M2VIR3VsT3p5VF9WVWhqRmFTX2Zyc2M0dFQ3RnBILXRXRy1UNHFYaDhSdEwzUW5KcXpYR0FYRE9WZFJnSnVHN0RPM1l2TEpRVEVQenE2SHdLNm9uWThVNmZSRkNLU1plbHBFRERJS0U3YnpqZVZXalhWeTh4cmtYTl9aa2RtV1k2SjJfSGtfc1QxQ1hrMC1EeWZPQXdkMG95T09XakNOcS1FSVpfVF92MFdVQmdFVjZWVC1tNzR6UldVTUs0OHRZVENQZW5CeFhxNFpNd2ZobS1Kd1B2RWRvNGtpUURkd21FemkzZFF6QmFHeHhnOFROY0o1RV9yRTY1dTFkcmQycjVjcmprSFhTNjM3UFFqcGp0UGtud0tjaFdUekhJZkloYkVNcUh1X1dGN2dFYzJpX1hCZF9wUnZTTlJHSVpqM1RQdk1BU3JrRzBqVzZqczJGZnFrTXNBZW4zTVpjYW5tRWhzZnUxcVhrQUI4ZXRQRDBxTG0tTFJPbmNVYzc4dGdrdFZ1QVljWkc5N0V1WEt5QmxXd2psWlM2TURoUHFZbEpBZDdIczJ1T0RzTU9fZkFaSmNJcUd3QXpVN0xRNFBzYjViSnBCVDFOVkxIbVRMVWpDQjZ4dTJFck45eldtZTRXcHpsUXphQWFRcDR5djd3LTNrdTdaNHFPWW52NThybTg5VF9qWjVxTll5QllGRm5HTm9QV0o1N25Ya3MzNHhFSzZEdHBNa1dPTGZ0ckVxdmFrNjNqRmtRYkEzUnZzSW9UVGo0Q09mTVdOVWdlTHNZMFUtUzZSR1kySlFYcV9KbURueUc3c0tzWjI3TjRjclpWeVg1Mlk1MGlVdEZMWWNmcEg4TnVydXFqZVRNaVI4RzAxU0JHc0ZlVjcyZmRnVndPWnFHMUVpNEZGdzd1Yi15WU56SDN5SzFfX1A5U1dfUkxfd2JWYzJTLXBOcENWQ2RDS3pSUWNjc0o0VnZqNXo3MUx2TmdLZTZubjNGZ2tRVFU1SnB0dTV0UFVTOE9HLVBQQkxBSU9oUUNIVG5OU29rZWxzNFNRbGdoZVZZYjlNeDh1eW9EVTFJUW5BamVOZGhRSzZkRWYzX0pMRFlTTlItZVlWRDBJWUVYdl9pWU53b2FyTmpxaXowUDF0ZWNranFXNU5PeHdrTkhPdUFXVnVaOHluR0QzcElldEo3N0owb2JBMERKWkYtbzQtOHNxR1dNS1JWcmlzb1BxRUVrdDBXYmEwaW9nZTJNWXZ2WTJLRjgtYi1xdlZpWUVQVXdpMWZRcVJkMnNSRzBzYURtMWpKaFVmUGRkYVFSZTEzY2JEX2JuTzhCcmlqZTZ6UDcyZmpyWngycURWVTJLN0RCcXp3TXFwS2w3TFhQay1EZElTMWpwZkFYQkhPc0pFQ1FoUEVWMzNWemxvT0k5X0JyNms1UnRhaUZGRTZEZjAyM2wycVpHWFdJNXg1ZkFST3h6cWp0QTNVQ0pLdmY0enJObHdza1JQLWVVd1UzMTJCOXBUakxUWUd2VGRwWXRxR2oteU43Sm1DOGpaN09ieFJpcm1YcldhU0NjNk45OHYydGpjN2hzR21kM2RXMGVCc3lERl95dDk3aWE0VWoxNEV6TWhWQXdfRlBMd2UyTDRuMm84RkVPNzJzYVJvc05MSWpMSGFkNU9ncURJN1lJV1pWcUxUWWJIbEZIYldoLXFseGF2eHI0LXJoUkZBZ0hOQXN3ZFZCYTNfRmVweHRPNlFQSzF1NmxOTFRaYlI3SGlfUUo4T25FY2JYOTRCZEwwUkRFU1BZWVlYSGtxd2RQR09WVy00N3Z0czVyaXVZMXVCVHg0OHZtTDlNTmdKMjREUlNVVGxWR2htaUVqVkdoZU9SY0V5WHJqWUNabV91RGpPc2dINkFiUjBIQTdUVmhwanUxcUY3QUxmTHI1N1VBa0o1SlZ6THNoT2FLWGMwYkpHZ2c0MERBUGVJb05UbmhFT0FVbWpTZmxiWUZyZXpLckk0d0xWSmZrTzh0QV8xR3FaOTJwa0JNMV9ZekkwdHN3V0xSSnMxcHV4blduZ0Jud2NCd0JwblFWUlVQbGRBbGJGWTByanFJb1ZGdzNnWHlTcVpIMk5UeV9Fd3l6eWdPaWUzeTRtZ3JjeVJrbXVlWFJtaF94YVRYdkNKd1ZaYXhtSEhEY2d4U3J0cTFhOXQ3SzllaVB6TzR4U25GNDdnb0tHSW1LUnF0RTYzWFpoQnlTVmRkOG44aHBmbHNtc1pyWVJSRkNoTm1lcFduUVdTTUk4Z1FGRGdCY1N6ZWs2Q3FIZC1hZFlac2F1cmtlRXNWTHRHYjFRVkJJRmYtVVZma09PTWN3Rnp5UTE2RGFXS0JzMmtPS09MbDUwNUhXY3ZnN1NZaXlZbkFRell5dnM5V3FtdWJBbXlSNWtQcjFZYlNxaWp1UnduMjZ5VF92c01BZ3ZnclJiYWRRT19FMmxsT3JhcmNGZlNPNmZ1WVVrWXhyQ0tNcE5UMGRabmVpSkJCaUJfNGJveEFxeUhodklwRUZfcmlEaDFzSjhXU2NzQzBDbmt4VzNYY2ZfaDZNV3gtODhjem8wdzRVMW9hX1NHWUVWTUtRQWtyQU5rTzhvdU1QNFN4WDVRV3pEOW5VRU9KOHhjQzZFUGFEalRRanVTeklERnhOSlBpWnNId0gtTmkzakhZcGJoZHJDQktXdk11cFN1emhLaDR6aTRQTFVtZk9WV2dobGRxb3B3R1dZSVpnSjgxWVJpNWtCTHFUV1kybi1vV2dDdjlEUzRiMWwxb1NnMlp0WkF2Z1JIS0xUMy1wbUxIYW9sSWpaS0VycFdSTVc4ckxoRmpMNGhjSllsaHZQSzNtVXhacjZQMnFXRkdZajctcERockMyTThrcjNiR2N1UTIzMEVmMVpWQTZ3UC04Y1VvTkdaZkpSZGg4ajMzV0JFM3lFRFlpWmZLNWZfVGlMclY3SEhsV1pzRFJ2UzNBdE1YanAyZzkxVDJrbWlwaUxFTkhybHlyU1hudXFNNjZ1S1VYTXBZZkhIYlJ3ZFN0TUtHcWFqMVhQMXlNWktsUlc4endYZVpTUnBVZm1icGZhQXUta21ueEItSmQ3Y05Mc1pBSE9KNUFxQzhiWU9rN3k3TWsxQktEUGZJTU9oMi1UbDRHMTcxTnlLSG4tRXlUYjR5blBPQ2xoR0FTQWx6SHpGYjhNV1M3cTFqU2t4cVZLZ1pFY25XV0hESXNyazRmQ2ZlU1JHYjN4MncydTBkeHZWSGhXdzZtMHJZaHdNSWU4S1hDZFg3aVltSmZ1WGhfMHVHS0FlbjZFR1V2U2hIMTd2aEQyNXcxYVNQNDloaHBYMFRzQ25uSmZjcS1MZ1BkZlEteE9JLTN5YXpVUDBoWjdkSnhIRkw2MFFMWXgxY2ZGLW9xU1RNalF5X3RPQWNIM3BwUl9FUjF3bEg5OFpfbjhBdjdhX0E3SHY2SFFJTXlDQnU0ckVONTNZS0k2SlFyYnJqNmxlaEtGVFFhT20tNmdnMDBiR1FVUXpKYzNkRnRKQWR3MlY3Vms5MGxDX1VjVFpBMldGa20xOFNLS3BCOHRacmRkdF9qLWFMVHdfWHRubWNpZU5QMmxHaVpzRWNJR2JrY3Z5TE1LTk94WkpweTdabTRhbFJhR19yT1JOS1NLLTZDckJROVdsa3N0NS1DQXRSRkpDSU9ZbGVsZXhnSlRDLWZVN0xPU2gtdWd4ZVVDRDM3cTR3enFoY3NUWms2X3F3aTh2UUw3SVJZVVExZ0RBR09zejFQMTNWUjRONEJuQ1dBdEM5eTFfSGVQY0hxYWEtMFM0R0Nxd0lkTC1ISkMyal9XWnRyNE10T3NYTHhuTVNiOU9LMXNCOWljcmRMMEVnSVF4N1I3d3c2UGxWdkJBeEpjUjd0TVYyQmsyX2ZONERfUmJGdm9pQnByYUZCYVJZcHcxUEFRU1JGbmVwWm9sbWN5MFIydmJPcV83bENYREQ3WFpRZG8wa0Y2Z2FrODd1UFJpTnM3RDkxOEF4cmdiTXRfQXlEQXNIRlRyb0hGRVY1UGJaRkhEZy1TOHpid0Z2blhfQmRhSkE4SUNsdlNOOEktVlZTbnlWSnV6eHc0TDhQbGFoOVBCcFQzMklHNXNQY09uOC1jcm1oWnBkS2M3OHAyYzRlOEwxcTBsNXNZdkFKRHB2S0ZpMjFRMDNSZ0MwaGhiRWQzWGRsU2lIam41d2RMYjJ1bmdGbmVpTkVBd09ReVloYUZRQzhOM25BNnJlNXB5Zlc2eFdLekNkZmw0dTZDSUZNM3NzQzA4andZUFBXclNvU24wZmRMZE1oM01ZUWpCSTBJeXB0emZjTHhWQkIwR3dfUFh4NzBLUEpZY0Z0QWdnLXhNRXJpNllCU2Q3S1FNSlpEVG9Eb1pObXhHaFFYSzZCUVpIcUZvN2NBSlo5X192QVdWcW1LOWdxQ0FUcGxzT2tHRHA0SllyT0NKcWZtN3hMdHBhT3B6UGpjVnBYUGUzZ3N1Mjl0N254RDd3allKbGNwcWRxOUh1VERSX0UyT2gySlIwYkV5QWM4b1dwV2tUUU9BbVJMU3Y1UGdxbXB6R1RsVEJRdTVQdEs3VFJLazFKejJ6b05sT0NQeUg4VldkWjhtWTRHZlR4amlUd1JpTUhjTzNCWmJKWGxkVjdSWjY1TnR0b0NjVGY3VDV2QVZXSzk2bW9IRTZEZHVNbnc3bl9zNEhZMmdiV3VYU1UtZXRBS2JNLUs1M2ItZTdmOElzNk5RdTE2elBacGZGRTZpUEhDbkZHWHFtMVhTWm90STMzalU5cGxHT2l4YXg0bEhvTnhBQlNrdXg2ZkR3NGNPallCMl9LdjhfTEU0X08xaGhHbTlud0xBVC11SDlqZXNneWI1MUk3R2xwMi12NjZQUHU3dXlwNVh3Mk9LUE1HaEVoZ2J3Q0VlTVNRQnBvZzNjYVFhcENzcE5ZOXo5VjNuemdfMUk2Z1h3Tnp2R3oycGtfT0syZ3dvMHdETl9PLVdVd19nVDJVT2J3WHFjeFhDYk5OUE5LMW9uNURWOXV3SDlQblJOS3FkSDRiblJoTC01TVFJMTczSmhnTjVjQlh1MVJpVkhwdWpPNlV4Zl83TUhoZms2TFlfUDdOeFV1NDJWeGF3T0RwWllPUDk5Y210M1VYWDBJSDdRejdwV0VmZFNCdGZmWWhiSUJ1Y0J2eDNrZVdqQ3JFc1hWcWpaN3o5c2U1ZnQ4REVQWTEyTEhrbXhPdHdqRVMwejhRNHpJUTRSNWNYRldha1JlSzVZSUZsVVI0S200NjA0VV9oWXQ0V0k2QXJEcVZmQS10SGZHMW13bVVzd2lzMXZGeVRzNmhjT2lpUmFCWVhqUjgtM18wVVlub3EwNTkxbC1nSU9ROV9FbVlmRWZ1MW8xQXVrT1Q4U2lQYzVmbS1VUDk0cXR0bTJtcUFxVlFXT1dtVEctaFVyTFBUNEhabFFYdlBueG9IaVdLRFQ5UXhZVHhYTXdxV08yaUlJOXpuakl0ZEFXOXJ1OTFSajc0SkJjZlk5ZUMtVlZKUXBFNmIyVkttNDRGUWVpMmxfWmo1aFpURHJPbDhYNkY4a3ZycGRQTzBBd19nS1poWVBUajJPc09GZFpKRnZ5aV9RUnJ4Q19vamtJWVQ0TjF2OTdNQlBIYkIzX25SVXZ0dXFJRWFQNHVZSEFhZERfWnR2ZmU5dXlxcG9XVU44XzlMdDVXSWd0eTQyR2h3cHZ0dVR1TGZ2TnRzN2FCc0tvNHVlQ1RScGwtN3VOWnBXMGdtYW9JT1A3UHlYRnNNNmIzdTV3RTFxbl92TGVQVC1RbWIyTWlTQ2J4M1RmZ3Q5SE1lX1Mxd3I4T0xMbWJ2Z1RHcUphM0xoWFVfVE5OZUVpWmNaUEhFY1FaTmRSSGJmemxRX2o3ZnRwUjZMenNNaVJYS09HeDlQY25EV3ZvQnRRdUtUQkRHbVBmaWxyN3JRaEVBVkh1akZhWXQzTExFZjVBZG9ONHl4RlpHYW5uSlo5cmM3MDg0U1EzNS1CLUFsTmM5dFVvOE01bDN5SWtkSjFmMVpMYThRNmhqZVpfZFRhVWZWWGU4VWVTTU5IUlJXZE1yUGpuTUZBQmNkclB0SzB0QmpTVHFISzdyRnZ6TW81WGQ4UjdwV0lOWGxneXliNmJ2V05LcGpTV0JhbTRFYnpPYWUxWXBGT3hjbkNEbTl3UGs1UWJ1UWs5UDBLcnFtNHlBVnlLODE3NTR5V1VTdFB5MDVhR2w1TkdKYmd1SDFTZ2JTQkZ6Vjl6dzJGOUVjam8zbkJYa1Bjak9lVHhsWERPSkhjNXg3a2hCVEZoMkpFV3FRelRVSHJadE1scm9JVlFocUtoNVVQUHdyaktlekJ6ZnlKclJZMktCckIxZXlLRk0xaVgzb0I3NVFyM0lqTEJxR3ZfTXc4bGFsd2NHdVRBdG8wMEpxSEVZX3JXcHJNR0RiLUQyZFRzajZuVUg3b1E0VEZvM0VMRWdUQTdEMHlsTHhHUmpDM3ZZSXZfaFBCem11aEZEamlfalJzZWk3a3JoLVFTVVo1aXFKa1dkVkU4MkhJUk05YzE4R1A0ZDZVOU53SVV1VVNfM2xRbm9LTlhUTEpBMVdLYUxPRXdCTEtzR2pnbndfUWhGNXBQbXdGWUE5QlZUbFVpdXptaTQyZThmRUwxZWpRSUs5YlJuWklraEJ2aW94SGFBWXp2aE91TjMzVlhheDVzVHNWVWF4LXcwWEpMRzJ1dUdQTWttdnJxbDFTTHM3dHliUmdWSUxyMUNTZ2VqMU9VdGxLOFEwZlhHdjJmdEJ1b0FaT2hiTnEybHAwR3poc2kwTGdtNUxQUWJDTVJzRnlNMWtSbmpDOEFVTXc2bW5lLU0wdzFDMEwydGxkWHFEemk0ejF2eGdSeHdsdW44TEc0eXVRcW5hODZ4cmQ5SmltbFRJN1d6NnhBaER4ejBWOURVYXhpa0ZudWl4RXBoSHBFMFBBT1NyYkh3bmJEU1FJRTVmTGR5VVhoWmlpbkxrR0U4d2NUVW1VRVUyMS1KejZPdlludGVCamxfU1paUUdxcjBQRXVUOFBEUE9TUE1PV0JFV3lNaC0tRU95QmhOVGVXRXl4OFBkb0JWc01aR3oxSnFyWXdsWDE2Ml8yS0htNUVYQUZORlFlTXdvNWN0R2FNcC1pbmdrZDRVYjdHTEhaaFRKakFWc3ZuRGFmdHJ5bDVFWFg5MnNyQUxFZDVlQ1RiMWJSZ0xncmpFdzlJRk1mcTNzQUtHdGNTN2ZmR0dfQlhpdGx3RGRUVTVXQUFuem9RbnVNanlnZzF2SncySWNybWx6RnlyMENOSW1SZjdpdDRzZ2ZsQy00ZDRJa2FqUUt6blBFV1ZmOGFNQ05NTHUwLUZUN3lwcE9kZTZINW94SUlSUzRkX3RYZnl5WUJLWDFCNkk3WndkVTFFaEZteDh1QWZXR1lGeEJFV09HWkZxRm53d3Juamh1QjhFMUhPN1d4SmJST2dXV1FLWmc1QjBOcFJaU3NHYkRHYnFXZURPQlFJbGI0aW54LXp3VzRJRVpxNTB0WjRKc3pMWmlEcEM1TnRuMlhwOE9LQmFrMFZMT2VDeTZlM3JkQ1lTcnd4WHFrbm1BLXNyaUp2b1h5V1RZZlFzd1U3RlFON3hzREpnU2hGQjE2N0FMWW1GaGhoZnN6XzBpRjBSUE9PT2lvdjBjRERTSUdydzJTdjlzdnZtU1R2bWZuOG1KT0cyNFdMb0otd09ZNy1qb3BRUEwtZzdhbjNnMTJSX0loVFhuNmR4dENCMEJBUEFDSlpzXzNrVk01cHQwYWlTSnY0b1ZWYkhTdmVDZHhhQVFsYXpSMkJxMkwtdXZFWjdtNHh3M2VjUFNLcWJPQ0FQTnJmNER4YmVHYTB3NmhreW1zaXB1dXRabjFlSFQ2SDV3SlNNVmlKZlBPNkE2VFU2WGItRmRMMFRNeS1yRXI1NU85WDBaY3F5MnZXUkZfT2d5ZjM2cXRLM2IwdC1rVDRLall6QmFXajFZcWJsaEtnVl9tNkxQSlBHUjVjVXVVYUctOVlydlAyd2dSMzlHNTVSTnJUZDE2WXNhcjd1ajh4Ty03bmFaZmZOTnk2UnRrVjViendhc203TnYzQzNnMWpRYTdncU4tWElKNF9Idlo3clFPUExXMkZHWnlmY2wxSVplR0JFbHBIWFo3S1RDTVQ2Wm9MZkVKVmxUNExMclIzdE4wVFB0azBHNGNaX1pial9YMXZFRENGUWVhbUNWTmtWaVQ3eldlX1laVHIxZ2pfd3pjVVcxYXF4dTJ5ZFR3UVZ4TjVmd3NnU3pxWDdPbWRZRlRmU21uMW50WDFUaE9JeFhGUUVxd1FIYVFOM1hNNWZtTm9LaHNnQ3ptUUgteVdXaUpPY2xHZkFYd3Y2T3NOSnpLemtWWnRZdDhucFRLQ2NLaVM2dEpSWXdvV2hiYXZWUmtnTVZ5dnZWS1Y5Z0J5MFpLajczZmZNdXFNMy1Uby1haDlmVnBRdGFpVUdoOEh4TUx0OFhGS0p6a0t6cmlzVGtqUnRQUGhSMHRyQkhfUmVibE02SnVrcEMyVFdVYmpPdVZUdXpUTFFsSnB0Y0lhcGZiU1hWNEN0NzNKQmx0dWZOdlByRGdCd0t0c1RIUG55RVd6WjRidEdlVXczcnFZQjR4eDM4Z1NoTDJiWTk5ai0yQlZNdVh3ZFVieUQyN2psdi16ejNsSkFGOE1KWU1EdE5xN3RUN3NWNEdhSkptUkx1U3VUNk55d3A5R00yaXFPaFRNa3A0cjYxSDlIS0ZZVWlmTThUN19zcHRmUFNiaDlueEtRMlN5Y1hBZXdIY2NwWTNLbVNnandsSG5zRFVGU194VmhBaG5Cb2RGcVRjUGJ5TkhJWmtkSF9Sb3lCSElrVVpGSEwxZ0RUeS1tdHprMkI2Y2I5bGV4QXMyM2xpSG1CTGtzUkllWEtjbUlCblFPRGtiZkEwU1Ayc2FrWkw3NU00NVZQZXphTDhaS0xaUWhvUGJDNnFwY2FqVDBwYUVWOGFlZ0ZzY0x2U3UwcDJrQ2lvaHpJc0JncjFFSUpRRG9fb2Zham5jOFZuR2tIV0hLTjBQc1dncmowTXFTM2dPZ19fekhLbGQzSl9GdjZHZ3c5aGc0WHoyUGpjMGRsZDFIVnUtU3IwZTk5TmJwajdyZ0x2SFdCaDRkOXRpRnVWVE1jOXN2R3NTeW1UNnVpLVFJakZqM3BmQjFrcWg5OHktMlFuR0NLNnlhdlFGMldxMHN6Zk1zMF95S0xnZGRkSHFucU4ydVAyT3AwbXdHdE8wSHljY0stc05IMGUzSm8wVjJDS3FRTEVNbHFraGs0LWNqU1NaengzeUxHVWpQc0N2dWFWQjZ2ZndnQm5UMEhBTGZfa0VHZ0pmTXhGV0c2NTltYmotcWRvRnFhUjI3UjVFci1HMHVVdk9KVGZhNFZXa0tqNEEyQ1VfZ3VyZVpRRXBnUGFhb0FuV3JmMktDaDFxRGxwdWhQYnYyQXFxSUVzY0R0MkwtejhWbUpSY3FJY0lxOFdzZlJmQ3hpaWZHRmtISGgxQmRhSlJFd29LY2dWV0FTcnpoaFNvSjROT2RBSE5RVHNBRGFSZW94aUxkVTJDTEtxVWkzS2VCSEpwYXM3cTM5cUhIZzNYRm5ReFJyT2lsYnZrbUZvQjJRYTUtakpBMlJXMDZHSjVRV2Y2YlpmLVItS1ZEVVVZTS1nZjNBRTRleGxka0NQYi00R09yMHJmc2p3MU5hYlg1VEtYVExJVHpsTW82MFZ4SWc2QVA0ZS1FdkVGRDVDZW9VUHJwSzg2eFpFNnhuNTNXcUE1TzBsMkxHQlJPdjhHMjZ6R3hBazVQNV9mWDdmandIcnNoNDRpX1hpS1prdWtSMjlzT2FVdENRZTdoa3pQUzRGQlo3OTRZVmhrSnFDSndQZUJwS0xUZnpRZERCMlBTcGJSZU93MHp4U3pRVElVVmlvekFBYjdHWXhqRWNBQjY1TVFLVlo2Uy16TFhlbUt2ZERnY1c3VTkxek5PWDJoa2lZSmV0eUFCQWppdEJHN3dxcGduekNQYVB5R2k5Sm43cU5TMHVkelVYeEdHMTNybDZ5Q2RaR0h2aXJWc19wQnBWQ3dBdTdiQjM2RnBSOE0wS1NJWGt3NnZBYzdJYUNmQmhhbnp4WVh1MldEajNGU3FVZ2ZZLUJYVjYyRmNTTjVBS095djF4czItMmpZT0hUZVdhRVN5X3BrWDlncHZqY1pJRzB0MWFHNm9jMXdwTjFteDFaUG5LZF9kU1R0OVhwLXlXbjk4eG1kTHlmNmRaQW5GMGFaeVlScjNRR2pTUWVrY1JaOUhSSG04NVhzZWJYWUhoTXpUbWdkSE5ZTk42ZUQtUkNRNnpRTnd5RmVSdXlnRUVpN3BLUVJZdE1tbWd5bVJTZURIaGxLQ0hVTXdhNE4ydkhSOXZfVXVDdmxSeGs5M1k2UVZIUlJKMkJ5azR2bmhLWXF4UTFfX2RGdFM5TEVJNUs3ZEM5emdVVnFwRXMyWkIyOENNUE5VeEVHVHF0bnRNckMxMXZhUkdlV2FoeGpqN1lxZFNrYjNfS3gxRTloX1lXZEJJQ2lIZzQ3NFhzQk5rMzhkWEg4eUp4TUtVcnViY2RqZkhLVko4NDRIZi1jdmpOYmlQLXVfWWdrT21pWXRRN0NFNzExUTVKeVJxMlg2UWw1OGllSWZldFFtRWhoNUhEZklXUzVqa2RYbnNiRnpweUJ2bnV0dEhrczVlQnVYTlBlZ0hPQ3VkVVozV0RWTjNYX1lnS2MzZF9SVlJrT3RkRmQ1RFpkVUZTTkxYbkhZRE9LN3hXemFxTjVldEtGYVJaeGk0d1MzNjRTMHNGbUhYSUFrRXg3MTBkUzdQa0NaeFF2ZVBfV1NLNEhQNk96M2ZMVE42NDJqZ09MMWFlU2VBZWNJRFR2SnB3S3ZaTHZ5NUVPNFZxR1FnM2NOeDFLaVlERGJPQ1BqYlBaX215SUptU1M4VEhGR0psbDJNRVhzN0lZc2hIUXhFX1hTOHN0YTZqaG9QSlRUSzMwRG9iaGZJWjEyTnNyQWcwaFREMjRsQ2N4a2xOSTFGTnlyZDFQMmdhMVo0bVBrMzVQTUhia0M5dVhWbTQtcGF2aV9xRkhPN0JvckR6TWo2cGxmMUpBaG9zX1Mwc0xDWlFueWJ5MFRxaVNhT3UtbkQtS1ZKNVFqNkdLTkdtMWFnNmhEZFNINHUwS24tUjI1akZjM0NXT3hpNG15VjlET3hnX25Hc283UkZUejRaaVRVQWp6VERrUlZ2eXJKUWNvZ3JpV3V3bEVqWWVaN1hGcGM5U2pONEJsTXRpNzBEQk10QTJGVl9OR3ZIU0x6UC02bjhnU0lYSVZyMEhiSU9aNHc5RlIxZFVkc2tNMHpFUDV0M2FBWWs4cnh0VXNXZnBzaGdiR29tRXhBUmVaVS02dlB3c3J4S015T1BVVnA4eEJhdVMtZDlCNG5JVVNFSW41cEZDY3hsYUFGY1A2ZUNZUU55YmdtYXcwR2lTckRQVGtCNWJrMUVOUVEyUDN4R1U3YnFkeFdZOUVQNkozRWJKdDdQNVA1OE9aMFkwdkxGcFZ3UVNXa1FfZ1RibklmckFfSk0xWWxYX21mUUJXNVBtVmNrZFo2N0dkUXlXUXRDeldrOHYtUWJsaHZjZGhIUnhEVmFlbHVOenVvdnd0enBtdTJ5Tkx4cnpXMWUwdm1Uc19FMEJqVWM4eVhHTVk5S1R0S3ZZd2RzR2x3VDIzMmJsQmlxc241U1pHal9HQTBzTGFuZWpCNmh2VGtVTnlhOC1vZGI5SDhuMXNQUk1INXlOckdBa2Y5TjZGVWNuMk5uOHdZWDlUdGxhaTVVRU1EUVhJRmRFSU5QVWNRSGI4TDdrM1Z2RDgyQVVmNHZCbXFQQXVyNENYT0JWQlFWZ2VUaHBUVEE0d0k0cjF5S1lsdzFDNHpzbGxUd0JzNnBvbWpJWTlsRURJR21henRUSXk4SjdqTzNTbWVLa1FWMTI3RkU3dG9hSUg3Z20xQkVPcDk4VUJ4Szgta1FUWklheVZJWi1pLVZwbFB2N0JwRTNsOVAyXzNXZUhrSUR0NlVmX2lpOVNVODNmVkdWcWlRalFWSFQ5Tl9mR3FlNll1Ny1MNTNEeTc3aUc3WlA4YTBsQm9od09pVEdueGsteHdoOHRTX0Fma05RZlBnZkU4cmhoaG5OdHNwZGpfenJoRUVEX2hqcWNhVUdrWmJhTVFaVGVzSmFoZ0I4OWtabGF1QWdyNTBkTWEyRlQtUGl1ajZuNW9OYTJ3UlF3T0pkSmE2cm9Gc0NrMTRYLWg1SXZoRDY1aXltYUFlMWFpNjNkRjF2M2FwQ1hJYW54aGxrU0F6dGlvbTd2aF9lME5TMGd1dlpNVEd0REdTYzh0LW9rQkFKUVdNRzhnZWkxQnljNWdSSUFwTURia3UtMXJkZXFGSnJSRVprTnlvdV9sTC0xeWZaLThIZmsxOEN3ci0tcXdRYjFMQ2pMZmtJdVVQSUdUX2g5YTYzQ0hnNDlORWdpUm0zb2NKXzJRa0FnSUNIS2FlenNXQlMySVJFNnJORjRSWXNXcUY5WmxfWmdPYm1DbkV6S1dMR3M2UUdVOU5SWFRHY3IyR2FBRndBa3NZSkxoRkVVa0FLYTR5VzlHVzYyUWtVandYbDJvMUlDbi0wbV9Pc0tLYXozXzdFS1JEeVc0MlFWQm91MDlxeC1EUEVMME5xSWdLZkt4cVg1TGtvRWc4My1zTEEtcnN6eE42SmNlNkFYbEpKc2MxZ0NzZW9LNkdOaHA0RVhvckVrRGVfWGtkdFRKN0VSc2VubXo4Y1NzaWhEdVpYX0pjVGF2dVcyMFV6TEZKQWVuN0NCSTNkN0p4QmFJVXhYenN1bFExOUlOdlV1ZF9DeEF2dHBnUWpuZDVOeEpwNG1UUFZCLVRZVXBGcV8tczJrcXhBblNMTWpsOTRfUmRGeGExVnNfVHQ3SDJSaVhqTjJObHZwS3lIZzRlZDZfQ2ItRi1lY0stbEJmeWd2QTJINVZGcUdmMkFLV0lEd294cVBPLWlnLVRpSXpxSHZpZDRyenV3WXBFWWFHZ1BtTU9EVXRvM1RMUkxZdkprZjE2VmNrd0FlaDhqZXVEcjBwQWpDdnE3ZnhIVThoWkdaelNVaUJXZ1Bud3h0RERCVm80eGpkQ2pTTHJ5aVBRSmxoUWN5S094cVNfY3pYdDdqU21LZTRDZkRTNjRxZllzdm0yWDctVFg4eDVLcXRuLXZFN1pPS1UxSkNJblZxRU5PMkFTbFdNTENHT1JKYXZNUG92ZXFyenRqcDctdVZ4ajBzRHZTam9lODhwa2FPVUV5bUJ2bTZCaFVmQ3l6OHNuSDZoaklhdllLdk9YWmIwRmhNNVYzbDBxN2ExdkM0bDlOT0ltbWJfSnhfQUI5ZmZTOGxzQTZsMGszck1qYTI0emxtbDgwX0FFREtvUlJpem01N2w3WVJGZDZ6VTV2MUZRYzFhZ0hoZFNoUG9va1pQTHV3RWtpWEc5OGY5QjJCdkN0cF9NWWNxemlibVZaX18wal9YSmtZX2xGb0JJbE05UEU0a3NSZ0NyRGw2VEtESElTX2Zndm42MzF5NDM0Vll2QUdwSDltZk1ya2RCVDBOQ05FV04wOGpiRXU4dWxYaUoyRHVYLWVKUEFFakhsbkJpaWI4U1JXWG1JN0RZRnpOTFgxdHpqYm9EbmtwM2RMcDRFWFdIRE8xOXBkU1pJdkwyV2hJbkZabjVldVpENnlvY0tfMzFCQ1BYZ2M5d1ZOMU4xUXNsbGJUcTVUcmZxUng5ZGFhdlNIRWFxd3ZESVN0WVQxeEFYUlUza2hNamozTk1uOGplU21vNW82U3pWamtBeFhhUHZ4VnZHR3Y4amVIcWpzVmJpRW1hMVFpM25MaVcyWm1Dd2ZtbXFPQVp2Q0ZyNThDa1IyRU8wRXUzdTNHQ2JUallXQlZ6UzJjNm5rT3hFRHpmckNlT2tmZFBHZkJsWFVBVzZ2R3lFTXNkanlnNENFeWxobkxIUVFhejg2T0t0eUlPQnQwbmk3QkJjUlQyOVB4SVV0SHNYajRlU202S2plWXZsOXlUVTlIeVcwUjhuMTdsX3pZYmNPOTU0NGR1WDI4Um1oQWZBV2FOUmE3Ml9ROHJpVnRlV0dSaGtLSHJNMldDS2owTldYcXpLQ1hVM20tcXc0eVNSWTlnTVhaaWlUYlJ2WVEwUDRiX0J2eGxkb2hFNnNSZUVTSmxkS2psQW1JMS05djAwcDJjU3VSSTQ2NmlCQTF5ZnhTU3VlODAwVGs0THF6WTNmbm81eGR3dk9ybi1wYXpWQ0E5WVdxNUJsT285Um5VZFo5dU90d2FicWNhbnVjYmlUTWZkU0lHYjhJY005Y0IwVV9wa3FyRDFVWWRzMHlFRzktZnlJV3lwWTJfd0JOaWY4VFZwenZCU3pOdjN1MHpJOXh4djBVMTNEMV9mcnZlcXRCbDIxN3FVS1EtZXRwSE5HY2dkcjdWdWd5bzZPTlR6ZVdTbDV6YjFIWVR4NHA3cnJaNXV5VW9qTl81N1JNTDJRWDVnQWFmQW90N2xwLTFMS3ZqWFFpMGV6NkFuRXM4WmFzbmxvdmtFMENPQlc4RXZIRlA4Zzd0ZE9TaUFicGhWQmtrbVB0eDNPNVZKSndqTEdJNGt0ZjZHMGhDS0N6eWNUZmhsQ09KRjdfWTNiaUp2Q214VEJDc2l1bG5vMzZ6Y29ndDRsZHd0UkowTHNSRFlKZVd1UHdrRExfaXZ5RlBlUEwteFllZ1VFQ0dvNlJUWDNaaFdrM0ZNYTd3ZmRNWjN2VFhnWVkyZHViWjJwazdUV1l1Vk4zLUh5UlQ3VktuUDZaRjRETHl1RktwdjVad09RZE5GTVdCaEZjOXZXWDJKUmZmdU5FR19iQUhldXJtY1BiYzBzVFQtZGFMMEgyc0tOekFQWHJfZjZwUUl5aW1CN1NDRnY2QlVjeFM3RzFva0xScXRuM0ZiWFloSk9vdTVTeGZxM0FtRGlRU19QZlVvNmVvanF6Q2pCN3ZNYjgzcHNfVG5TekxWS1hkanFNeGpNeFZOVXNxY2k1Y3B4dmRxbXpxbTgxdnNRZEE3R3k3MXA0SGhMSHZNWkRZQ2lOVDBINWJyWTlpN3BqV09YYnJQSkFBcERTZWJjdlo0X0tRb0p4UFJMUFlqbzlydGhZek1ucmdqOV9yUVhXWlNLZ3NGQkowZk12LU5pYU1BaWFVWk9ib2wyWWk4OHhXV2h0MHRmUTdPUlBHaHdQeVdqQmp1STEtUmpqRHU2LVZoVVFHazdtb3JtU21mbzBpVmtfZ1J5eWJyNzlENFBzYlFEcm5Pd2tWUkJQNlhyV1U1Q0lrN29SLXh3RFNHUGxKOEM0VUh1VHR1T0hyMWNpMDA4cVRVSjBFYTdFTHByN29OWkQ5Rm9pdG9yX1dyN21pSXlKcHUtUzlSRFVMOXA3SXFQUHUtNFFwY2ZTQjZ3Qkt2bTNzbXd6bzlPREdueXRHYkJBUEJZQUVlRUI0YWQyU2FCeU95WEdmX1lDR1JkZkU1UWNnY1BnTnRMejY3TERILVNINlpNbm5sQjUyWU5EWWdWbXB5NU85WnZaSjMxTlpYQ2I2cjhySV9rb2o1dDJYa01oZ29jV2hKbDJ3M25UUEhYcU9Bd0NrZEh6SVdETFZQd1BhS2dVaXktU0Rlc3U4OUFzVXFHTEpTbmRaR3Vud0NzZVFqb3N0ZHBxalhzQmxEd1FyekF2NGpNRUM5RVdaR3J1NlNoSWFaMlBmZWFsYlpPOWtxcjg2dEVYblJaZFBwcG9PRHN6LTNzaldTUWMtUW1WVUxxODFRczdfMnlCNTUwam0yZnBHblFiMzhGT0ZNazJQamdRc2R0ZmRyYjNvNFJ0TTFaclQtQi0zazBfQnhnTHpDM3J1WmdoS1B0VWdPdnZqYkRQZUpRdjFJUEpVajNteFZBa2VPdGtBUzdON051c1NPQ2JITXVwWHFlOG9DX0pJcWc3cmt3Y0ttNkhFNktwbjNQNS03aWYzV29HOXJ4eVd1UDdFR1NCRFFqVm90LTdNdnRublJPRTNWWVdma2RtaUYxT1ktZl9BUWQ1RmVNOEdudzZPcjQ2MkNHbHEwM3pvMVFMQkRrUnppZDJ6SkhKMlNlV3dPSkRDcXQ0Ml82em56a2NObk9xdUE4aG5tbDd6ODRNTGcteDhlX005VUtWS3FxUm9TZmhZdng1ZE1Lcm5wXzRfa2tURHB3aU9tN1JoX2RSV1hzWEtsNlZYcXRFWFpZZjVfbGh3MEUtdWhYd2xPSi1nNDV5MncyZlk2Zm4tNHFaZXFfM2ZtRE9paHgwNTcwdHptdS1WcmxldlVkSm9TLW9EZFBNOENtc1F0TU4xVTdzZ1gyZF9QTjVIU2dXSDB6dk9TMngtVmtSX2E1b1NGVWtDQ2hPZ3dVVU9WeEZPLWVJRHlGVU9SVF9lbkd3b2RVaUIycnNKX0VjNXR6RkY0dTVfTFV1R29LdUdTaWxkQlEydTJUUHc3aWVSakpPcDd1OWkwejRGT2xIdzdtaHBMUVNYTklmTERIeDRzSGdZQ1RBNzEzNHYtWjBwTTlkY2FwSHl3WUhFNWlmTGgyd1Q4NUppSjIzSWtncGZia1JsWTBiT3ZWM1k3czF5c2VZSk9FeXg4N1llU0lfeFNIMTlBMHBRYnV1Sk1SXzZzbGpyb0tmcVdBQXdtNm9rNFU3NGRYTGE5SGNXYWhqOGVrZHcwM1dZSVgwNkxKRmQ3ZkJWdGdnbllmWThDOTRCbUNDb0RuNTU4X3hmcndZOUlkRFNwQUhoejd0MndJWmZuSFJYcUhmZlpEUk91aGlZQXFhLVJTVTRYNENqV2VyNUdxY0hxM1p1dnFUdUxjWTU0ZG1QQ3hqX0JMOG0xeDA2dFNXaTVIM3pnbEZ5a28zTGRKR3VEbWlfam81el9oOTlMdnNSQzlRTFZlTzQxdm93TjkxZ01qVlRNMnlDaF9hRGFvWVVwY0R2Z0E5N3l5WHRIMVZqaXdZQ1JZQTNkOWNCV0RZUTJ1ZEM5UjBHdlk4R2NCSm1rZVhLSERLRHNITWhxNkd2RlE1ZkJMMXdFdWJndi5Zc2FSNlppa1puc3FqemlsdVVydzN3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5cbbda8e-3ad4-4927-b94a-7ff4f250137e", + "Body" : "{\"value\":\"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLm9Vb2R2SzNWQktHZkJNVzVmWWNfWHdLZktseEYyUVM0UjdjSVhpVlQxWnV2MkVaNWllNEV1b0FxdFM5Uk1HOGZnX2hHQ183dktuQkM0S1R0X0l5c3NSWS1MX2szemZ4dFkyTW05Mmx0cjI5NHJta0xDZ2lRU0hreDJVSDdZWF90S29hTlB1VmdoUjNNUG5halotSmhGeXpIZ3ZQTlNLSmFuWUhqdTViM29ld1hha1B2NDhQeEFFUGxnTTBURVhMS3Mwc3hkZVBVX20xZ3Z6cW80WlZ3X3VTNVdqSi1UTGVjUEhQYmVJS2oxaTg5dkZCWDlFMGd1VEVSZHlreWxHTHFFcjJpVjlDTFNZdC1VUGUyTnFnMVFHWDZmNmdPeGZFR0h0TUFqOHpxbjUtNTVWWXBmUUxZV2hGWHJ1WWw4VXY0R1pKUGlaNGJFeGhROEo0eWp1Y2xoQS5NRlhVMWJOeFVIaXA0QmIwelV5M3dBLkdual82aTEyemROVTJmeXptdFhJRm5SSm9ZbHpnNDRWcmtPSUotYmhsakRSV2QyUmRSRlRLeVNSZmc5NHQ1THRONlpHMG1sdW5ZNUZBVDBwMm9uTVMwVHZmWVdldHFOTFZqa2wzZ2s1a3VLc3hXN0lWN0lzcGQxZ2cwNGpIU2FpNXFmUEVpak5sMzZMODlROWhHeXh5QjJuLVNxWDNKWUFMRVdjWGFhYlBwSnlmWEI2SC1oaUVpZG1LanZQMXQ0TFNUbm94am5vaUNzNC1mclhGTmdYZlE4MTJGeVAzUHMzdGdCNzhoT1VoSVdrdFBsMDM4T2o5dWRaR1dJZUNwbDVma0V3TWdFdzhQZ2NUb1Y5XzVjUHlvcmZOUWE0dHZROUNwSnB3Rk0zal9MbWxMWkUtV3AtSEp5LWFDM2JxMHVnYzFMV19BcHdLWklWanJpRG5xdExBMDF4aEJRN0k1ZEEwb3NvQXJHT3RuaTZCUDdWUlZ0Zzh5U2NCMFR5SGxwcVpLWE8zdzRCcTJLbVFxZHptZUN2ZkVyR0pUMVRIa1N0T1NMcWhnU2RFMlVsZDVCa2FIaXh1WGdDcjd0VzZOTzJkbHJrOERBcjVRajJjMUE5M2J6bWplVXhHRW11bUZ2dk5mT3oyTXQzZHRnamFrXzNyRWd5T0dRRGZsekE2RWo2UC12TWwzaVo5WGQ4NVU3TDRjR2lmZEllN3lZMDhmRzlzc0NvcDZHZFN4dXN4Y1pIQVdGT1EwRHZzSm9aNTFON2p1emhJMlNJbGVRcWR3dC1uSEoyUlNydC1fZEpJbXY2S0ZWdVJWMHlqX3dFVWNqUzFQelh4WldJTjRvUnFhQm5VaGVkNF85TjBLR3NNNVRPRGx3d1Z6MXhIMkgxYThUb3FRb1BuUzNkazdRUmEzZi10RFVWQnZiWnlkTWZlNkhzOGhuSHJoclA1eURpQ0JUQzFFMXFTOVB2ZlJsX2FnejUtS2tvaDFqengzdTBuODJJZWQxU0h0cy0zV0IxVDlLWmdKUTlHUzhEM0o3TWxodEU3T2Jodm1TalNzOGFlWjJCMkhYYzJLV0QtRGYzWlUtUF9PdmVudnRFQ0lxalpxa3V4WkM3WDdERG9VaHJYT2lRdVRaZzgxRnhMeklxTGJQWDNMQkJOU25tNTVhaFR0Y1FQRk1oQUFvblhxUVlYNnRLd2szdS1PeHB2aDZLbXVyODBHeHdtUVlITVV1ZG5vYjFMWDF1N0d1WUVoSWhRWE5CVjVuU3AyNjh1eDBLNE90Z2lJbGNXV1dVcFFXQXJCeHIxVTVJU2VSUVFmRm9YZ3ZoN3Byc2VSeHZYZGhoOWF4Y3FFaVN4OFpDTk8zTjZ6eXRXZXpTNlJTQTlianFncWhJSFVSeHdLMkJhQzEtUFl4eDVQSGFWaFNLb3UyS3JFR0t4NElZRFEwOVVIR3BiSG9jV1dfdkZqSUxYZlJPYVYtWVVnZlJzVGI0dTE5T1p4bklrR2pUaHZPWXgzVVZnNFBETjd2dzZtb1cwYkVqRmNoRHZZWklxS1R1clQzNHRNSld4b0RFLU9vZnM5RkxYVHR1LUo4cWF3Y0lFU1BXRWliS2RRaGpYMF95eTFiaFB6bmVEcVhUUngwNG16U05yMFlEZHlvWHk2aEdWb20xR0VpcG51NTBvcXBaNXc0Rm5OZm1nMFNBdDY5Rk4yVnFjZXlpX3BLMXFwWFQtWThqY0kwVGhacjE4NDNHSXZYaUp4cUg4YmpYR1ZjUlJRQ0xjTHJNM3doUENXdkpITTh1aVdGMVpVa3gzN3F6ZUdSUzBZVFRvYmlsM3B6b01GRnRLT3BtWjYwZG90OFRQa1VtaGM5WFJWNzVJOGlpQ2FZMkwyYzdFMWREOXhPNXc4UG0wSTdmS1E0cWlGT2tyZ3VwSWZPT3p3RENqc0JHdEtWUm0ySjkwdWFLMkZxVnM1U2g2dlhmWFB4T1R1Tms0NDhQeWZ3OVJLaUxtU1h5VXZSVVZSLWVyOVVqMldxRzFyLXlMMjVmWGZiSFFwWGI1bGZhQ0U0X3YtX0lJNHV1bVBLMmVWT0xCNjJ3NGNlRDUyRHM3RGU0aEQtU181UTJmd21LR2xHQ3U2R0wzTWVQXy1GOUZWNVk5WE8zd1MwQmZtd1VNaHpHcVl6cUZQUER3QVk2NXF5SzYwS3VKOHZqbWhEMzlqTTAxR1pNRFdSYm80aGlXS1JRU2k0dFAwMERwVWItYjNHRWlmRFQ3N3hfN3czTDJhWXJ5cWtsY2NCSFltNTFadEdkeDgzd3psRmxDSFZ2S1hiSUJNSzQ2aWhZbTJfQVJUbUE1WHNjSUliRHdqcDRLdGlmdWd5cVRtR1JReFJkazlYTXNxN2V3aGVFbE1TQ1FtVVFMeElFeFpEVFlGUElkX0RTTDhVZks1R0czc3NQY2RWc2dZVkFTbDI1SHEzcXhmbU1xS3BLc1ZrYm1TNm85aWxTT2hhUUZSWEFsM09TeTdOOUdWQ0U0N29GYzFsX2psSk1TX1RmS2lvdVJGQjgycDRULVRlNjN3UEJiYVhoY29pY281bzdZSW41elBuQTA4U2tKQlN6bnJkQndqb2FZQkstTkdreHRsWVVVbGdSUFZaRkVtVVozTFhzanFJMmJzMi1OUHZtV3lrcTJ5T1RnMlJ4cEVTZk43VXV5RTZiM29NRThVREV3WlZhLUlqa2tueF9Odno4RHhJSVVJZjFuUW5HbnE3bVFxN0p0NW1DQmw0U25aQXh6SmNkTzRjRDVNekdfaldrMUNuMDYycjVKZTJuTGhWUk5DVVhISUpDV3VjdlpZa1dMaUZmeVNQOG1YN2Z2cjBXLThFWEFXTGVYT3d1anhkaHR5aTVKblBlTGpSc3VGbmtJT3psVjBsczNKaTNaX3VxeFBMSUJ2TkJZM3JMQ2I5SG5oWWtqcXVQbjJyVWtpdk9vTTE2UVc2N0R3azltTXFjcjFrT0dTUXZuQmxKNGc5bWtKR1M1RW1Gd0JLRnVESG1yNDF6bF9ncHE5NWJsTjh3bWZ3UEZfRzRvODFBWXZRcmY3YmlzbGJKdll1R21yNEVvdzkwQy1xTU84VVRCdEtRQVYyMkNNMHpXcUdCYm9fa1B4eEl3aDFWekNlNllFb0FWdjBQNFpsbVpWTFdNYi0wcnR3Y1psVzVJV0o1VGVmMV96Mk9lTlV3dFlKSGNEem5YbERQbGpEdTAzU09pa1dSVXhnY3NHMkhCLUtlOXhCWUhtcVlBOENaalFWeC1mUVZsV0txRWU4R2FXbzdmejZQSmRZWFdEOFBmeHo2VEhRbi1Ma0VzdEpLX0h4clJUM1Rqb0NZQkxvRkRvTjl4LU9pWm1SSWh5Q3NRVTN2UnM4ek1IT1NaYUkyZnlyQ3ZNSnlWSjVyNmpfTmpsR1VpQVV6YnZISEFjN2M1RFhNTzlyaUc2cW12YTdPUm9KOFFfc1N3eVVTbkg4VGRCQnJiaFNKWWd3WGRQWUlSRVBka0MxQzQtVXo5dzR1c0FLbXpGc2dLSDBGTUtHeXhlUnJxWmoxdFJiVFlQS0hNNzVTWlB1eG9LRlYtSkZ5TTVDTGE4OWNvTmJXUVZTaHFhbTFEcWNISS1aYjhOT3pPYkw2V0Q1NG9KYlhBTXFXMk1UOVNDMHl5aHM4aXZINi16VURxRmhmY2JYTjRtUlhIdndLQllkREZ0cTg5MkdiOUpCbWh4M2N4U0xRN3RtNlVFcERRdjJzci00ODY2WkxYb2phbmpWeVJfOXczYVY4OS1aTlpDcHdyMm5wVkdlWVVWbmthVFI3c1ZwQ0dybGdhdHplU3p0dEJqamJWLTJ1OURQbDFKVjJwMV83OTlSQk5saVpnT1VzT2F2NklKcGxXZjM0ZFRwZzhkNlVhWnFILXVZbXR4X1R3UXJCN0ktUG5fX3JkN0NBd0U1QzhzY0hyaWdNM2NlUzhGRzFCSWxRVUVoLThJSEpQWWJ1WWJMMG1xdjFSSjlpaF80ZEZIVFhwaW1CaldtUlFtNEZCUlNfM2RrWWV6alZmOV8tX1ZEcDM4QzBWSmV3Z3E5NTZhQ2JkNHV6UmVla0xwY1J6cE1VRE95dXB1R0ZpdDlfaGNuUVU5ZjNiOEF0c2xEcU1UNlE5eFh5Vkc5c1NURkh0YnNRQVFsSTFEcDl6cXZlZnJocEQtc2FDalpFcTdlRDROY0kyakFtSFlSTWJTcjlULU9LSzVjWnU1eWViUFhwUWtVbnVfM0VZdVY0YVg4TEZIdkVPZDZoRjdGbU9DNzFVWUstWXpyZXRLQm1XZ2FLVmladWpUZmNYZ29qbGM1S3l6eTNlekZZcWtLa1NjWE5FVkR1cnUxb0J2TnBjSTNGd0M3dGRjQmJidnhxQS1FV3pabmpWd1FkazBNY0FVQjNYNk9ITFhaTHVRVU1ZdzZxZFZrNjRPRVk5NTd6YWdNS2FFc3o5VXg3SnRwdkU5RmdwZTcwa0NtT294NEs4aVphTzB6eXUtRElyS2VCbkQ1ZzBaQ3ZTUzVSS1VYbnVldXB2X0RuSVJWTDd2MWZ3R2NZNDFWU1cxa0JsejN4RFBDd2s5WUx6ZTV2b1E2bkVGazhUR0R6Q0otQmdJdmF6QzF3M3VkM0w4MUZpdzZzemxVVnB0aWZSWEN4NUhnOEhsR1JvOEU5ZEtVM1RyUVBPV2k3WmtMYUlFcjQ4SlQwRktRbzJFX2poc2xXYlVkdWlTV0V4eTJhaWc3RF9vbGs1M0VsdjQwaTRDYkN3Nm5ndm5BUHBfZ3ZOenhzRDgtUWxKS1N2eGljRFdPT1g0Z25TcS1kWVFlUVdZVDVscGVOREhPbnliN0o2U1Mtck10X2NnTExHWWhBZFRrb21xcVZkSkhkcUNQcjRyTmV2YWRRWlNFbG14N2tZcDlnTkd4SkJGbjJsUkVVSVNPWkhjSHl0QUlrbEN6YTBvSC1vdnJBQmtEck1yMjNwcWpjUVUzWUtELWxjOXpIM0N2a2tEc194SG81TnJkQ1g3UkpadUp3X09ZSGQyenpoR3dRRnVjQVF5OTA4OXNsYkhFTUdneGpJWk8ySmlGSEFPOFJTQ1ZSTWtvUFlrYnpqQm5ScW9xM2p1YW9qM0E0WnZNdkhWaUc2d1RXMzV0RkVBMUMzd1lNalhwRzdVRm5WQW9Ib1RfZXAyUmhnMzN3ZjNXT3BKWWtHQ1FUQjF2ZHlZVk55ZWF0ZXJ4UmxMdUl4QURjdjJKQWJ0dDRteU44QVRFRFN5Njg1V2U2U0RsekZQamR0dlFtVkkwU0hSVjJBbXNpVFVURXF1WTdDWlludnI3UE9jVFFBUWN6TjNyeUltdTVFLU14V2VBWmNGTVRhQ3V1czNzdV9sNmk5R3FGa2R5eFF4TnBVcVh3OXVEbnp0NmxFLVZ0ZDZNa0NORUpyNGExRHNQYVUzRVhQMG5LeGh2el92U1lSVGhXN1ZCTjJycFcxRVo4R0ttbWoxRXhrN2dtOWdpZ18xQzhwdHNYVVY1cFVtZnNra0dCRkpid2pNai1GdG1ORkQ5Sml4emFGR0RPdFRUZXBvSXNVX1VZZXFlYnNfWUpDbXdfZHdxYV9ySkYxc1J5S25UV25HdVdLMGFpWDhIT3dObEhFRG1nbDBxVW9sUVhkakRfcW5iWkpMX0FOaHFoZS0zaDMwYlVGM0JBbTZKLUpCYXpDSHFrb19PQ0YtN2VHLURaUW9wQTVCMHpaWFo0N0I1MzA1OWdvSnlfdjk3T1lrMU8xRkJyR1JWdmQzRUxPczJJWlZZaktsVUNLbGZDSjZId2dWcmJNdUFNVDZXUzlkdGwwb2Z4THJ4QkxYdUY5eVdCeXBOd2dpZjlHOHIyM1NwWWF1OUNObGEyQnBSN1VCSFQzeVMzU2hQV1FkWC1DRWFqVzg2MElmUFM2bXB0NEpqNjdHWFlmVFE5eTF4LXUzVGg1UWxpMW51ZDRYTThhLUhTdmRzTEdJdjZKS0I4Nm16NGR6MEJ0OHl3djZTc3NxYU15UTU1anpXWVhPQnlIRFlmX3lZVXFVS3lRVlR3Mlp4cU1lcG1xUVdBWXd3NXhRcDFFZXhfekw3Uzl6SFE0YzQ2YkJBN2FSeTl0OWhjX3FDSU9kX3oxNGNzVUJnX3R0SUxxZ0h0VVQ1MU85bG5kM3FVR1ZZVDRpTTdsZWhNTzA2bWNUMmg0S1V3RWRKdHJlM1RsMWhDeU9uWGZXTTNwQVNKbHR5RkNwVV9uVmVMZ2RyNEhCY2NKcXZMV3NkQnVWQnJnQzUyZnZKRkQtbDBBa3VIcnQtMW02U00waXRSemE2cGRSaFdKYlVCSlEtaFpLamxWdnY2STBMTkZxcV9hOFpRS1YzOU9zNFpVWll4ZHRTS0VWd1N5dGplRkg5NlgtU3I4Sjk0RGJxUWc2Zi1PMzk0ZFdTM28zT1NTSU93MHh6OWpOaFNlaEEyalBWYWZha05GcGxLTzJUVVlSMHdRZTR3S0ppeTRvbndkal9qZWNwU2tIYlN2Q2MtX3dPVlJoeXhiRzlqc0FycnV1ZWJ2SUJpakM4Y3J5OHlOSDNGNVFHc1czTG5tS1lDVXJiTlYzbVZrSnJFU2pjaUJTYlVvc3RXUUxBUEpLeF9lMGJ4SWNsSWUxTUwweFRrZTk1NmplLTBBdWFpb2tnWDJ0UVN5Si1vSmpTSjF4Zk9OeTIwSi1lYjczQ3Z1eWFSdGVmOG82RFNub1JCZEVlbThBSHdKQjZQNC0wVy15TkE2cFE5LTg3Vm9ERlIxdkNXRXRBX2lwbXNBS3I4MnBJUm9XZnpRWEVOYzZTbnhtWlpZQVpSbjVXc2VBQ2JBckFwdUh2c0ZLbV9nX2xDWnpsbUhubjN2bkh3b0lJWlVZRjVyWnlwV1djaEItR0U1dklLTDIxdXN2dEpWTURQYzhCSkxJTWtvemJvS1VJeklVUTNqNzA1b0I0WVNPVW5Lb1J4bzNBNE9VUzVVczh5eEpnQUNhQ1pYbmN6SDF3OVB6Y0dBV0hTNmtfU2l0UmViOGZyaDRIaVU3aFRoTnNDWGlYOFNnNzg4TnpkSjhabFg3X1pGd2RFZm9UbGY2cU9abkFGd0IwUVJmRjhtVTM1SXZLRkdCbktoTU92V19melRHQUVSYjl0c1RkOEVPN00wandqc01SMDRzWW1DUnVBMk9teHBwVXJPa2hSZ2t0ekxPei1PMV9PVlJKSWs4c2hRWmpyekpxTmVyNHdqdkhvWUZGSGJWYmswaV9zZksyb29nX2lBY2lGejdGZlB5aUIxWmJvYU9leWRLQVlROHRZU3FEYzRUYmRmNDFCeEd1b0J0emxoZS1MVk5BZkdOcWxHZnhpcXNwU2dsQTByNWk3Wk9qZmxWQnhIYl8zVWFKbVYwaTJOUWotYVc0MkFRUTdyNmFpYzUxOVp6ak4wNUFHUXBVdkppbk1PM3ZEc2dxZ1o2ZWVmUzQ5elNEaXJsRmNHQ083Qzh1bG1sWkVfdnVxUWNlWHZ1X3V1WmQ4dklfU3IwamkwMGgwVzdvcURBVHBuaGk2YjBFejZkYnR0NjRlcTExV3BGQW1LeWJ2WXR0RlFseXUtQm5PQXN0S0xaaE5NdDF6NzlpbXpYYXBDN3FRaloySUk5Y1F3SENhazlrS1ZBOXdjbVlEWG5ZbFI2ZF9BbE03d3NuY3RFVkdjcmxtZkZwZkIyOVhMYlN6aVlwN3FueTg1cFBoX25KY2RsUHdnYUZYX1JYQXVDNjNfQUd2WENjdFFSX19FUkJoUmt3VEdkZ2g0NWZpM3RocTJrSXB0ZFliMHJodkJYZmo5UTZsVDBhd3dNcnNaQjJLZXhpR3h1eW1DVVN3RHJWSGhBa3J1Vk03OWtYTnkwNFhfTjVNSzE5SnA0cTBCNUVlR3E4MUFDaHNPdTdkdlRfNEFBbUFuVkJkSE1Hd2Q2V28xOHVWTXRCdkVhR0dFdTJrTlhtOXNkellnSm9CUDE3bXNJWGRQbVBiWFdzamI2bTI4b0g1RERiNGFlSzZPRDRxMG9HU2JTZllKMlVYcVlyQWxhb3FuenY1MnNaMHREWWFsRTR6ZHZfb2hCZUQ5Q3RMcjB3cEloUnMzWm84ekQzT2RLTHdMYkY5bGNYZTBSRmF2bElhMDJfZUNaYng4WEZYdXNzYWVxdFRWOXphaXJmdkUtWXB6d3hGWVVwQUI5TG9oUmkwSVV1Sks5M0FmcnhYVC1mbHlrZjhkSmxLTjRTQzNZdlRaN0tRblFVNUJKbE11aDdWb1lrUnRzSjd2MG9wcGJVNUNJWHhIVC12ZWFqbWh1VXZxcmJNejVOZkFnUy1hX1hQWnc4Q3V4NzVyd2pKQlIzMTNwMUJqOHZYMWkxT2t1amRBR08tQ2Z1ckNaV2dXUmpUMEw1NzlxaXJVVmR2UEpEN2RMNE9pR2dNV1JLQklIRlk1OXdNSi1oaU1WWFpJb2ZyZmZNVzA5UXFGOEVwTm9rRWs4TkNpZC1iTXVhRzdfeXlwMVh6bzIwbGRSOERoa01MYzl0dVJqSkV1QTNwV2pEdHE1eGlnWXJjVkhUUzJBbW1RSUdpNVUzNXVUUUo0ZVdzbnJINThraGlhcGYxV3JjalVNTFVJdE5JVG5xMDdvVVpmTmNHN1NrNDN3RWhtWER0TnJNUmh6YjBNOHlZUkk2UnUzVmZ0WFNPazcxYUpHWDd1dC1tU004TnBLUTBuOEFjSDYzR3pQVUFKYXBmZXRtWE5ndWlkN2ZhVjlaN180d1RxemIzQ2pBTWtoMzhOU3BpNzdBMlNOOTJWMndZbmxWLUotRDRsZ3RvTWJpZGl4Sm9JN2IyX2h3dUVQUzJldEZ4SUtrRGFTbTJ5bW9zaUpQOFh5cFJSeU5ZaVc2a2FBc1pEYUZibUczd2JKQnAzdTJmWk0xOV9ERnZ0SWpoU1o4NVZHSHdQNzFKTGJUZmhmNVVWbTdxZ3F2X0JlNnRuaWdFY19QZ2prZVFOcG5vS0VaQ3RIcEo3UHJDZVdJQU5BTGZhQmR0MG1JTTJHWGxGVmJaUDZJZzc4VzhyVEdsN3ZuS24yRmg0RjJBWXl0azFXbzJzU1piaWVPMGhENTdnSHg5YmZKQldSSHA0OHJHZlZKRWtfeWhqY3BfNEczTWNTZmo4MmRGbWp4VTBfck5EdVRpbFNiT292T3RUdzVNS2JrelJWS2J3VTJnN0Zpc2lSa292b3RNQnhQN1pKekpwM3d0WjdpQ1ppSEZ2WWVyXzNnNHVaaUhOT09uU21pN0RaMXVCN3JBYU1LVF95dGtVS1ZpbmpyVldYN0F6bDhoQVpsYnBUUDlKOUpyd0prb1BwcDR1Z3hvUWN3SUw3dkMySmo1TkE1aHhrMTI1eXFtbkJaWXBlbTJQcFRUMGpJYVZVRnMzTHRfMkNUZktwMk5KZzlWTjQ4UjdzN2lvTzRFajFaRHVoeGxuN0pTSTVUMWdDZHNzV0JWREJXaGU0TXRUYjVLMUlqdzk0LVVJYWhfd09BRG1CdzE2ZlNqN2JfRmFCeUYxWEx2STVLdTlUZk55bEpOazFfRmVqXzhGSjdrVmwxd1NyTEZEZGRKUjZadTlKeUktbDUyZFQ3Q21Ic0ppNW82dkNZZVllYTBKdFZjUTlXdUFSZUZiTzRZX1ItdlVNaFBRVV9IX2IwSnc2ZWpzUHBpRHhJY0ctVFN2UnU4ajRab3ZnZ3FkQ3RINC03Wkh4VkVob0RoZ28zbVZHRkpZY3Zudk5rLXhxLTBIZUtfWlFEcVBlblNLSzVxOUJTMm5FZGhiVFBaQlNuNkdPMEJkMlB4UkF1UW5PR2FWWmY5OEw2UXhKQUZKdktYSElBXzA5cGtRcG9CX1BOMVNPLUFKUEswUnd1T2lBNTVPcVUxSERHRnp5TzVleElxV055bUFod3pwcTE4X1dGQUlUYUx2bmMtSFhCbDV4cWItT0N6MWdQNXlnVDZybDZabW1RRVVyUG5RVmMxajFaRThXUDN1bmppLU03VUJCaW5rUERLaWEzbkh0VkNYR1duN2ZuN1FEY3ZBd1V5NkRtS1BqRGNDa2JtQTJmcUpGSGhpMjJPRF9lOXBlb01mT3AwUnhfcE9IZHVneUlNamdfWmYwVDBJY2xNTkdhVnlqWm5ScW03U2M5eE5hQnMydmJzQTNGOXh3X0R4Q1dGS3NMZmIxczI0ZWZhMjVEUGtReTY1N1p2QlJOVHl3bFhEYTMyRmVXVHZtbjRCcFpPZnpZUFV4Uk5mRFBqbXpTanl5YkNJNUN2R2ZfTmN4ajJUX09ldzY0MDczczlrTC0zbHM1aTIyb1lkeElCMVVMQnJCZU5NOElBSkFNM2tFckJzOGxTTUNmZi05X2l3bTV4V05NY1p5UlJMY3hfN3dwbk5teHdRZlNWQUpkUG1SVW8xWXZ6cVpzNHR6RXlYUXN2a2ZHdUp0S3RNZXl2ZjFYTVVLcklYNFpkaWlOc1BuTHZIUGpSNnpnMnZReWQ3cUZBcDR4enFmd2FqYmJJc3ZkT011b19nQTFqSXNQLWdfOGZKMm03a0x3dkZXZGxFNWZfSU9qbElFZ203cTBoU2lhMHU4UTFmX2Q0end2RlZLZTRHZE1JaTNnS2tYR1kxVFN1QnFJUFB0bGc0TUJMT1QzckpzeURKcEpuQlBsSGNQQmRwYmdOX3NYdFFxYWxEOUVoaThmM01ZQzFISlFuZER2b3V2NXRUc3RfOHpYR0NEc1p2Ui1jclJkRlg1djZMcHEzRzluTzlodTREaTVZbXRmODk1dXMzN19CaU84SkdvOXRuRFR6UWxUaHJsS2xzeThoSTBCeFJLVnNteFpHZmpOUllxSFRpSEtkckxXNlY3Q01pVTB6UGtsTk5rd1JOZDU0RkRDcnZzZTZ5NTlVT082R1dMNE12Z0xlYTFWSk5vVDJuMTRmNmdjN25leFFWclhvb1ltakxGUndLMnY0SkpzVENyYVFaRk5Cb1RVcHFZOEo2S3JOajVnS0tyMTRJOEVOb0tQZ01GWDZIQ0JMWEMzMjloaHE2LTRJQ01iMjNrZEFfaVBmcFg4Smc0OGJsZ2FyRUtmd3dhZEszS0M0S1QwVDFETlFFYkV2N0w5VnVFYkNRY2g5eEtwNWdEcGNZa2Y0UmpNaFpnSndFSEVuNVdzNXlwT0RLOEdEcU1qLUthYURqMUUzNkV3dWpITUt1bzNfdUIyRGVqc3U5N1U2S0wxdUV3MWhRSWpTRnc1TkZWbEVUX0luZFB3TGtEQ2JLMEp3U1pSSDV5Sm1iQlA4aDdUaUIyNW9CRFRUNFN5bEh0UWdLRlpHTF9TM1E0T3dMSE15OXUyZUIwVllObldGbWoxVU9IRG1kWF8yMVBHbVVhOGNzTFI0czd3N2didFIyZkFjUUVYMUEzV0pDc2tSUFU0WlVYRGpjT2VzTm83N2FBT3ozbGYwZE9zSkNRTEw2SEVRZFVjNmJiVzFnSTg2a292QnB5TXFUaklBb1kzZ1dKWF9jOGVGQU9hSlFka2xIRGV0RTVfMzZxV05TVzRsYTZES1loR3hQQVI4Z0d3VzhHS1FITWtlcnlGT0N5VjhMZkttLU1uTWpwV2FGN3FlV3MtQmo1eEREekN6X1F5bzVCRE1VTFBWaTVYLVVtcVNpd0wwMDE5SHFZY0IxZlRYVzF5M2lHd3dSdDFUU3JsaFlFMkdDMXNOakVXTUVOUklQUHN2aU15dlRDRTBYa05xSUtfRTdNa0pGRUFxaGZLNzlDVFUwQVFKRTdrRW12N2prb3Vic1JlWHk1cUlXVnlXR2tFXzBMVkFtM29RTVIzTmFRWTFxSklNNWtCcVg3TVBnMVQzNTFYU2pzVG9PN2p4VmhoWUk1SjhnNHphU25WRW5LbDhvRTZGYVg2WGc3bVlwUWR1ZzM4VTd4c0Y5emNXUUJqOXJXTVpXbndWWEw0M3NIMkFld09rUEM0V0dVOWFGRjd4SmpCTGN4aDR0T0RVZFp5Nlh0Nk5fMHA5bDZaRXNUSFNYZ2lSUE5KenhVQVNOYXhRcV9ZZkpKMGhrZmplZHVhczU5V1ZKWDJOYmpGbGhiZGUxWVN1Rm9nME1LVF9uODE1XzB4VTdLb1dteHNGUW9BWXVtZGhzTkZuWkJwSXkzby1NcGNDNTRXNjBUWV83Q1hYaVZCVjhXQ0x3NnBGOUVOZFRCY2JLX2tuZEZmcFpxMVlieVppZEl0T3lVTjhCZEVUZE5PVElyekwzT2h0X0pPb2JvU25UTWdFMk4ySHM5YWhfd1RkOWNBT3p1di0xRkNOU1ljaG45a184NHV6dk9sYkRBb2NwRFFUb3VyeDBrRVJzdEN5R1VFMVAyS25DWUsxcjNWY2VXakYxc3JmSFRGd1N5b1JjQVo5aXEyelV6QmFsNVJLZ3dtZ3VBMTlOTXNYTWk5bVdab002bmJBOWFNMTVnblFmczJXM25aT1FwaldPREdsaUo3SEJNc1g4cWpCd0JwR2tGY3NNMmsxWlZWOHFHSmVGYmh2RVZLQ2x0a0tENmdNcDZlX2l6UmFKeWRBZGN0ZUJkQVgwN2pINVYtOVhyZTJSdmpXck9iU1Y0S21kRkF3WXpRcm85R3hpLUJNMm4yakp2cElkWFBoME02RVZtd1FQbERmNUo0SGkzRGRUa1ZvRDhfSFY1dkxiMllMQzRiYk44Vk9FS19LV0I0Mi12MmNLVUlReXJQME1sek5icDFFSFBnb0JGdFVaYjhwdUxFQ25kU2paQ0lOaEhZNk1udld2N0h0SFFEUmFIQzlYSmFidXFBR21UNUV5dThYdWdCVjRvX1NtN191bTV3WGdlRy0wOEI0ZElUOFhGYVZjdzhubFcxbzNrYUo3UkZuZi1TeFotMU8yd3VxWFFlai1CNFN0QmFZYlJVbXo4djRWTnVRMW1OOG1xMUFLcHBSU2tsRjNmZjRYY2xNTWRRWFdrV3NXYm1Zbldxb3Q0MHV4eWVlRTZ3Yng5TldDU1htYTdNYko1bUp4ekNaeHpKYVdkYzNBbTl1Y2ZzR3lsaFNRNkRUYXVQV2tKaFRWS1VJRUQzOEJ2LWZDYl95T20wemZkZ2xFZ1c0N3JuME5uQWFEZmIwQWgxa0tiVWhKZWluNGZrOVZQZ1YwbW5lZThQeUN1UmxWMkxYNWJ3ZXNMZ2E0aWVUU0Q2R29kWWZzXzNmNHFDeTlBMGdsbF9qTllleFJWaHgxSFlfc0MxSXNaSnJNTlhvaG1wNWVnZndQZnhDazNuVFlHbVBabUtDcG9IUlRHbHg4NVlMRzk4WDZjdUhERVJCX2RSQjdjTDFGdzVRMEl0YzktdXZLS2ZWTlVzOS1QSTZuQ2FlTUNZQ1VkNkxDUWRVUlJ2NmpaX3N1VFozT3k0bU5NejFMTUduTGxSNnBSbWM3ZmtjNnFxSURUb18tM3NtNF93YUdkbEU4OFRLY3dUVC10R0RBeHhFcnVwQXJPU1QxYzdMMktyWjc5TmZqSVN0NkhuMFdWY2dKNHhXZkZvbmRLa01hb1VPNkpVTkNaeExyaHhUUFlfam9GeWNuYVFxNDNHZU52MGRRYjMzWVpvUmU4UW1tVnUxRURVemNwOWFqSzkwUUg3RTRTZE5uaU5IOUc1c2VtVmZkdFMtOEQ5NEJURURPN193Wm0ycW1QaGhtemI1RHVFcDhsd252dEVmaEVmSlYwRkNRQndQOXRUQmFHajRCVFhBdnNQdkttSGZTRFR6MTlkclZnT1RHSWlkNXEyaGU4VzA0MTlzWFJVNFZFWGNydEpVdFBqdDdib293cEppMHlfQVlUc3VwXzNIZnJCYnE5M0x6QlhSSUkzTUNmYjlxRlEycS0zRDA3V0Jpclp4bk9tTWtOQ0tGM3Y3UUdadEE5TWVWTjBWbDRncDQ5bVBKNFp2RkpPajlhRHNOX2V3RWl6UTdHVERXcGVzYWJFUXlnNk9ibUpTUjNUaUZDSC14T3VqeGRNT0c3RmFSTFN3N19iazJVazRTQmRmX3FnbEUzNlY5bHAzR2oxNklpZ0xvNDRNNmw3dFZ2d3M0dU83bDMzU3N3TE50VzcteTZBYk1teDNQek5PUi05SFNHU01KYzd3aWtKUlgxdVRmQkVFVG9pRTROWHNyeUx0QldUcnhIcjdJTVUtNHE5blhiYUQ5Mjd4NmhXUG92VjloVEd2ZTlUOXlIalBTU3ZQZFNOQmlEVDVQalk1UVYzTU44NDFqX1I1Zm1UVDNOaWhwY0c0Qm14eEJXcnlQR283cGI1cHg0YUxQRkpLeFgzaHJUR1NRYkhpb0xBM3hpMndxMWYtZm5rWWNaYzVxTUEwcGhXM3NqcUlmX0U0MWRwQ0lHR3F5dUJQZ1JhV0JEMEJHVEdEaWhKbTBiVHFaUzhvVWg3eFZxQzdlRXlST0JzZWFWLWdLTHpGZVZTNlN6VFIyWTRZSUc4dlpnYS1oSThFdms0THI2X0tTakdrM2c4SnZzU2VQTmxDNW9BZXJvZFp3bTBheEpfeVdoenZoLVVNcUJHcy1wM3ZvX3ZqNUFvSk5oSUdGbUpieGlhQm9RMWYwcENYQUdRTGlCMFpxVkRpS3BIR0JGTnlzTm5LazNqdjE3Uld4VWktMHdxVXFrenJxNnB4Tkg5enhhYi1XMjlnakdsbjQ1bnIyWjctMHIxb2o1TEdYdXQ0WTM2TE0wN0VfZjVDQ2wyVlhOUGRmTGxVWThqLVo4a1RBUWtpSzFocWV2X2p3dnctNTVUNGhDNU14Ykg2TGFGblJvOGlSZG4yUE8zN2RUSzFvV0k3cDJnaGZLcXBVdkUxaVFYZ19RX2FTZnpVVjd5cWhPNU5iams2b1dUNnUyT1Bwa2Y1U3JUamRodGJmX0lMdVlvZU9NTGVSYjZYZFcyNFh5Q0tJTVBhX2dLeXFuMjZXSl9DSC02TWNzUmlyb2QwUXBsaTAtdlh3OUFkY3JMWExiZ254cU12NmV5V2VPVFVOZHMxejZnelJoc2pwbWEtdERROW8wSVEwdjFDWUQzb3Fxd2YtOUJKMG15OWdOZ0VmZ2lZajJQWVdwM19CM3hkZHVZeS1MVUFrU0s4NE9RXy14ZXRjZk9yZDdRR1h2cGtna3NPWTRVQXptNFZfNk9FNHRfMHl6SXRabmRsVnJoRF8xOHFjS29uUW1WR0d5b213Vk9MLU9MYzFBdkVaQk8tYnE4OWRBR1V4OERSZFBfcm5Iam9VOEItUkxVb3ZBb2lLaEdlT0RvVTJRUUZkRGJKZV92SlVmQ3BmOEExbzduTU81QTM3NDJmNFNKRVlKYW1wSVJpQ0h3MFJ1MGp4bGZoUnVaa3dXZFhQcnZzSlcxMGFKckRPZ2ItcTZZSXNaakZ6cmRBMWw1eTRBdy1mVm9RNXpTcG5BZGw0YmVtdGF6YXdHSVFLZ0Y3RklYeXU2dzNFRzZZSEkwYm5rY2JMU19WZHhVb3piT3RCdUxfUlNGNVI4VVdzMjVLMnlWOXFRcG9DYzZnRHdsUFJtZ0VRSkR4NDZDeEhOeXl0TzNYZ1FEUVZnLVR1UXpKdXc2eHFMdnBYM2xDTk5HQTl3UmxqbGVhX1l1MkQ2d240TVlZamc1dWZfWlRmckllOEFmaHNQNjc2ZHZObGJlMC1IUkNUc2otQVJUMVRFM2lsSUNpM09iWFU3dDlac2RKdlZYeW8yZnJURWxLR0VmXzF0UUlSMDc3VkxzSktmZzMxVUNCNEFjM2xkNU13OUc0eW5lVjZKeHpDNU94b0lYTm14NWhBX2RfTHVrakpRNnRndUMxMjRPZWdEaHcxcVJta3dQZklGc1E4Z0VQSE1wNERraEJwUHJ4MlBSb3U2TTJHU050V2Q4ZHBtQjJSNzNHcGdoTlBWM3FvVGw3bUxnMVJCTHhUcE5Za2t1TVRGMEZMZTVlM3k4cnA5S3hfNlNaanZxTjRuRDJqWkZmLVhmUEZnanBxQl9VYzJfV3ZYTHFSV0lnOHFOendjN0M0anJta09QaXdTeEk3dTJhQ1JiTFF2NUNVcTJ5THY4YXBoeFU0Y2tmbEU5SmVyZFVFdmFhMWhJSnUxREUwVGM1UGJkeUlCN0RRb29ka0hpX2FSSl9HUXhDNzBwWG5UNXhZZ0sxX3NZcFI4UVpLc0NmTzh6X3hrRl9lQWxTOFI0aUhHdUJmLUtFYWpUSWJ0RWlWTGhuVF9fUGg0U0l6dHc1LU1WS2czNTZuUWIxZlY3LUNNQkh6X1BwZk96UUZoMTBRYzZaU1lSd0Y1R2h4OHVjWTNacDVQbG0xS0pBRkpXN3hSQnF5NUItZWhqZkg2Z2llS3EtN3pFVi1rc2hyVjdMUXo4SmEyajY2VFBUVkQzT1E5MGxrNjh1amtSajkwUVZjVUpQRFliRzIyQ1hPN0c5bHBOYTBIQmtYRm5aMFpVNzVkenpnTzduM0VmT2tLdzl4WFRJNEFMclBobTB1Mnd2X1ZWUERNY0RPdGR4ekloYXN3Z2hkN2U1ZlY3Uy03Z3FaekUzTkVwODVQcnR2Wi01cFRQM2pIZE9idzRYRHZiMzAwa19ZSzdEaXVIYXdFbGtqRU45Q0VKdXhjU2dNempqd3FDTUFpRUpleEFTakNoQk5rVzdUclA0cDVFc1U2YWZadzl4amw2OGRuTmprWFRaQUYtdm1tZkNaMFF6NDJYTW5kcW9uREc5Y0pPS1FwS3dUNG9aRnJhVUhxVXVHM3ZpN3pPWVlzTV9tSXdwWFU4bGRFODA4MFY2WmxscU9VTHJjUklGXzkwU0ZsLVBUbmd1aXV4MDhTZXQ1U1JoMmFLVUNJMFRidHVzT2p6MFM1QWtnUjBCN1A3ZlJPZ1FaWnU5T3h6NlVENnFyVUd5N2dZTklsZmFxNTRhdGRtSUNGX2VKMHpPT0dRbUlqVDFXWTIzODNiWHhtZ19xVUlxU2pwY2thenRpQ18zek94N0NUSndHYllzVmtyTXRzekJLcG9Dc3RFeXEyel9Fa3RaUzNCYlhBTTFhWDRwMklfSHVCdm5EWW1Wa2NuaGprSVBjYlpobmJ0SGY5ZzVJSUJMNzE0STBvVWFaLXJ3TDQwWE44NUpCck15UkZxVmxDdHk1Y2lXWE1oWXZlbWxrTzJ4clNQUlRJOUdqbENhNFo4d2RpcjlYZDRLQ0Q5bnZhUG5rNGp3VWJaMTVDUTQtaGZIby03TWlicjgyR2RvbThWNms0TU0tdGNWX2xVbXdoejFYNkxhWEczZWhCVXllR19JMU9XVnRNbE1aM0M5Q1l6VFc5YldHZzdvdlJwV2FfZEhRWktlY0ZrTjYzZmFWMWU2NURqdExsWjVhUWM0NzZtYnRhdTgzUk8zcTFWUTRpcU5JVG9CQVoxOTRrZWlmQ3pnSlZmZk1FTzdxSk1xNTZUUmpFbFI5WmYyXzQ2aWFXb0tsbGFfZjRNTnJ2UTBQcFVtWkNiTUlHNTdiTzhweW1FTDRrLVpXVWZ4bWNmMEp3VWhpeVlSeXY3S3hIVW9mSF9wQks1bmZITmc5Wm1OX1JYa3MyUklkSWN0RkhRVnh2QUVacXJaZEk2WUVodUxGWnhqOEpwTUkzWG5aVlZnalhTekl6MUFZTl9SWVpRaVhzdmpuejVLckwxQlg2YjVvX1phSGg2LU82NWtHdEx1WXBjNk5fUUI3RERaRU1TaS1NcVJEaVNPWDcyeFRmNXlWTG9DVGdyN0JzWnRCTG01MzR2RDZweHFrUzVnSFFvVlozeFVCTDZ3T29WdUY2N3lJZ2x0WlNWdXJJTnlxOFFkalBGbnhkQmNHVjVvQTZMUzVTSWlOMWhUcGZGU0o3R0prLXRiUFNsdnU1RHotTDNrU2pGYzR2V3FpdzJPbU9KTllaMGRzRDdsYlhNdEJ1Mk5WVHZrS2Vtb0FQVjJtTklFamhtbkZTaldIV093a3d3QjZWRll2WHFNZEFZUEVTUWxmTEVwTDZMaTMxM2tOanlONk44Y0RUZXVHWDZKSGF0ZjVsRER1V3FYVnpRNXNwdEZta2ZaNkdITkFHV3k1bzNGYlFkY2REN3NfN2duS0dhLW9fX01RbE05dVc2YnJQZFhEMnI5c0lzTHlfcjNGR1RCZmN1S001QVZjYks2QzI3Z3pZY3d4ZWFsZVJ2dVRsbVV3WXlvSVJveWplb09Sb2RHVVFWS2FQU21ha2g0ajNwLTlud25rczNLUkx4NGxVNTNidkNhMHpkVUdSUGRSZHIyV1IxZ2VrSEhxbFdDc3FSUmVLNWNKYjBxa0hSMEhURXY4ZzMwU2NvRDZ0MGd2LVBMWGs1cmxQWU12emp0VU9qY05McDg2V283dXR4enJrdkVUbmdXUGNjaUJkSkVqMUNKaEE3aTBsMWlPZDQ1MEEzWTNCSURhUXVVam5pVFdRLWotcDlFRlRRX0tPNU5na0xldWtoZ1pQWWh6bTQxY2dxUmtOc3kxcmxpY0l3MzllalVNSWl2aHljVlRPbGlyaHJJMzQxVUtCSlYweXRocVRfWTJvRjVyM09vRDRKR0RsYlBIejBjRE00ckNWU3p2S0pJRmV2VnFWZTZUQXBsUUNiYlRSVWlLclA3TlNZMlJsckJEaEY4ZG0wMmtnOFB5aVBqZjRtSGRzZC1RLUtTd1otWUE1SWljZTVnb0lZd1hLS1JMWDRjTy1BUGdib3NwbWpCX0daQ1A1dWkwcDVuY2lqUm1Nb29LZHhLTm85UjdtTFpyeGg3TUlpVVd5RkZmZ3ROUkhUcjBMYVpnd19OUEZ2V3hEc1VqSGxRbWZXN09vdHU0aWJnVUwwMi1vTmJ1bm1hUlNUcWZuUlVRTi1aOE9wbnVoN1FPanl0aGdiX2w2a3lGNmNwYThMLXk2T0RsS1BrYmNDVVpyZUhGdGlTRlc1NWl5Mm1xMEFNSUlJN3F0Z2syMEFpUXVMZjQ3UzNpeWhaS05qaHJocmRteG1QWUFUV2JoYnBuaTlOSS1HU25rSzhCUnhaV0hvOFVGSmJ6RlRKWTM5clI5NFRmVDktaTBYeXRBUjhuLTByS1NqV2Z4NjJWRHlXc3I0b1V0S1hTSmo2NjRma1R1dVRiWURkbVV3QVIyRi1MWmlpMFFzWENYY2JDZzZfclVYSy12ZWhqSDJOZ0hoSHVLbTBiV1ZZX2EwaHdPaFhJcVN1cEVPRFJOd2VmN3k1WllwZUthd2d5M1pJOURnMVNDR2R5NFNYRHJmSVl6QTFDRGdiQlh3QTBuTXU1Uzk3VXk5RE9tRkJuelhiQnBtd0NZeEtyWGp5NFNSRmVtQjFXckRJdGlYcHU2SE9PbnVELTFGUldkXzFpRUI1ODFlZFp1SE11Vkl1WFdtSHpqT3ZOVHBmUjBhUDN3NGxoalJ5dElXRU5DQUs5OHlidUdPVDhTNTk1U3VFdG8wR3E0RVRmNVh3aVBtY2JMOTlpb1VlWGU0d1lUSnFvTTJ1c1lvdy1IbWpnRXFBZDQzVUVLWF9GVXBzb1VtMEVvOVZldjVaY3pTWlBoNzEtdC1NZVl0NU5qSndmdmYwYzVwMU5LS190OGhEVW5wRlZHeF80LVYzTFF5VFNZazBTZWRfRlFMYUwtekNFSHFZQmEtUFplYU9xS1QzdUQ1OGJtZEd0Q04yRXRJNXI2bk9lTmVJNTJpZ0FJZmhjMDVfNDQxVUY3YklyelV4Ti00UEpkRmZRU1Y5aVNfWDNWOHJtamNaQ0Fycm9yeUtBRjkyYjkyQ3ltalE2VnVfRHhkNmR5Z2RVNDhQZGFYajRIcWd5c3hydmtlNGZ5eC1WbUhQYWZndHpFbUZ0VEFBUmlnUzlicTZjMy0xWEZBWFpjZHUzQWRXY3FCbWNfNGF6OExncmlnQ01Vc2k3Z1k2cE44dUNUTkhPbWFnVmR5cllTSVJKYWRBQnN4YUp2Z0x0eTN3UXJpektWMVZEcUt6dEpYclY0OHRIT1lkcnA5RlhsSXQxcXVSZk1uRDdQMEQ5QWFLaEhMS3NmRUZ6cjJfR0poRkFLdXBXRmt6ZWx3SC1jdi12X2ItVm9NaUFjUnRRZk1BQ2FXY284WE1WQkdhdURvNjU4RktPYUFRajJDMEFBREJkVVVwNlRzSTZ5MnRneXBYdTlIbzJ3TURoVTN2YTlUUDlUaWU5cC1URTVBSVBWNmxFQ21qMDAtTTVmSmdfWm9oVlkxSHprMy16bVUzRWhKOU1oVHNvVWlZUWM1cWxkWWFiV3pJSFZabWVFclQxc1NuZGd0R2MzNEF3d1NZNEZpSlJtd0lUcy1OTGtNMGpFZ1FkSFRabUtBaWtBQ0FIZWNQSEFlUFFiZ1BseWNUMl9JdkFGRlFvcVh6dkQ0Si1QdUFNVWNEUlN3U0VjRTVKeUZ0dDZYQXIwd1B5YmtxaFphLWJjX19kMG0xek4xWHR1NEpMcG8yUEp0aHJpZlMwT2JCTlJhU25WSmpXY0ozQUhVd0t2aWd2T0JRR1FHdi1vSkVVLWNPQ05zUEdsMC1LanpjUmRfMF96bWZ0VDRPLXV5eUVxMk1RVEJBbTlCLVVodE5lbGR5Wm5TMVZsWUF0NUJBeFJHNmItMHZ0ZXVyN181bl9hMmNaVTktX0xjbXNQd1VCenB5bXhidzlFQ2VtLXA2bEpZTnpUdXQ2UVkwVHNvdFRWLVF5RVpjbHpPMTFuNy0tWDhOZG82UmtEZ1h4NmRueVJqb3B4ZHh1Q2xJY0l0SDhVOGlwYTZXeGJsTEdDbjVrNmNweHo3ai03bTRHR20ySld6Y2lTa2pLdkk1cFRfaHBxSUlxcWU5QmIzQ0xOR084Yk50Z3l4VHlYbUJpQkNUTVBzYjZaNnlCY3owR2NiYjI2MVNQTGRCWnVGR2JFTzV3N0EzaW5xbXp6cFpGUEt2MDlBbXBrM1owbjJaaWlMX1YxcU5XUDAzQlR4blFBaFVPZjAybEN0dEtKTld3V1BDbkhRdE5LenNNY3BwN3o2T1NUZkNESTJ4V1VhRkF1V3ZNczdWQnhKQ1BTdGxzXzFqMXpvQWtkRHRKTEFTNjc2LUVQRUhRSnJlNVpfNWlqb29XSzRzLXRGalZqWC1xdkoyWFBGaWlXSlVucl90RXZzSEc0Y0h4SVFIcDlESkVBNDRNZTVLQ1JCYjQ5NG5VM25RUE9OWWhPWG1aVEhlbTNjUXFDNnJxTGE1QThoTG1pX1VoamlfVUs5YlJIU00xWHFsMkpqUzFkcWI5eTFNRGRhSnNOd0Q3TllGSnpyaVlDSy1QREFDRElXanlSdjhzcG94ek53ZjY3cktObHRvYkhjQk9YaktZWWVjM3R1ekwwUmVxR0lzWFJWOEw2TndNNTliRWgwQ2FDOGZhbV9Wd3lRNy02MlVTcWRFYl9kdWdOWjlyU2xCd05UYzAxRnp5N1A2cjk3Q2x4azZCbm5FVHFZanpaVUpweXE2RmtKMHNhNXgwcUNOaXI0UTBqZ3pCQzIyUG9NQVhxMm9aS2VtNXg0aGxncUY4VlpNZXVmMlpkTVZXWXduUzdZWmRWNlBaYnRMZ3d1eU10aWotbXFJMVVTQmN6cVF6cFVpUTRTWHo4aWtnbDZKU2hMUVJVM2dDVWFRT1ZiVWVsRnFDYUZhX2t3YXJZbkJKRzRrQ2t0RTNrSkM0TUwzdzNuUDcyMXNCUkxMQjNiWC12blgtMlExRWViUUhXY25VZ0l6ME1lMmdNQ21CMUVuLVJQSUdlU2RweU9RN2xRN3daeWlnLUtIWS1JSVhfOVV5dE1qRF85SXc2azJBQW1oUXQ5MHpqN013amViTERNTlJ4M1d0V08tazUxUUVmbm96WjJrVmZ3Yi1IX2wtdGhKNk1IMG9tQUpCNHpxUUEuMzBEWlotQUR2SzBpMXUwRjBuY0VfQQ\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:37 GMT", + "date" : "Mon, 25 Jun 2018 19:43:59 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0c16f8f2-2d59-457f-87a4-76ad1cff5ae4", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539357,\"scheduledPurgeDate\":1528315357,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/cfafbccc14bc46f2814d75f6944ce8b0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"3gSbCxEf9tZg-WBzbwWPZ5kGPbO1QxARdEaJWmfh4BImRY9mm6gTX2R6xN8V1ILIsrb7fSRjSSWQURlrD9MrLddAMicgCQEIKcaFxToGJkLC2BChTYaZQlcWWy2fBp7DMVdFHJ074PcVozgxjcyTRLUJLzdIE2nvDsW4JVaP3fHUkGhJb3CEsNjDVlArpeKhNqhB4Z14_BJs4qOBiu-yZehjcKYMUxv_2uPgfbAtsc9k6Dst8KykYF4YCHOU8Swgjd8y7VZsGDZXyp4wuOj_EsD2LDuFc07Gf5EBtXYaTOS2QhL6XTRrqg7nBQAe06VLQ8cmKTrzzYNhe1pH48U7TQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539336,\"updated\":1520539336,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a5a05b7a-4261-465b-8196-a0c2e9bfd445", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529955839,\"scheduledPurgeDate\":1537731839,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/455c7272682d4de689881f179e63e20b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"qku3i9yaW1__0KD9WU8RYfR8BNea95TPuoEYwMQwp6iiPjS7UeVJIkbRskI_9A9S54xK-t8eZbCNGnTgEF4fFWu6s1CSxnAx3iOvxwpoB5nxgMWuMIHsjUfDbGGqHLrf7wH_nFpXyt_W5PqR095ujz4967fOoVwY04SXa3tTxGAxRve4sABMi5sZ2lT1sSaf-ItwEjs9ntCL5eV4PYAF4xzqUgWxZc0pjUegCqnfNDnmTGM88t7TH72EqjCoB2tkcSoETer107aGteEmzGOEERFVFVvzyrSRsoiBmvCjsYkyv4gnicnE1-tZeW6-7GU5cxMm_f-RMGJwdsgH6yZVxQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955815,\"updated\":1529955815,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:37 GMT", + "date" : "Mon, 25 Jun 2018 19:44:00 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3c64d59e-d3f0-4a23-9f88-3c66910f3ac9", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a16605f1-d5e7-45f9-a172-7720a2928bec", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:47 GMT", + "date" : "Mon, 25 Jun 2018 19:44:15 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,22 +154,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "76df5805-542f-465d-bd1c-5ea22e028726", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539357,\"scheduledPurgeDate\":1528315357,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/cfafbccc14bc46f2814d75f6944ce8b0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"3gSbCxEf9tZg-WBzbwWPZ5kGPbO1QxARdEaJWmfh4BImRY9mm6gTX2R6xN8V1ILIsrb7fSRjSSWQURlrD9MrLddAMicgCQEIKcaFxToGJkLC2BChTYaZQlcWWy2fBp7DMVdFHJ074PcVozgxjcyTRLUJLzdIE2nvDsW4JVaP3fHUkGhJb3CEsNjDVlArpeKhNqhB4Z14_BJs4qOBiu-yZehjcKYMUxv_2uPgfbAtsc9k6Dst8KykYF4YCHOU8Swgjd8y7VZsGDZXyp4wuOj_EsD2LDuFc07Gf5EBtXYaTOS2QhL6XTRrqg7nBQAe06VLQ8cmKTrzzYNhe1pH48U7TQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539336,\"updated\":1520539336,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "56c0a533-9b4d-4046-ab33-c117b2aa058f", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529955839,\"scheduledPurgeDate\":1537731839,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/455c7272682d4de689881f179e63e20b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"qku3i9yaW1__0KD9WU8RYfR8BNea95TPuoEYwMQwp6iiPjS7UeVJIkbRskI_9A9S54xK-t8eZbCNGnTgEF4fFWu6s1CSxnAx3iOvxwpoB5nxgMWuMIHsjUfDbGGqHLrf7wH_nFpXyt_W5PqR095ujz4967fOoVwY04SXa3tTxGAxRve4sABMi5sZ2lT1sSaf-ItwEjs9ntCL5eV4PYAF4xzqUgWxZc0pjUegCqnfNDnmTGM88t7TH72EqjCoB2tkcSoETer107aGteEmzGOEERFVFVvzyrSRsoiBmvCjsYkyv4gnicnE1-tZeW6-7GU5cxMm_f-RMGJwdsgH6yZVxQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955815,\"updated\":1529955815,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:47 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:44:17 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -173,23 +179,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b8c22c13-c8bf-468d-baa4-af3253f0247d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c60a52e1-d704-4a02-bcf9-c92f3f21ccb2", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/restore?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/restore?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:28 GMT", + "date" : "Mon, 25 Jun 2018 19:44:59 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -199,11 +206,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bbe2688c-8410-4f19-8478-aaa3b2e670d3", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/cfafbccc14bc46f2814d75f6944ce8b0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"3gSbCxEf9tZg-WBzbwWPZ5kGPbO1QxARdEaJWmfh4BImRY9mm6gTX2R6xN8V1ILIsrb7fSRjSSWQURlrD9MrLddAMicgCQEIKcaFxToGJkLC2BChTYaZQlcWWy2fBp7DMVdFHJ074PcVozgxjcyTRLUJLzdIE2nvDsW4JVaP3fHUkGhJb3CEsNjDVlArpeKhNqhB4Z14_BJs4qOBiu-yZehjcKYMUxv_2uPgfbAtsc9k6Dst8KykYF4YCHOU8Swgjd8y7VZsGDZXyp4wuOj_EsD2LDuFc07Gf5EBtXYaTOS2QhL6XTRrqg7nBQAe06VLQ8cmKTrzzYNhe1pH48U7TQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539336,\"updated\":1520539336,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "36f35fa3-2f4a-4a9c-a7c2-ba32e1d6e430", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/455c7272682d4de689881f179e63e20b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"qku3i9yaW1__0KD9WU8RYfR8BNea95TPuoEYwMQwp6iiPjS7UeVJIkbRskI_9A9S54xK-t8eZbCNGnTgEF4fFWu6s1CSxnAx3iOvxwpoB5nxgMWuMIHsjUfDbGGqHLrf7wH_nFpXyt_W5PqR095ujz4967fOoVwY04SXa3tTxGAxRve4sABMi5sZ2lT1sSaf-ItwEjs9ntCL5eV4PYAF4xzqUgWxZc0pjUegCqnfNDnmTGM88t7TH72EqjCoB2tkcSoETer107aGteEmzGOEERFVFVvzyrSRsoiBmvCjsYkyv4gnicnE1-tZeW6-7GU5cxMm_f-RMGJwdsgH6yZVxQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955815,\"updated\":1529955815,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/certificateAsyncForAsyncOperationsTest.json b/azure-keyvault/target/test-classes/session-records/certificateAsyncForAsyncOperationsTest.json index 379788d..a755f2e 100644 --- a/azure-keyvault/target/test-classes/session-records/certificateAsyncForAsyncOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/certificateAsyncForAsyncOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:06 GMT", + "date" : "Mon, 25 Jun 2018 19:29:35 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9f3c5d18-a22e-42f4-bcba-baaf6d0d3911", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "32c0e835-6639-407a-887b-55d7a99cfe02", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:07 GMT", + "date" : "Mon, 25 Jun 2018 19:29:42 GMT", "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,24 +46,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0-preview&request_id=ea185859713d41418f69b4ce3b35a29e", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0&request_id=1467d262e27646ba81aeb6788a2e2836", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "94785777-d5d3-4a9f-95f7-d2fd7f5d280a", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgIRIJB9Ud8x54eW/c0C8e7l92mNvrJAX5RK5fKwsYaAqSn4ALxpd/7tO1jfjFyNzU8klh+XUWvMXMSdQwueMfpx86nGvsAOSPKzjd7lthAEWIiIgGs8Ey/eOmjkZV/ho2r0mIyUqQdYo6yoAzUccXKRH0p/ZIz51jUu5JJmLb/Z/jTncpvFnEFR39OdA/1CW0uabi/2o7hVBrp2D30l2OY7f/aQ4zFXzmLjqnbDHPdoVYFEmaSvGVC3H9UEh/Y6aMqaIQ9Lz+uC0hxO6D/vHhip/c81SssDLANzfbVMWSfq2xDMA3mfaDAlpPYgzDBuDDuwWXgeGuQQA4+DdfQxmLAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAkeEF5lhbL/KFcR0BTIZAblUDCmqPGPs2PsOoHqkm2sYlaL5VFjRt0kF6yL0QpDMWj6H4DIWDKnyFBOW9E/nC1l5BiD9ZHJRG1t6oORpngwjxjrGA9YDw/A2YFsKvzKwtLS6mV47TYNV/8tNswPmt06sMw9r392+VDExkRn8urMqO7Xfb5sAIAdBpEBHQC1LzAEvEb79/RLwnnsySxldR1gOkqXQkEzj2ToBBL/WwyEpwPOiehJ2rtkN3/J1QwcDdvh4HwQR8h2rXUiFVZJGvlkJnMQwtcC61Q+PPQ2eN8B0YzMZ3RkviItlpRY/bGy2t6c0r0erNJ/Z+qCm+2d18xw==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"ea185859713d41418f69b4ce3b35a29e\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "35e4c58b-ec7b-46b0-a726-021af68a174b", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQad3jP4PkyVlCQcKvtvXDlttXZi2AkgKRNvBPJ27zSUVyydlRdx6VWkQ+1D5XfHkPqDJEDtLa6wbeEc45F5kyUltSLBHSGxR30wyZoJQ6dOyTK1SfB27gjgubyGvuCXhSDTRDXQrMUzOyrKfCnAtrpeWG66ZQMgs0+eK3jKhBYXvntvH4bzO/DgwXmsgCcxF5Hm0EnS97OJKoTGIui9xqRJb75h2hd0T8iH1z6gSrVscZopSW44Wa5TRAwg2sXUWmVJ8pRUjhFNi/KnNqpHok2YA4O4tP0SRicVKD0QF49PPMfZbLGnOZC/nX1lHXu6xwf8DCn5VWDr9InlbUP4jXAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAXNgndkYMb6pkEIfdQc368g43LlJ2EGkcUD5nWrpmlh4w5o8CFHp7NrM4dyAiuryKLz132pS2EcKllc25sBS0zs6LUpnSaDflku+17TuQ+yTU5/2UOFcar9i5Kzrh3WVCcvjgx5ke1WpGLzzxg65k8UKCOYt2/eCyuQT5JtO+r4/lmmPYDcHjGnsuQ17CdJk799dET7myR36EV0MXQ2Y3HUYEpmHFyGNLtXCvkBuVqcKmX55N+PuLZoh8XTSEdCuOasgjVMXMt/Tnui7Xtz5+ygH9uXPDV0MfaTkbEXTTDn6vEpbBH0O5w71NmqY21yNRF4kv6eCxi9qaifjWbaFD+Q==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"1467d262e27646ba81aeb6788a2e2836\"}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:07 GMT", + "date" : "Mon, 25 Jun 2018 19:29:43 GMT", "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -72,23 +74,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a34dbdab-2fae-4a82-ba2f-94328930d2d6", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgIRIJB9Ud8x54eW/c0C8e7l92mNvrJAX5RK5fKwsYaAqSn4ALxpd/7tO1jfjFyNzU8klh+XUWvMXMSdQwueMfpx86nGvsAOSPKzjd7lthAEWIiIgGs8Ey/eOmjkZV/ho2r0mIyUqQdYo6yoAzUccXKRH0p/ZIz51jUu5JJmLb/Z/jTncpvFnEFR39OdA/1CW0uabi/2o7hVBrp2D30l2OY7f/aQ4zFXzmLjqnbDHPdoVYFEmaSvGVC3H9UEh/Y6aMqaIQ9Lz+uC0hxO6D/vHhip/c81SssDLANzfbVMWSfq2xDMA3mfaDAlpPYgzDBuDDuwWXgeGuQQA4+DdfQxmLAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAkeEF5lhbL/KFcR0BTIZAblUDCmqPGPs2PsOoHqkm2sYlaL5VFjRt0kF6yL0QpDMWj6H4DIWDKnyFBOW9E/nC1l5BiD9ZHJRG1t6oORpngwjxjrGA9YDw/A2YFsKvzKwtLS6mV47TYNV/8tNswPmt06sMw9r392+VDExkRn8urMqO7Xfb5sAIAdBpEBHQC1LzAEvEb79/RLwnnsySxldR1gOkqXQkEzj2ToBBL/WwyEpwPOiehJ2rtkN3/J1QwcDdvh4HwQR8h2rXUiFVZJGvlkJnMQwtcC61Q+PPQ2eN8B0YzMZ3RkviItlpRY/bGy2t6c0r0erNJ/Z+qCm+2d18xw==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"ea185859713d41418f69b4ce3b35a29e\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5ded8260-502c-4716-ae66-712a52ba9a63", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQad3jP4PkyVlCQcKvtvXDlttXZi2AkgKRNvBPJ27zSUVyydlRdx6VWkQ+1D5XfHkPqDJEDtLa6wbeEc45F5kyUltSLBHSGxR30wyZoJQ6dOyTK1SfB27gjgubyGvuCXhSDTRDXQrMUzOyrKfCnAtrpeWG66ZQMgs0+eK3jKhBYXvntvH4bzO/DgwXmsgCcxF5Hm0EnS97OJKoTGIui9xqRJb75h2hd0T8iH1z6gSrVscZopSW44Wa5TRAwg2sXUWmVJ8pRUjhFNi/KnNqpHok2YA4O4tP0SRicVKD0QF49PPMfZbLGnOZC/nX1lHXu6xwf8DCn5VWDr9InlbUP4jXAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAXNgndkYMb6pkEIfdQc368g43LlJ2EGkcUD5nWrpmlh4w5o8CFHp7NrM4dyAiuryKLz132pS2EcKllc25sBS0zs6LUpnSaDflku+17TuQ+yTU5/2UOFcar9i5Kzrh3WVCcvjgx5ke1WpGLzzxg65k8UKCOYt2/eCyuQT5JtO+r4/lmmPYDcHjGnsuQ17CdJk799dET7myR36EV0MXQ2Y3HUYEpmHFyGNLtXCvkBuVqcKmX55N+PuLZoh8XTSEdCuOasgjVMXMt/Tnui7Xtz5+ygH9uXPDV0MfaTkbEXTTDn6vEpbBH0O5w71NmqY21yNRF4kv6eCxi9qaifjWbaFD+Q==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"1467d262e27646ba81aeb6788a2e2836\"}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:08 GMT", + "date" : "Mon, 25 Jun 2018 19:29:44 GMT", "content-length" : "1015", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,23 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0a448b16-479d-43ed-9a7f-2c319ed68085", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/0e975c19de66430682aa0042fb6d8e1b\",\"attributes\":{\"enabled\":false,\"nbf\":1520448906,\"exp\":1551985506,\"created\":1520449506,\"updated\":1520449508,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"tag1\":\"foo\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449508}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "722fe63c-c416-430b-a3b2-75ca509a3412", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/4f2513eef39f4a93a425f1e35ab20d8d\",\"attributes\":{\"enabled\":false,\"nbf\":1529954381,\"exp\":1561490981,\"created\":1529954982,\"updated\":1529954985,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"tag1\":\"foo\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954985}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:08 GMT", + "date" : "Mon, 25 Jun 2018 19:29:48 GMT", "content-length" : "620", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,23 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "aae3e87a-2b15-4980-9430-adc6f88d1700", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449509}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a6be14d2-da59-49aa-b2e7-fdd56a72cbfb", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954988}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:08 GMT", + "date" : "Mon, 25 Jun 2018 19:29:49 GMT", "content-length" : "620", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "2b8b1580-a0c6-409e-876f-e7f3db2534e3", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449509}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "075c16f3-2251-4f88-b68a-be34168aeb4e", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954988}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:09 GMT", + "date" : "Mon, 25 Jun 2018 19:29:50 GMT", "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,23 +182,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "09c7a2c3-0025-4f1c-9fe7-8024ae9e6370", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgIRIJB9Ud8x54eW/c0C8e7l92mNvrJAX5RK5fKwsYaAqSn4ALxpd/7tO1jfjFyNzU8klh+XUWvMXMSdQwueMfpx86nGvsAOSPKzjd7lthAEWIiIgGs8Ey/eOmjkZV/ho2r0mIyUqQdYo6yoAzUccXKRH0p/ZIz51jUu5JJmLb/Z/jTncpvFnEFR39OdA/1CW0uabi/2o7hVBrp2D30l2OY7f/aQ4zFXzmLjqnbDHPdoVYFEmaSvGVC3H9UEh/Y6aMqaIQ9Lz+uC0hxO6D/vHhip/c81SssDLANzfbVMWSfq2xDMA3mfaDAlpPYgzDBuDDuwWXgeGuQQA4+DdfQxmLAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAkeEF5lhbL/KFcR0BTIZAblUDCmqPGPs2PsOoHqkm2sYlaL5VFjRt0kF6yL0QpDMWj6H4DIWDKnyFBOW9E/nC1l5BiD9ZHJRG1t6oORpngwjxjrGA9YDw/A2YFsKvzKwtLS6mV47TYNV/8tNswPmt06sMw9r392+VDExkRn8urMqO7Xfb5sAIAdBpEBHQC1LzAEvEb79/RLwnnsySxldR1gOkqXQkEzj2ToBBL/WwyEpwPOiehJ2rtkN3/J1QwcDdvh4HwQR8h2rXUiFVZJGvlkJnMQwtcC61Q+PPQ2eN8B0YzMZ3RkviItlpRY/bGy2t6c0r0erNJ/Z+qCm+2d18xw==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"ea185859713d41418f69b4ce3b35a29e\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "33b58829-6c12-48b6-b70f-8b4a12b23ed8", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQad3jP4PkyVlCQcKvtvXDlttXZi2AkgKRNvBPJ27zSUVyydlRdx6VWkQ+1D5XfHkPqDJEDtLa6wbeEc45F5kyUltSLBHSGxR30wyZoJQ6dOyTK1SfB27gjgubyGvuCXhSDTRDXQrMUzOyrKfCnAtrpeWG66ZQMgs0+eK3jKhBYXvntvH4bzO/DgwXmsgCcxF5Hm0EnS97OJKoTGIui9xqRJb75h2hd0T8iH1z6gSrVscZopSW44Wa5TRAwg2sXUWmVJ8pRUjhFNi/KnNqpHok2YA4O4tP0SRicVKD0QF49PPMfZbLGnOZC/nX1lHXu6xwf8DCn5VWDr9InlbUP4jXAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAXNgndkYMb6pkEIfdQc368g43LlJ2EGkcUD5nWrpmlh4w5o8CFHp7NrM4dyAiuryKLz132pS2EcKllc25sBS0zs6LUpnSaDflku+17TuQ+yTU5/2UOFcar9i5Kzrh3WVCcvjgx5ke1WpGLzzxg65k8UKCOYt2/eCyuQT5JtO+r4/lmmPYDcHjGnsuQ17CdJk799dET7myR36EV0MXQ2Y3HUYEpmHFyGNLtXCvkBuVqcKmX55N+PuLZoh8XTSEdCuOasgjVMXMt/Tnui7Xtz5+ygH9uXPDV0MfaTkbEXTTDn6vEpbBH0O5w71NmqY21yNRF4kv6eCxi9qaifjWbaFD+Q==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"1467d262e27646ba81aeb6788a2e2836\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:09 GMT", - "content-length" : "1015", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:29:53 GMT", + "content-length" : "2374", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -202,23 +209,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fbec32c1-e6d6-484b-aa74-24f888391a61", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/0e975c19de66430682aa0042fb6d8e1b\",\"attributes\":{\"enabled\":false,\"nbf\":1520448906,\"exp\":1551985506,\"created\":1520449506,\"updated\":1520449508,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"tag1\":\"foo\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449509}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dcf5ad7b-d84d-422e-948a-c11ff985d02e", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"x5t\":\"UBe7YKmzM8Ch8p9KqhB8SPrwDdM\",\"cer\":\"MIIDRDCCAiygAwIBAgIQZCRvTHNcT5iFZGiCQhlTyzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUxOTE5NTFaFw0xOTA2MjUxOTI5NTFaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Gnd4z+D5MlZQkHCr7b1w5bbV2YtgJICkTbwTydu80lFcsnZUXcelVpEPtQ+V3x5D6gyRA7S2usG3hHOOReZMlJbUiwR0hsUd9MMmaCUOnTskytUnwdu4I4Lm8hr7gl4Ug00Q10KzFMzsqynwpwLa6XlhuumUDILNPnit4yoQWF757bx+G8zvw4MF5rIAnMReR5tBJ0veziSqExiLovcakSW++YdoXdE/Ih9c+oEq1bHGaKUluOFmuU0QMINrF1FplSfKUVI4RTYvypzaqR6JNmAODuLT9EkYnFSg9EBePTzzH2WyxpzmQv519ZR17uscH/Awp+VVg6/SJ5W1D+I1wIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUx9BFWEOHHtKR3C9HWKNDv+oJLs4wHQYDVR0OBBYEFMfQRVhDhx7SkdwvR1ijQ7/qCS7OMA0GCSqGSIb3DQEBCwUAA4IBAQClzKpxj4+uVfOv4FhCVS5pGNdZ1TxEdjaOKQ0xVdInJ8AgjZL9miUDcF4yAOfyqO93hu8Rtjw+sIQmuIsOw3LaDr3RgOB2bJAlxxy8iHWTpXug5lQS4zkOoH6DwV4rnYtDVZkYwSgnXVgH14bmmMfcYJJpjHdZnTxiRTlXTlW4+0qoyCyHfUBoIIL2FXOxdW2C8mhGB9mWOQIo+/cuD329F3e4xuPHHFx8PXNwEnZc8YiqCdcxnG9xcvf3ToGAnvMteEE5zwWFVmsCjCC0CCBEUDhHJGKr9qQBiuj3GK0IqHqDIVMAMyVAeu7RlWDezdl10E1JS7RGuA/5TqqA4CPt\",\"attributes\":{\"enabled\":true,\"nbf\":1529954391,\"exp\":1561490991,\"created\":1529954991,\"updated\":1529954991,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954988}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:09 GMT", + "date" : "Mon, 25 Jun 2018 19:29:56 GMT", "content-length" : "924", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -228,23 +236,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/pkcs10; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d9e64089-a1a6-4025-8ce6-c5eeb41ed68c", - "Body" : "MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgIRIJB9Ud8x54eW/c0C8e7l92mNvrJAX5RK5fKwsYaAqSn4ALxpd/7tO1jfjFyNzU8klh+XUWvMXMSdQwueMfpx86nGvsAOSPKzjd7lthAEWIiIgGs8Ey/eOmjkZV/ho2r0mIyUqQdYo6yoAzUccXKRH0p/ZIz51jUu5JJmLb/Z/jTncpvFnEFR39OdA/1CW0uabi/2o7hVBrp2D30l2OY7f/aQ4zFXzmLjqnbDHPdoVYFEmaSvGVC3H9UEh/Y6aMqaIQ9Lz+uC0hxO6D/vHhip/c81SssDLANzfbVMWSfq2xDMA3mfaDAlpPYgzDBuDDuwWXgeGuQQA4+DdfQxmLAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAkeEF5lhbL/KFcR0BTIZAblUDCmqPGPs2PsOoHqkm2sYlaL5VFjRt0kF6yL0QpDMWj6H4DIWDKnyFBOW9E/nC1l5BiD9ZHJRG1t6oORpngwjxjrGA9YDw/A2YFsKvzKwtLS6mV47TYNV/8tNswPmt06sMw9r392+VDExkRn8urMqO7Xfb5sAIAdBpEBHQC1LzAEvEb79/RLwnnsySxldR1gOkqXQkEzj2ToBBL/WwyEpwPOiehJ2rtkN3/J1QwcDdvh4HwQR8h2rXUiFVZJGvlkJnMQwtcC61Q+PPQ2eN8B0YzMZ3RkviItlpRY/bGy2t6c0r0erNJ/Z+qCm+2d18xw==" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cee7ef82-32b7-4d06-9da3-708c7fdff1b7", + "Body" : "MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQad3jP4PkyVlCQcKvtvXDlttXZi2AkgKRNvBPJ27zSUVyydlRdx6VWkQ+1D5XfHkPqDJEDtLa6wbeEc45F5kyUltSLBHSGxR30wyZoJQ6dOyTK1SfB27gjgubyGvuCXhSDTRDXQrMUzOyrKfCnAtrpeWG66ZQMgs0+eK3jKhBYXvntvH4bzO/DgwXmsgCcxF5Hm0EnS97OJKoTGIui9xqRJb75h2hd0T8iH1z6gSrVscZopSW44Wa5TRAwg2sXUWmVJ8pRUjhFNi/KnNqpHok2YA4O4tP0SRicVKD0QF49PPMfZbLGnOZC/nX1lHXu6xwf8DCn5VWDr9InlbUP4jXAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAXNgndkYMb6pkEIfdQc368g43LlJ2EGkcUD5nWrpmlh4w5o8CFHp7NrM4dyAiuryKLz132pS2EcKllc25sBS0zs6LUpnSaDflku+17TuQ+yTU5/2UOFcar9i5Kzrh3WVCcvjgx5ke1WpGLzzxg65k8UKCOYt2/eCyuQT5JtO+r4/lmmPYDcHjGnsuQ17CdJk799dET7myR36EV0MXQ2Y3HUYEpmHFyGNLtXCvkBuVqcKmX55N+PuLZoh8XTSEdCuOasgjVMXMt/Tnui7Xtz5+ygH9uXPDV0MfaTkbEXTTDn6vEpbBH0O5w71NmqY21yNRF4kv6eCxi9qaifjWbaFD+Q==" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:10 GMT", - "content-length" : "939", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:29:57 GMT", + "content-length" : "252", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -254,23 +263,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c47c8b2d-5c05-492d-9fa0-9072ae22737e", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036639,\"updated\":1520036639}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036640,\"updated\":1520036640}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "648d9c96-9cfe-4fd0-8edc-11ce4a9d72b1", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate\",\"x5t\":\"UBe7YKmzM8Ch8p9KqhB8SPrwDdM\",\"attributes\":{\"enabled\":true,\"nbf\":1529954391,\"exp\":1561490991,\"created\":1529954991,\"updated\":1529954991}}],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/versions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/versions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:10 GMT", - "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:29:59 GMT", + "content-length" : "285", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -280,23 +290,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4cd1c5fc-d5b7-4b22-bc5c-a48bbac859f9", - "Body" : "{\"value\":[],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5da85fe1-4055-455e-b4c8-d6002ef97e72", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"x5t\":\"UBe7YKmzM8Ch8p9KqhB8SPrwDdM\",\"attributes\":{\"enabled\":true,\"nbf\":1529954391,\"exp\":1561490991,\"created\":1529954991,\"updated\":1529954991}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:10 GMT", - "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:30:02 GMT", + "content-length" : "1233", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -306,23 +317,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c0238cec-58af-466f-87d1-ceaefe7795f8", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDgIRIJB9Ud8x54eW/c0C8e7l92mNvrJAX5RK5fKwsYaAqSn4ALxpd/7tO1jfjFyNzU8klh+XUWvMXMSdQwueMfpx86nGvsAOSPKzjd7lthAEWIiIgGs8Ey/eOmjkZV/ho2r0mIyUqQdYo6yoAzUccXKRH0p/ZIz51jUu5JJmLb/Z/jTncpvFnEFR39OdA/1CW0uabi/2o7hVBrp2D30l2OY7f/aQ4zFXzmLjqnbDHPdoVYFEmaSvGVC3H9UEh/Y6aMqaIQ9Lz+uC0hxO6D/vHhip/c81SssDLANzfbVMWSfq2xDMA3mfaDAlpPYgzDBuDDuwWXgeGuQQA4+DdfQxmLAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAkeEF5lhbL/KFcR0BTIZAblUDCmqPGPs2PsOoHqkm2sYlaL5VFjRt0kF6yL0QpDMWj6H4DIWDKnyFBOW9E/nC1l5BiD9ZHJRG1t6oORpngwjxjrGA9YDw/A2YFsKvzKwtLS6mV47TYNV/8tNswPmt06sMw9r392+VDExkRn8urMqO7Xfb5sAIAdBpEBHQC1LzAEvEb79/RLwnnsySxldR1gOkqXQkEzj2ToBBL/WwyEpwPOiehJ2rtkN3/J1QwcDdvh4HwQR8h2rXUiFVZJGvlkJnMQwtcC61Q+PPQ2eN8B0YzMZ3RkviItlpRY/bGy2t6c0r0erNJ/Z+qCm+2d18xw==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"ea185859713d41418f69b4ce3b35a29e\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "045bbcee-8c97-4ff5-a7fd-c0dff11302aa", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDQad3jP4PkyVlCQcKvtvXDlttXZi2AkgKRNvBPJ27zSUVyydlRdx6VWkQ+1D5XfHkPqDJEDtLa6wbeEc45F5kyUltSLBHSGxR30wyZoJQ6dOyTK1SfB27gjgubyGvuCXhSDTRDXQrMUzOyrKfCnAtrpeWG66ZQMgs0+eK3jKhBYXvntvH4bzO/DgwXmsgCcxF5Hm0EnS97OJKoTGIui9xqRJb75h2hd0T8iH1z6gSrVscZopSW44Wa5TRAwg2sXUWmVJ8pRUjhFNi/KnNqpHok2YA4O4tP0SRicVKD0QF49PPMfZbLGnOZC/nX1lHXu6xwf8DCn5VWDr9InlbUP4jXAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAXNgndkYMb6pkEIfdQc368g43LlJ2EGkcUD5nWrpmlh4w5o8CFHp7NrM4dyAiuryKLz132pS2EcKllc25sBS0zs6LUpnSaDflku+17TuQ+yTU5/2UOFcar9i5Kzrh3WVCcvjgx5ke1WpGLzzxg65k8UKCOYt2/eCyuQT5JtO+r4/lmmPYDcHjGnsuQ17CdJk799dET7myR36EV0MXQ2Y3HUYEpmHFyGNLtXCvkBuVqcKmX55N+PuLZoh8XTSEdCuOasgjVMXMt/Tnui7Xtz5+ygH9uXPDV0MfaTkbEXTTDn6vEpbBH0O5w71NmqY21yNRF4kv6eCxi9qaifjWbaFD+Q==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate\",\"request_id\":\"1467d262e27646ba81aeb6788a2e2836\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:11 GMT", - "content-length" : "1067", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:30:04 GMT", + "content-length" : "2426", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -332,23 +344,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b9088ada-7854-46c3-a994-c03184e3b055", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate\",\"deletedDate\":1520449511,\"scheduledPurgeDate\":1528225511,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/0e975c19de66430682aa0042fb6d8e1b\",\"attributes\":{\"enabled\":false,\"nbf\":1520448906,\"exp\":1551985506,\"created\":1520449506,\"updated\":1520449508,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"tag1\":\"foo\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449509}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "233e726b-4b4a-43b8-b3e3-e716d6ba706b", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate\",\"deletedDate\":1529955004,\"scheduledPurgeDate\":1537731004,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"x5t\":\"UBe7YKmzM8Ch8p9KqhB8SPrwDdM\",\"cer\":\"MIIDRDCCAiygAwIBAgIQZCRvTHNcT5iFZGiCQhlTyzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUxOTE5NTFaFw0xOTA2MjUxOTI5NTFaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Gnd4z+D5MlZQkHCr7b1w5bbV2YtgJICkTbwTydu80lFcsnZUXcelVpEPtQ+V3x5D6gyRA7S2usG3hHOOReZMlJbUiwR0hsUd9MMmaCUOnTskytUnwdu4I4Lm8hr7gl4Ug00Q10KzFMzsqynwpwLa6XlhuumUDILNPnit4yoQWF757bx+G8zvw4MF5rIAnMReR5tBJ0veziSqExiLovcakSW++YdoXdE/Ih9c+oEq1bHGaKUluOFmuU0QMINrF1FplSfKUVI4RTYvypzaqR6JNmAODuLT9EkYnFSg9EBePTzzH2WyxpzmQv519ZR17uscH/Awp+VVg6/SJ5W1D+I1wIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUx9BFWEOHHtKR3C9HWKNDv+oJLs4wHQYDVR0OBBYEFMfQRVhDhx7SkdwvR1ijQ7/qCS7OMA0GCSqGSIb3DQEBCwUAA4IBAQClzKpxj4+uVfOv4FhCVS5pGNdZ1TxEdjaOKQ0xVdInJ8AgjZL9miUDcF4yAOfyqO93hu8Rtjw+sIQmuIsOw3LaDr3RgOB2bJAlxxy8iHWTpXug5lQS4zkOoH6DwV4rnYtDVZkYwSgnXVgH14bmmMfcYJJpjHdZnTxiRTlXTlW4+0qoyCyHfUBoIIL2FXOxdW2C8mhGB9mWOQIo+/cuD329F3e4xuPHHFx8PXNwEnZc8YiqCdcxnG9xcvf3ToGAnvMteEE5zwWFVmsCjCC0CCBEUDhHJGKr9qQBiuj3GK0IqHqDIVMAMyVAeu7RlWDezdl10E1JS7RGuA/5TqqA4CPt\",\"attributes\":{\"enabled\":true,\"nbf\":1529954391,\"exp\":1561490991,\"created\":1529954991,\"updated\":1529954991,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954988}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:11 GMT", + "date" : "Mon, 25 Jun 2018 19:30:05 GMT", "content-length" : "97", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -358,23 +371,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6ef44bfe-7933-412f-8aba-46768c4a3215", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1b521d2d-b078-4fcc-974c-f70055f9189d", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: myCertificate\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:21 GMT", + "date" : "Mon, 25 Jun 2018 19:30:16 GMT", "content-length" : "97", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -384,23 +398,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0947abc5-339a-4368-89d6-5bb24be551fc", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "712aa30b-8540-4cb6-a104-2268a302965f", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: myCertificate\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:32 GMT", - "content-length" : "1067", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:30:29 GMT", + "content-length" : "2426", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -410,23 +425,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0ebcec03-38c6-4c7f-9830-41821732e820", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate\",\"deletedDate\":1520449511,\"scheduledPurgeDate\":1528225511,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/0e975c19de66430682aa0042fb6d8e1b\",\"attributes\":{\"enabled\":false,\"nbf\":1520448906,\"exp\":1551985506,\"created\":1520449506,\"updated\":1520449508,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"tag1\":\"foo\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520449507,\"updated\":1520449509}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ea9d63bb-4f19-420b-a52a-bffe142fab53", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate\",\"deletedDate\":1529955004,\"scheduledPurgeDate\":1537731004,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/myCertificate/d2eb02574c6748c1abda7a54b60119f1\",\"x5t\":\"UBe7YKmzM8Ch8p9KqhB8SPrwDdM\",\"cer\":\"MIIDRDCCAiygAwIBAgIQZCRvTHNcT5iFZGiCQhlTyzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUxOTE5NTFaFw0xOTA2MjUxOTI5NTFaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0Gnd4z+D5MlZQkHCr7b1w5bbV2YtgJICkTbwTydu80lFcsnZUXcelVpEPtQ+V3x5D6gyRA7S2usG3hHOOReZMlJbUiwR0hsUd9MMmaCUOnTskytUnwdu4I4Lm8hr7gl4Ug00Q10KzFMzsqynwpwLa6XlhuumUDILNPnit4yoQWF757bx+G8zvw4MF5rIAnMReR5tBJ0veziSqExiLovcakSW++YdoXdE/Ih9c+oEq1bHGaKUluOFmuU0QMINrF1FplSfKUVI4RTYvypzaqR6JNmAODuLT9EkYnFSg9EBePTzzH2WyxpzmQv519ZR17uscH/Awp+VVg6/SJ5W1D+I1wIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUx9BFWEOHHtKR3C9HWKNDv+oJLs4wHQYDVR0OBBYEFMfQRVhDhx7SkdwvR1ijQ7/qCS7OMA0GCSqGSIb3DQEBCwUAA4IBAQClzKpxj4+uVfOv4FhCVS5pGNdZ1TxEdjaOKQ0xVdInJ8AgjZL9miUDcF4yAOfyqO93hu8Rtjw+sIQmuIsOw3LaDr3RgOB2bJAlxxy8iHWTpXug5lQS4zkOoH6DwV4rnYtDVZkYwSgnXVgH14bmmMfcYJJpjHdZnTxiRTlXTlW4+0qoyCyHfUBoIIL2FXOxdW2C8mhGB9mWOQIo+/cuD329F3e4xuPHHFx8PXNwEnZc8YiqCdcxnG9xcvf3ToGAnvMteEE5zwWFVmsCjCC0CCBEUDhHJGKr9qQBiuj3GK0IqHqDIVMAMyVAeu7RlWDezdl10E1JS7RGuA/5TqqA4CPt\",\"attributes\":{\"enabled\":true,\"nbf\":1529954391,\"exp\":1561490991,\"created\":1529954991,\"updated\":1529954991,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529954982,\"updated\":1529954988}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:32 GMT", + "date" : "Mon, 25 Jun 2018 19:30:37 GMT", "content-length" : "89", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -436,22 +452,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "8a63851d-c37b-4c73-88ea-8723fffaa9f0", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "71adc8be-0088-40a2-b46a-97d4192b8c37", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: myCertificate\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/myCertificate?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:32 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:30:40 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -460,10 +477,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bd4b9374-f7ae-4870-b5ac-c19230f03134", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a4fc2643-26b5-47bb-95a4-68311c3cec63", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/certificateAsyncRequestCancellationForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/certificateAsyncRequestCancellationForCertificateOperationsTest.json index 81a89f0..e323eb3 100644 --- a/azure-keyvault/target/test-classes/session-records/certificateAsyncRequestCancellationForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/certificateAsyncRequestCancellationForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:54 GMT", + "date" : "Mon, 25 Jun 2018 20:39:58 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "123fe1e9-288f-48c8-a871-f66f127f59ea", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5351a8c5-bdce-465d-ab54-04e60aae578d", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:56 GMT", + "date" : "Mon, 25 Jun 2018 20:40:01 GMT", "content-length" : "1329", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,24 +46,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0-preview&request_id=bd9b8a6dc3c64264904600f3e3088669", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0&request_id=5fd27ff464e440b880191b17f62387e2", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7197c19c-e810-4c7d-a182-cb12e3c08229", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw4GKRfKk6YmxkUD+eqccB9seAtunfOUKgwSrPl/tR85doKjplEbjyyK3O6T+Lmnkmg4TmoeHRlZ3kXqNsHcC7UZRiYs4PfMLasbjsAZOlBrQorNBGzMJlz8iqnC5I9u7lPIh7JQL2YeNgsyUb35eIrNLH/2c9drI0JIILwc0EsYn8H+/tupOH4fXQ9vzd7Xq2ujbTGDp1i6e/HD3H5z1Usu9SwvTAKyJIgaHbQIgmzIf68Nrl7vrJen6VngzjQf3MW6YZdYexWgt+YotKGwkcC4Frb8kLroTZE/WNACcUf288ycTmWaHveVm1dAO9KKA7hkf/MPJK7irqxg/ltCxDAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAu7+r4bqmqStJXEc57NSIKA2T3ttKmLLSyo1A4vUonPi1bu2CsYnM4O4cgLV6LyI3h1LHtvxYTD5WubBJK8PuPtRjeQF0pn0H/axJ0tKrNLhYurpvyfWDYVAy16TYGdjHhrpcyk8g9bcdaVMKtf51/nQ3j1inoq7jFvzgoKULcnP9oawDyZUR22kPCryiLe5sAzo0t1paFUY2OGYQQ9ylKKqbRNbPnh8/wF4p90peFR1Lp2HH/M6OLmVJz4tsGUJfNguv29qCc6JzyylOrnZHQHjr7W/kZnQpmIRplVB14EdnAQg7FI30hdC33EOVugeGkdHRbca0oCzSv35pIKj8pA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"bd9b8a6dc3c64264904600f3e3088669\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "135f5fe0-dbd8-41db-9bbd-7b68a37f195a", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkUN7Pu25zX3CLYfNr6SaEoPsOF3bDCoZPY2fzrCdh9YHQoHIW65IHt/whilCxxWrD02Lil/BRI8cHwCs6/adDbLSgnn/qUdh05ty2a+1TTO35NG1E5G6qbBjlCnNlpka+y84txCkJkrcUZMvcZ3QvlWeUOCfW8WG6JxK9DDgzUPMCZSUfQR7wizjAo8ZRrcurPqW8H4k6I2rJEuCKy42mDRM/AGrIaDUEW5s2U0UZYM4g0rHlwRyzbgUY8mC626Oj1L5AVPaLnyDD91mqVWkluetD6DgEgU1bMYK3H25FOdMVq8ii9KMBl33ISI/3ucPmjCZiFea6dz85xdIaq3+/AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAms1n8wT+ebkVLsdsIqYlbfARJveensdkzli74jYOEK3WjMVrb74KNTYvvxSXlqchkfGM7CKK55ziLtFv5UnTYNRsOk+MAyhvDXFpjOi660go2c2z2L7iOhwUKivwa1lKGVyrrsA2G/AAhzsVhxM8/czqhcfSQjOoYQVhrLLTbV3JD59DU17VgrduLrsLhZmuGIU5T1z6o3AYjyPOJzf+KB1EYCQZC6ZsG0I6atGsyDQAXnx8i4Y2TUN3c3DH97u4A8HLhWM1YwIhXK/0xzNJ/q0bj23lRUSw7dAzyQenove5BJpBcF8Zlu2OL3fkfa/CPHHNcAGLCsAFIIHoX7+/7g==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"5fd27ff464e440b880191b17f62387e2\"}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:56 GMT", + "date" : "Mon, 25 Jun 2018 20:40:03 GMT", "content-length" : "1328", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -72,23 +74,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d16849cf-d662-46e7-ad54-4953b50b7e36", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw4GKRfKk6YmxkUD+eqccB9seAtunfOUKgwSrPl/tR85doKjplEbjyyK3O6T+Lmnkmg4TmoeHRlZ3kXqNsHcC7UZRiYs4PfMLasbjsAZOlBrQorNBGzMJlz8iqnC5I9u7lPIh7JQL2YeNgsyUb35eIrNLH/2c9drI0JIILwc0EsYn8H+/tupOH4fXQ9vzd7Xq2ujbTGDp1i6e/HD3H5z1Usu9SwvTAKyJIgaHbQIgmzIf68Nrl7vrJen6VngzjQf3MW6YZdYexWgt+YotKGwkcC4Frb8kLroTZE/WNACcUf288ycTmWaHveVm1dAO9KKA7hkf/MPJK7irqxg/ltCxDAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAu7+r4bqmqStJXEc57NSIKA2T3ttKmLLSyo1A4vUonPi1bu2CsYnM4O4cgLV6LyI3h1LHtvxYTD5WubBJK8PuPtRjeQF0pn0H/axJ0tKrNLhYurpvyfWDYVAy16TYGdjHhrpcyk8g9bcdaVMKtf51/nQ3j1inoq7jFvzgoKULcnP9oawDyZUR22kPCryiLe5sAzo0t1paFUY2OGYQQ9ylKKqbRNbPnh8/wF4p90peFR1Lp2HH/M6OLmVJz4tsGUJfNguv29qCc6JzyylOrnZHQHjr7W/kZnQpmIRplVB14EdnAQg7FI30hdC33EOVugeGkdHRbca0oCzSv35pIKj8pA==\",\"cancellation_requested\":true,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"bd9b8a6dc3c64264904600f3e3088669\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "010213a5-1054-4791-a9d4-549e005bbb85", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkUN7Pu25zX3CLYfNr6SaEoPsOF3bDCoZPY2fzrCdh9YHQoHIW65IHt/whilCxxWrD02Lil/BRI8cHwCs6/adDbLSgnn/qUdh05ty2a+1TTO35NG1E5G6qbBjlCnNlpka+y84txCkJkrcUZMvcZ3QvlWeUOCfW8WG6JxK9DDgzUPMCZSUfQR7wizjAo8ZRrcurPqW8H4k6I2rJEuCKy42mDRM/AGrIaDUEW5s2U0UZYM4g0rHlwRyzbgUY8mC626Oj1L5AVPaLnyDD91mqVWkluetD6DgEgU1bMYK3H25FOdMVq8ii9KMBl33ISI/3ucPmjCZiFea6dz85xdIaq3+/AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAms1n8wT+ebkVLsdsIqYlbfARJveensdkzli74jYOEK3WjMVrb74KNTYvvxSXlqchkfGM7CKK55ziLtFv5UnTYNRsOk+MAyhvDXFpjOi660go2c2z2L7iOhwUKivwa1lKGVyrrsA2G/AAhzsVhxM8/czqhcfSQjOoYQVhrLLTbV3JD59DU17VgrduLrsLhZmuGIU5T1z6o3AYjyPOJzf+KB1EYCQZC6ZsG0I6atGsyDQAXnx8i4Y2TUN3c3DH97u4A8HLhWM1YwIhXK/0xzNJ/q0bj23lRUSw7dAzyQenove5BJpBcF8Zlu2OL3fkfa/CPHHNcAGLCsAFIIHoX7+/7g==\",\"cancellation_requested\":true,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"5fd27ff464e440b880191b17f62387e2\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:57 GMT", + "date" : "Mon, 25 Jun 2018 20:40:04 GMT", "content-length" : "1328", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,23 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "190454f2-ed88-4f92-a18c-31bd1aa1fbd1", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDw4GKRfKk6YmxkUD+eqccB9seAtunfOUKgwSrPl/tR85doKjplEbjyyK3O6T+Lmnkmg4TmoeHRlZ3kXqNsHcC7UZRiYs4PfMLasbjsAZOlBrQorNBGzMJlz8iqnC5I9u7lPIh7JQL2YeNgsyUb35eIrNLH/2c9drI0JIILwc0EsYn8H+/tupOH4fXQ9vzd7Xq2ujbTGDp1i6e/HD3H5z1Usu9SwvTAKyJIgaHbQIgmzIf68Nrl7vrJen6VngzjQf3MW6YZdYexWgt+YotKGwkcC4Frb8kLroTZE/WNACcUf288ycTmWaHveVm1dAO9KKA7hkf/MPJK7irqxg/ltCxDAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAu7+r4bqmqStJXEc57NSIKA2T3ttKmLLSyo1A4vUonPi1bu2CsYnM4O4cgLV6LyI3h1LHtvxYTD5WubBJK8PuPtRjeQF0pn0H/axJ0tKrNLhYurpvyfWDYVAy16TYGdjHhrpcyk8g9bcdaVMKtf51/nQ3j1inoq7jFvzgoKULcnP9oawDyZUR22kPCryiLe5sAzo0t1paFUY2OGYQQ9ylKKqbRNbPnh8/wF4p90peFR1Lp2HH/M6OLmVJz4tsGUJfNguv29qCc6JzyylOrnZHQHjr7W/kZnQpmIRplVB14EdnAQg7FI30hdC33EOVugeGkdHRbca0oCzSv35pIKj8pA==\",\"cancellation_requested\":true,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"bd9b8a6dc3c64264904600f3e3088669\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6553df4e-e9da-4e9f-8fee-60d31abe85da", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkUN7Pu25zX3CLYfNr6SaEoPsOF3bDCoZPY2fzrCdh9YHQoHIW65IHt/whilCxxWrD02Lil/BRI8cHwCs6/adDbLSgnn/qUdh05ty2a+1TTO35NG1E5G6qbBjlCnNlpka+y84txCkJkrcUZMvcZ3QvlWeUOCfW8WG6JxK9DDgzUPMCZSUfQR7wizjAo8ZRrcurPqW8H4k6I2rJEuCKy42mDRM/AGrIaDUEW5s2U0UZYM4g0rHlwRyzbgUY8mC626Oj1L5AVPaLnyDD91mqVWkluetD6DgEgU1bMYK3H25FOdMVq8ii9KMBl33ISI/3ucPmjCZiFea6dz85xdIaq3+/AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAms1n8wT+ebkVLsdsIqYlbfARJveensdkzli74jYOEK3WjMVrb74KNTYvvxSXlqchkfGM7CKK55ziLtFv5UnTYNRsOk+MAyhvDXFpjOi660go2c2z2L7iOhwUKivwa1lKGVyrrsA2G/AAhzsVhxM8/czqhcfSQjOoYQVhrLLTbV3JD59DU17VgrduLrsLhZmuGIU5T1z6o3AYjyPOJzf+KB1EYCQZC6ZsG0I6atGsyDQAXnx8i4Y2TUN3c3DH97u4A8HLhWM1YwIhXK/0xzNJ/q0bj23lRUSw7dAzyQenove5BJpBcF8Zlu2OL3fkfa/CPHHNcAGLCsAFIIHoX7+/7g==\",\"cancellation_requested\":true,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"5fd27ff464e440b880191b17f62387e2\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:57 GMT", + "date" : "Mon, 25 Jun 2018 20:40:07 GMT", "content-length" : "1093", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,49 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "471087ba-3118-4216-b736-c113ffa1e1ed", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava\",\"deletedDate\":1520460297,\"scheduledPurgeDate\":1528236297,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/4321edf8e6f34393b228bd9fa5f9d4b3\",\"attributes\":{\"enabled\":false,\"nbf\":1520459695,\"exp\":1551996295,\"created\":1520460295,\"updated\":1520460295,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460295,\"updated\":1520460295}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "26de549b-9309-433a-8127-03c23a8d1028", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava\",\"deletedDate\":1529959207,\"scheduledPurgeDate\":1537735207,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/ec43c646fad24543adca8f0eddd4e75a\",\"attributes\":{\"enabled\":false,\"nbf\":1529958600,\"exp\":1561495200,\"created\":1529959200,\"updated\":1529959200,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959200,\"updated\":1529959200}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:04:57 GMT", - "content-length" : "113", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c56c0752-8f38-49d4-ad41-534419edb17e", - "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: cancellationRequestedCertJava\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 22:05:07 GMT", + "date" : "Mon, 25 Jun 2018 20:40:08 GMT", "content-length" : "1093", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,22 +155,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "15b70026-a7f1-4197-a3de-a0d174f97a47", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava\",\"deletedDate\":1520460297,\"scheduledPurgeDate\":1528236297,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/4321edf8e6f34393b228bd9fa5f9d4b3\",\"attributes\":{\"enabled\":false,\"nbf\":1520459695,\"exp\":1551996295,\"created\":1520460295,\"updated\":1520460295,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460295,\"updated\":1520460295}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2eee95c6-f87d-4286-bc17-e25ef25c97fa", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava\",\"deletedDate\":1529959207,\"scheduledPurgeDate\":1537735207,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/ec43c646fad24543adca8f0eddd4e75a\",\"attributes\":{\"enabled\":false,\"nbf\":1529958600,\"exp\":1561495200,\"created\":1529959200,\"updated\":1529959200,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/cancellationRequestedCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959200,\"updated\":1529959200}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/cancellationRequestedCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:05:07 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:40:10 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -200,10 +180,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "30934f61-64bc-4221-9134-c3b1c6bec972", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c4a6cc0a-d890-478e-9783-886db39b3e7a", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/certificateContactsAsyncForAsyncOperationsTest.json b/azure-keyvault/target/test-classes/session-records/certificateContactsAsyncForAsyncOperationsTest.json index 9beece9..69b99a8 100644 --- a/azure-keyvault/target/test-classes/session-records/certificateContactsAsyncForAsyncOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/certificateContactsAsyncForAsyncOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:04 GMT", + "date" : "Mon, 25 Jun 2018 19:29:29 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "aad53d41-872f-4d1f-bfe3-9e757f918850", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "96be081b-b364-4da7-a0e7-98390b60f625", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:04 GMT", + "date" : "Mon, 25 Jun 2018 19:29:30 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cbfaaeff-21b2-4627-b0bd-43363403e1ca", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f1b65530-4bcd-4781-81e1-fc80fee38ced", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:04 GMT", + "date" : "Mon, 25 Jun 2018 19:29:32 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "19eb66b2-2234-4ba7-80f5-4ac7b94bee1d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "97752a4d-b6af-4f1b-94f4-57eabeaa25ba", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:05 GMT", + "date" : "Mon, 25 Jun 2018 19:29:35 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,10 +100,11 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9fe24833-8c38-4724-9059-c945f91f2d99", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "74e8788f-f8ae-4ca3-9858-a8a08509bdad", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/certificateUpdateForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/certificateUpdateForCertificateOperationsTest.json index a291529..228c103 100644 --- a/azure-keyvault/target/test-classes/session-records/certificateUpdateForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/certificateUpdateForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:34 GMT", + "date" : "Mon, 25 Jun 2018 20:43:57 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b8362194-4acd-406a-b96a-96fa665a900f", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1c0f180e-8fc8-4b01-bf0c-674edf3a2726", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:36 GMT", + "date" : "Mon, 25 Jun 2018 20:43:59 GMT", "content-length" : "1846", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "03303389-ee16-4dae-810f-fb36bb3dd9bc", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520460875,\"updated\":1520460875,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460875}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6ddfe168-02d6-4896-a4bb-59337ce00dd8", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959439,\"updated\":1529959439,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959439}}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:36 GMT", + "date" : "Mon, 25 Jun 2018 20:44:04 GMT", "content-length" : "1857", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1240be4f-fcd4-4002-b304-db820e1010d8", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520460875,\"updated\":1520460876,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460876}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2e7c1edc-3a68-414f-8e38-592da1e3c814", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959439,\"updated\":1529959443,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959443}}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:37 GMT", + "date" : "Mon, 25 Jun 2018 20:44:04 GMT", "content-length" : "543", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "df2c1eb0-a63b-4519-96e0-01a9ac635fc7", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460877}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "19e3be22-b431-44d1-9ec3-1dacfd8cecce", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959444}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:37 GMT", + "date" : "Mon, 25 Jun 2018 20:44:05 GMT", "content-length" : "543", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5fc3cc46-825d-4b51-ac3c-5de81fc2d607", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460877}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d3b902f5-7124-4cf1-a90b-1582b976be2a", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959444}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:38 GMT", + "date" : "Mon, 25 Jun 2018 20:44:07 GMT", "content-length" : "2008", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a5e3c1ae-a393-497a-acc5-db4a6634a59c", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava\",\"deletedDate\":1520460878,\"scheduledPurgeDate\":1528236878,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520460875,\"updated\":1520460876,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460877}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dbb2533d-6c01-43c9-af87-7b7424283af9", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava\",\"deletedDate\":1529959448,\"scheduledPurgeDate\":1537735448,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959439,\"updated\":1529959443,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959444}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:38 GMT", + "date" : "Mon, 25 Jun 2018 20:44:11 GMT", "content-length" : "98", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f3929f88-2cf8-420c-a99b-fa1a59cdb7d5", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "520cee15-0bfc-4dca-a0e7-583918b058c8", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: updateCertJava\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:48 GMT", + "date" : "Mon, 25 Jun 2018 20:44:26 GMT", "content-length" : "2008", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,22 +208,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ddcd4c89-cde8-4bc5-a8ea-d55ed6e0d252", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava\",\"deletedDate\":1520460878,\"scheduledPurgeDate\":1528236878,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/2506ef63803a4dc1a313f67240af6094\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520460875,\"updated\":1520460876,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520460875,\"updated\":1520460877}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "09e963f8-0b3f-4030-bac1-3a3eb6c13051", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava\",\"deletedDate\":1529959448,\"scheduledPurgeDate\":1537735448,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/updateCertJava/bb3cf8c557484b1ebe49faf2055a79e7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":false,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959439,\"updated\":1529959443,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/updateCertJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959439,\"updated\":1529959444}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/updateCertJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:14:48 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:44:27 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -225,10 +233,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "44546158-670a-48e6-82cf-92f34b9c66dd", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c993d50f-2705-4ccd-a3b4-0faa869428ec", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/contactsCrudOperationsForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/contactsCrudOperationsForCertificateOperationsTest.json index 277e22a..a558770 100644 --- a/azure-keyvault/target/test-classes/session-records/contactsCrudOperationsForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/contactsCrudOperationsForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:16:54 GMT", + "date" : "Mon, 25 Jun 2018 20:37:36 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "afb9074f-bc23-4e08-b337-a21a106fa854", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3a9e62b3-9eb2-4e0a-83b4-f0d7d866458e", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:16:54 GMT", + "date" : "Mon, 25 Jun 2018 20:37:38 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "17611dd9-fa26-47ea-a8ec-119b05c697cb", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "71647de1-9e7b-4cb9-8503-aa4742d142b8", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:16:55 GMT", + "date" : "Mon, 25 Jun 2018 20:37:40 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e8551b5b-b3b0-4465-b556-8471e818f429", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7c8a9dba-0bec-48a9-ad19-32d0e949c3a2", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:16:55 GMT", + "date" : "Mon, 25 Jun 2018 20:37:41 GMT", "content-length" : "222", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "91944fbc-108b-4da1-be1f-d813b2984c2a", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bc7f8028-5de7-47c5-b453-11bc2bfcc263", "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts\",\"contacts\":[{\"email\":\"james@contoso.com\",\"name\":\"James\",\"phone\":\"7777777777\"},{\"email\":\"ethan@contoso.com\",\"name\":\"Ethan\",\"phone\":\"8888888888\"}]}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/contacts?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:16:55 GMT", + "date" : "Mon, 25 Jun 2018 20:37:42 GMT", "content-length" : "68", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,10 +127,11 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7017ff90-c0a2-4aea-8571-5928913e5d43", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "792676a7-7804-4060-a0fd-9a751b948e4a", "Body" : "{\"error\":{\"code\":\"ContactsNotFound\",\"message\":\"Contacts not found\"}}" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/createCertificatePemForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/createCertificatePemForCertificateOperationsTest.json index ed26394..cfeb210 100644 --- a/azure-keyvault/target/test-classes/session-records/createCertificatePemForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/createCertificatePemForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:29 GMT", + "date" : "Mon, 25 Jun 2018 20:40:31 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d6c99d67-6b75-4be6-ad14-6643c0f4cd7b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "755623ea-d062-4f7c-87c8-23855768d11b", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:29 GMT", + "date" : "Mon, 25 Jun 2018 20:40:33 GMT", "content-length" : "373", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5ae5f6fe-0f31-485d-bf37-66a263b51887", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1504827186,\"updated\":1520461050}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b53df449-465f-47e2-a4e6-3dd07533aff6", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1504827186,\"updated\":1529959233}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:32 GMT", + "date" : "Mon, 25 Jun 2018 20:40:36 GMT", "content-length" : "1333", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,24 +73,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0-preview&request_id=673385ba95554c19a1424b95591f9818", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0&request_id=aeb22ac0750842a9863f43d049e1db6b", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "198920d0-8e7a-4ea2-857b-7f02ef640c12", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk5lT8W3cxRbjG+/vkDZhq1Adx4ffJ0o9+Oj0UpyiQJAbP3f8+iKxWHE7nTjVcuVUNQvE31/MQcEUcy8Mx9dOjv/hCLSRs42YXX8pmTQvNdrcyLs7/u25Vb8wc5BHn0TRnS9ehWD2LMFr4Z8fEu46G2/UKyA61iS0II0r6BkEUHp0CyKx/CpsRit/EueGC5luRIbG7Jq3mKXgnIbsi1xTRpZpZAu+26+CyewDgs1+6uKZNRRIO+3OHkKYbSyMUSvcgvlu7fH5HWu04QNbFEYQKEZRkM4J+0ZwNIFyGA97S749owsC9Th7suDSUZKNCxgbKE0svl6fjoPW9m/pcVisfAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAJUjCKagi5m9GWg84i/OfqkJMIPo505enulaIjatPmr4zFpJyliH4zjPUqcS4/MWSvk/FrmPNO7iFjpIu3ZpLHVE5ghibs1DEbVI9GhgsMULgDRSVUtNRAMg/A6u9AFm4lo1PQt6Z/85+tU5u147avibjNEWJvy8etVAvCz6t/c6B5cPokGDG2Lgob+sElSXt1c8EunYFrQC8cRStGGHrUkIQ3DfqOLrWI290nb8Y+MrSJ+4fAB07ge/qP6M3BkIiBcbHj0v0qOyH75UjqGtYd3lRWQ2PETNs56iC9706FW50OUU9wvT0SEma9JXI5GJklAULv01CmsYGJbz+i8fMqQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"673385ba95554c19a1424b95591f9818\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8447519b-1e3b-44e9-9c01-ab69fcd2baea", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfLyLmwub/RyG0Y2o+r2h3kCgCGg7xwYIpq1WmJrk7aVveIOkcumLePB2f9LSDzQVU6NqN7OwsEbhPVu8dDa+nsiCuy/fUWfHP7rAgxh8p0UOhD0vQBhweN9pc3MDsY7hbGRQi6zOSwna9G+/kZ0B05cAJsk4g8GF4oXebcf2FIG6ljFFy391r3mV8Upgn3YTsS3B5DmHcEiykZWP6tUf8E40MAZEbWvIBk0KkTJBr3tbP8MpVANmMwP9Kcs/RiYosCog3IBZyaTVGg6PMowELdo4gzeuWGmGeWQXvBcQJ2iipgydsu+FJ5WGvR/K3SEeOT+KOZM79fD/XDSRhW5QJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAaPcBGmIu56jitaASVjE7OlTxSlwkMKrqZZZbEzyosmTuYGH7MvScFaDxVB9KkqfmPE1/8FTjvU6b1nmJ/Af9Ne4JUjekS2Q+B7snXCaVtZHoEIkSYGA0OVGjFQrtIb2ZjlbCA9ZX393JvL+zQzf1/EBH9nz1EmJER3lJ5LAbKGB84O616RRy7t6Wnk+GNJUhxZL1GEC+efszp6LRHaCwlA//8Yo+7HwpRWUqSFtpt8XZBMQl32MEOhN9LlEXnhj4AMyQwJEE0+34BPuxPKBqwwo58P3kFW5ahq9BGHoSSkimtotR1J17OdAfLlVCH1mugUMJlxmz8Ie3DG3LURPFwA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"aeb22ac0750842a9863f43d049e1db6b\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:32 GMT", + "date" : "Mon, 25 Jun 2018 20:40:38 GMT", "content-length" : "1333", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,49 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4dafea4e-0a14-4df7-bb77-7eccb878d915", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk5lT8W3cxRbjG+/vkDZhq1Adx4ffJ0o9+Oj0UpyiQJAbP3f8+iKxWHE7nTjVcuVUNQvE31/MQcEUcy8Mx9dOjv/hCLSRs42YXX8pmTQvNdrcyLs7/u25Vb8wc5BHn0TRnS9ehWD2LMFr4Z8fEu46G2/UKyA61iS0II0r6BkEUHp0CyKx/CpsRit/EueGC5luRIbG7Jq3mKXgnIbsi1xTRpZpZAu+26+CyewDgs1+6uKZNRRIO+3OHkKYbSyMUSvcgvlu7fH5HWu04QNbFEYQKEZRkM4J+0ZwNIFyGA97S749owsC9Th7suDSUZKNCxgbKE0svl6fjoPW9m/pcVisfAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAJUjCKagi5m9GWg84i/OfqkJMIPo505enulaIjatPmr4zFpJyliH4zjPUqcS4/MWSvk/FrmPNO7iFjpIu3ZpLHVE5ghibs1DEbVI9GhgsMULgDRSVUtNRAMg/A6u9AFm4lo1PQt6Z/85+tU5u147avibjNEWJvy8etVAvCz6t/c6B5cPokGDG2Lgob+sElSXt1c8EunYFrQC8cRStGGHrUkIQ3DfqOLrWI290nb8Y+MrSJ+4fAB07ge/qP6M3BkIiBcbHj0v0qOyH75UjqGtYd3lRWQ2PETNs56iC9706FW50OUU9wvT0SEma9JXI5GJklAULv01CmsYGJbz+i8fMqQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"673385ba95554c19a1424b95591f9818\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1eef2807-236e-49f3-8b5e-366bae854074", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfLyLmwub/RyG0Y2o+r2h3kCgCGg7xwYIpq1WmJrk7aVveIOkcumLePB2f9LSDzQVU6NqN7OwsEbhPVu8dDa+nsiCuy/fUWfHP7rAgxh8p0UOhD0vQBhweN9pc3MDsY7hbGRQi6zOSwna9G+/kZ0B05cAJsk4g8GF4oXebcf2FIG6ljFFy391r3mV8Upgn3YTsS3B5DmHcEiykZWP6tUf8E40MAZEbWvIBk0KkTJBr3tbP8MpVANmMwP9Kcs/RiYosCog3IBZyaTVGg6PMowELdo4gzeuWGmGeWQXvBcQJ2iipgydsu+FJ5WGvR/K3SEeOT+KOZM79fD/XDSRhW5QJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAaPcBGmIu56jitaASVjE7OlTxSlwkMKrqZZZbEzyosmTuYGH7MvScFaDxVB9KkqfmPE1/8FTjvU6b1nmJ/Af9Ne4JUjekS2Q+B7snXCaVtZHoEIkSYGA0OVGjFQrtIb2ZjlbCA9ZX393JvL+zQzf1/EBH9nz1EmJER3lJ5LAbKGB84O616RRy7t6Wnk+GNJUhxZL1GEC+efszp6LRHaCwlA//8Yo+7HwpRWUqSFtpt8XZBMQl32MEOhN9LlEXnhj4AMyQwJEE0+34BPuxPKBqwwo58P3kFW5ahq9BGHoSSkimtotR1J17OdAfLlVCH1mugUMJlxmz8Ie3DG3LURPFwA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"aeb22ac0750842a9863f43d049e1db6b\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:42 GMT", - "content-length" : "1333", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "200", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a3821b81-6b60-40f4-b77e-248329265350", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk5lT8W3cxRbjG+/vkDZhq1Adx4ffJ0o9+Oj0UpyiQJAbP3f8+iKxWHE7nTjVcuVUNQvE31/MQcEUcy8Mx9dOjv/hCLSRs42YXX8pmTQvNdrcyLs7/u25Vb8wc5BHn0TRnS9ehWD2LMFr4Z8fEu46G2/UKyA61iS0II0r6BkEUHp0CyKx/CpsRit/EueGC5luRIbG7Jq3mKXgnIbsi1xTRpZpZAu+26+CyewDgs1+6uKZNRRIO+3OHkKYbSyMUSvcgvlu7fH5HWu04QNbFEYQKEZRkM4J+0ZwNIFyGA97S749owsC9Th7suDSUZKNCxgbKE0svl6fjoPW9m/pcVisfAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAJUjCKagi5m9GWg84i/OfqkJMIPo505enulaIjatPmr4zFpJyliH4zjPUqcS4/MWSvk/FrmPNO7iFjpIu3ZpLHVE5ghibs1DEbVI9GhgsMULgDRSVUtNRAMg/A6u9AFm4lo1PQt6Z/85+tU5u147avibjNEWJvy8etVAvCz6t/c6B5cPokGDG2Lgob+sElSXt1c8EunYFrQC8cRStGGHrUkIQ3DfqOLrWI290nb8Y+MrSJ+4fAB07ge/qP6M3BkIiBcbHj0v0qOyH75UjqGtYd3lRWQ2PETNs56iC9706FW50OUU9wvT0SEma9JXI5GJklAULv01CmsYGJbz+i8fMqQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"673385ba95554c19a1424b95591f9818\"}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:40:50 GMT", "content-length" : "1257", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b2fc1c64-8425-4847-80cf-8d3483c1f814", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCk5lT8W3cxRbjG+/vkDZhq1Adx4ffJ0o9+Oj0UpyiQJAbP3f8+iKxWHE7nTjVcuVUNQvE31/MQcEUcy8Mx9dOjv/hCLSRs42YXX8pmTQvNdrcyLs7/u25Vb8wc5BHn0TRnS9ehWD2LMFr4Z8fEu46G2/UKyA61iS0II0r6BkEUHp0CyKx/CpsRit/EueGC5luRIbG7Jq3mKXgnIbsi1xTRpZpZAu+26+CyewDgs1+6uKZNRRIO+3OHkKYbSyMUSvcgvlu7fH5HWu04QNbFEYQKEZRkM4J+0ZwNIFyGA97S749owsC9Th7suDSUZKNCxgbKE0svl6fjoPW9m/pcVisfAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAJUjCKagi5m9GWg84i/OfqkJMIPo505enulaIjatPmr4zFpJyliH4zjPUqcS4/MWSvk/FrmPNO7iFjpIu3ZpLHVE5ghibs1DEbVI9GhgsMULgDRSVUtNRAMg/A6u9AFm4lo1PQt6Z/85+tU5u147avibjNEWJvy8etVAvCz6t/c6B5cPokGDG2Lgob+sElSXt1c8EunYFrQC8cRStGGHrUkIQ3DfqOLrWI290nb8Y+MrSJ+4fAB07ge/qP6M3BkIiBcbHj0v0qOyH75UjqGtYd3lRWQ2PETNs56iC9706FW50OUU9wvT0SEma9JXI5GJklAULv01CmsYGJbz+i8fMqQ==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem\",\"request_id\":\"673385ba95554c19a1424b95591f9818\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cc2e9ada-e89b-4fdd-ad5d-896618980677", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\",\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"csr\":\"MIICpjCCAY4CAQAwFjEUMBIGA1UEAxMLVGVzdEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCfLyLmwub/RyG0Y2o+r2h3kCgCGg7xwYIpq1WmJrk7aVveIOkcumLePB2f9LSDzQVU6NqN7OwsEbhPVu8dDa+nsiCuy/fUWfHP7rAgxh8p0UOhD0vQBhweN9pc3MDsY7hbGRQi6zOSwna9G+/kZ0B05cAJsk4g8GF4oXebcf2FIG6ljFFy391r3mV8Upgn3YTsS3B5DmHcEiykZWP6tUf8E40MAZEbWvIBk0KkTJBr3tbP8MpVANmMwP9Kcs/RiYosCog3IBZyaTVGg6PMowELdo4gzeuWGmGeWQXvBcQJ2iipgydsu+FJ5WGvR/K3SEeOT+KOZM79fD/XDSRhW5QJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAaPcBGmIu56jitaASVjE7OlTxSlwkMKrqZZZbEzyosmTuYGH7MvScFaDxVB9KkqfmPE1/8FTjvU6b1nmJ/Af9Ne4JUjekS2Q+B7snXCaVtZHoEIkSYGA0OVGjFQrtIb2ZjlbCA9ZX393JvL+zQzf1/EBH9nz1EmJER3lJ5LAbKGB84O616RRy7t6Wnk+GNJUhxZL1GEC+efszp6LRHaCwlA//8Yo+7HwpRWUqSFtpt8XZBMQl32MEOhN9LlEXnhj4AMyQwJEE0+34BPuxPKBqwwo58P3kFW5ahq9BGHoSSkimtotR1J17OdAfLlVCH1mugUMJlxmz8Ie3DG3LURPFwA==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem\",\"request_id\":\"aeb22ac0750842a9863f43d049e1db6b\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:40:51 GMT", "content-length" : "2391", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0184e21d-4f5c-4e5d-b78b-4a671e1b2eda", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"x5t\":\"ZBIJi8orGNr44JEHUxVEapDdJXg\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQKYmzJ13LQqWiitOQyJNhfTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODAzMDcyMjA3NDNaFw0xOTAzMDcyMjE3NDNaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApOZU/Ft3MUW4xvv75A2YatQHceH3ydKPfjo9FKcokCQGz93/PoisVhxO5041XLlVDULxN9fzEHBFHMvDMfXTo7/4Qi0kbONmF1/KZk0LzXa3Mi7O/7tuVW/MHOQR59E0Z0vXoVg9izBa+GfHxLuOhtv1CsgOtYktCCNK+gZBFB6dAsisfwqbEYrfxLnhguZbkSGxuyat5il4JyG7ItcU0aWaWQLvtuvgsnsA4LNfurimTUUSDvtzh5CmG0sjFEr3IL5bu3x+R1rtOEDWxRGEChGUZDOCftGcDSBchgPe0u+PaMLAvU4e7Lg0lGSjQsYGyhNLL5en46D1vZv6XFYrHwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUkG2TGjP/VRSwXWZoole0X2C+y60wHQYDVR0OBBYEFCNO8zBQcKXX9OSO4ysorf22r1ahMA0GCSqGSIb3DQEBCwUAA4IBAQBqZuHsRuDgyaI9ayRb2IjH4nQI8UH8u+krafhGbckiMXmdEsHvRSoZj3sAh2rJGDPuRD/WkNqa/G1Mv+g3q97UfE95R7JinTNzEPYM2qvkQnd6ZyPtfQFPTgd5KUeTbKFcosej4NB1FxlV6oBARZRxy39cNvq5DV30C/H43ptlGxVGP8heASfbu2rjsK+ljyX29vwIXGvsSlLA/XFHqToXkPVPm2WAtptTfWNh9tmmQ76JlvoRYOQfS9ogNt0gQEH3aKk9oNjQJ39h4Juxcsx9bPGxvxsfS12J5Ciz+qgzaNoBHZXsuEfhAlRawktYHyI1/R7Y+pKRhOvlSTDfl0zt\",\"attributes\":{\"enabled\":true,\"nbf\":1520460463,\"exp\":1551997063,\"created\":1520461063,\"updated\":1520461063,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461051,\"updated\":1520461051}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "62912587-ca4a-4a2e-95ce-68b69b4d2ea7", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"x5t\":\"bSPb4FA82jMarzsvK3yqMUB93GU\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQf9T9DmA9QcGhQXvCLtWQAjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODA2MjUyMDMwMzlaFw0xOTA2MjUyMDQwMzlaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAny8i5sLm/0chtGNqPq9od5AoAhoO8cGCKatVpia5O2lb3iDpHLpi3jwdn/S0g80FVOjajezsLBG4T1bvHQ2vp7Igrsv31Fnxz+6wIMYfKdFDoQ9L0AYcHjfaXNzA7GO4WxkUIuszksJ2vRvv5GdAdOXACbJOIPBheKF3m3H9hSBupYxRct/da95lfFKYJ92E7EtweQ5h3BIspGVj+rVH/BONDAGRG1ryAZNCpEyQa97Wz/DKVQDZjMD/SnLP0YmKLAqINyAWcmk1RoOjzKMBC3aOIM3rlhphnlkF7wXECdooqYMnbLvhSeVhr0fyt0hHjk/ijmTO/Xw/1w0kYVuUCQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU0lTOOFbZLp5QEKOHDHWliSUn8iAwHQYDVR0OBBYEFG7fj9k7AGS/LOdkE307A+h2HC7vMA0GCSqGSIb3DQEBCwUAA4IBAQBt+a2vMq0BTLah3qJXwuRVYRGm5wmTsMAuehRZeeYegO8lkCVc3xmwj3jQO6EV8th466EhAyjUc2g4yvrGhXJ4czRDKI7ZWSkfcS4YzMs4tMihg81pRo/pyziLcdy9kBebLLoCZ4P7OGy/fI26COi+uTUonfn1S4rMc6HqCR1i0L+rHvubyNOn4zh3D7ZlOJsPg4uQ5riktpNcvBRIbRDXMTjqOcJBFgsodkcZNhcO0K8UodY/nM2NicKkImso6sNrzZqHKDSEvqsKBx7f1cTXIKbdM6XxbxfTPLuCLldxkVkztzYJ2Jx5IX9fNZXV3JIMdE3gtczm3ZSCu9mF8zB4\",\"attributes\":{\"enabled\":true,\"nbf\":1529958639,\"exp\":1561495239,\"created\":1529959239,\"updated\":1529959239,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529959236,\"updated\":1529959236}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:40:52 GMT", "content-length" : "3356", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -202,23 +182,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5bea23f5-e041-4178-8b66-b45f8551e0cf", - "Body" : "{\"value\":\"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCk5lT8W3cxRbjG\\n+/vkDZhq1Adx4ffJ0o9+Oj0UpyiQJAbP3f8+iKxWHE7nTjVcuVUNQvE31/MQcEUc\\ny8Mx9dOjv/hCLSRs42YXX8pmTQvNdrcyLs7/u25Vb8wc5BHn0TRnS9ehWD2LMFr4\\nZ8fEu46G2/UKyA61iS0II0r6BkEUHp0CyKx/CpsRit/EueGC5luRIbG7Jq3mKXgn\\nIbsi1xTRpZpZAu+26+CyewDgs1+6uKZNRRIO+3OHkKYbSyMUSvcgvlu7fH5HWu04\\nQNbFEYQKEZRkM4J+0ZwNIFyGA97S749owsC9Th7suDSUZKNCxgbKE0svl6fjoPW9\\nm/pcVisfAgMBAAECggEAKotEnPFKQLugzzHfDLkXPGSk4RRwVjFNlT8YWDZCaGHr\\nIgFAI9WmRPc7wkCy0s/8KhY93u8HxpN4uVO28jJe3q4eMpCsB63pvpkXwqoZI/L/\\nk+JwxJkKf99+tWuAVSNsFkSChx2Zj0o0BkfcSh0ryg6A272+0cZpCGL2qqgnbTWI\\nvF9hLEGW8N+BVhD8wI/e6sVCBdixrs2Sq5o5erJpk0T4ZbTFfxb3Jk/wYH1BdIyd\\nNwNHm31dQ5i973AYyNR3HZuUkIH7N5LwDY7Z/dnM3M1kBEqcrtzTHBB7ZqEVX0m5\\nxJfgy+E33XMFiw+HvDjO4mpEEOeLD19rSxEIgOPe2QKBgQDKrWA29Ilz7CvbMeuV\\ngVT3DJJ5MVMjDyjccfIFJqdlreqGk6RqkZJqj8iB/vgf3af7DDSWM4Zr8COx4odm\\nUcAYgNpO8Wl5Gg6SDBYbB25ghJ5BYgr9S+07Zt2fFeR1c39qhf6iMd9ug/5lmoUz\\n74Ne7+ZV5kPbzu4Z4rVaS9cC5wKBgQDQSJUbdEB4czVVWoBu2c6/xC8ZHuMTa7EH\\n+Tag9sZ2YDNTn2Euhc8ZG/dONOzrCQoCw2RtbplFj7gWWlSHQ0L6BwYPYIPs+1z4\\ngM9vv5vQr+R8VrcJVhXstOR2N1ylhvfK+lCMIkhdgXlwh4/ziMINX0tn1eF7FNmy\\n4rdF2h9HCQKBgEypWaxPwLIVUd1eO4LYYZ/0pG6s5oprUIRZoTarkUPXjc8Lh3Q7\\nzcr6ydfJ7mZ3O/OsgTOTF7Q6J/Y//gEIyQU7r9eOXtvMrFg3tCDTJb/iSc3nXMrE\\nbl46oXdsG3cFkdtkBZWqEZ5G1PHviZTEcsd1LIWvTFmXIt6trvURnKlfAoGBAKDj\\ncEqEwkhItin4fr0iAlKfeMIu2blmtpkyKMCt3yARr5QoySjms9Lxh1ciCuCDWvhH\\ndowRotPY8JpTrHfPvSzlwAigxUeJ44cR+SqZGANb22MwmLLdjJIMKW4n1akHWOGx\\n+gZFdSDFoskJ7mhwe3VY5yaOUF6C/Kbx+iA7HW4BAoGBAKDM/73uddObyrb/TdM5\\nQDCl9WFh7kmQsflQxtLN6K2F5UFslxoyV7Wk8kGR+FlSGNdZ+ZOD3svVS65kIuO2\\nnB8N6Q35ESwP+YaVqS0k3r9GWmoJc3wrkI8l8OPT7hjglhGcwbkTA+0YYCpY3Ooy\\nAxnSNlIhAWHR8MVIPKDSYxqo\\n-----END PRIVATE KEY-----\\n-----BEGIN CERTIFICATE-----\\nMIIDMjCCAhqgAwIBAgIQKYmzJ13LQqWiitOQyJNhfTANBgkqhkiG9w0BAQsFADAW\\nMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODAzMDcyMjA3NDNaFw0xOTAzMDcy\\nMjE3NDNaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEF\\nAAOCAQ8AMIIBCgKCAQEApOZU/Ft3MUW4xvv75A2YatQHceH3ydKPfjo9FKcokCQG\\nz93/PoisVhxO5041XLlVDULxN9fzEHBFHMvDMfXTo7/4Qi0kbONmF1/KZk0LzXa3\\nMi7O/7tuVW/MHOQR59E0Z0vXoVg9izBa+GfHxLuOhtv1CsgOtYktCCNK+gZBFB6d\\nAsisfwqbEYrfxLnhguZbkSGxuyat5il4JyG7ItcU0aWaWQLvtuvgsnsA4LNfurim\\nTUUSDvtzh5CmG0sjFEr3IL5bu3x+R1rtOEDWxRGEChGUZDOCftGcDSBchgPe0u+P\\naMLAvU4e7Lg0lGSjQsYGyhNLL5en46D1vZv6XFYrHwIDAQABo3wwejAOBgNVHQ8B\\nAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH\\nAwIwHwYDVR0jBBgwFoAUkG2TGjP/VRSwXWZoole0X2C+y60wHQYDVR0OBBYEFCNO\\n8zBQcKXX9OSO4ysorf22r1ahMA0GCSqGSIb3DQEBCwUAA4IBAQBqZuHsRuDgyaI9\\nayRb2IjH4nQI8UH8u+krafhGbckiMXmdEsHvRSoZj3sAh2rJGDPuRD/WkNqa/G1M\\nv+g3q97UfE95R7JinTNzEPYM2qvkQnd6ZyPtfQFPTgd5KUeTbKFcosej4NB1FxlV\\n6oBARZRxy39cNvq5DV30C/H43ptlGxVGP8heASfbu2rjsK+ljyX29vwIXGvsSlLA\\n/XFHqToXkPVPm2WAtptTfWNh9tmmQ76JlvoRYOQfS9ogNt0gQEH3aKk9oNjQJ39h\\n4Juxcsx9bPGxvxsfS12J5Ciz+qgzaNoBHZXsuEfhAlRawktYHyI1/R7Y+pKRhOvl\\nSTDfl0zt\\n-----END CERTIFICATE-----\\n\",\"contentType\":\"application/x-pem-file\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1520460463,\"exp\":1551997063,\"created\":1520461063,\"updated\":1520461063,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b78599a4-3a75-4eb8-ad96-b548325c6de6", + "Body" : "{\"value\":\"-----BEGIN PRIVATE KEY-----\\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCfLyLmwub/RyG0\\nY2o+r2h3kCgCGg7xwYIpq1WmJrk7aVveIOkcumLePB2f9LSDzQVU6NqN7OwsEbhP\\nVu8dDa+nsiCuy/fUWfHP7rAgxh8p0UOhD0vQBhweN9pc3MDsY7hbGRQi6zOSwna9\\nG+/kZ0B05cAJsk4g8GF4oXebcf2FIG6ljFFy391r3mV8Upgn3YTsS3B5DmHcEiyk\\nZWP6tUf8E40MAZEbWvIBk0KkTJBr3tbP8MpVANmMwP9Kcs/RiYosCog3IBZyaTVG\\ng6PMowELdo4gzeuWGmGeWQXvBcQJ2iipgydsu+FJ5WGvR/K3SEeOT+KOZM79fD/X\\nDSRhW5QJAgMBAAECggEASqHYbLXLhLtOX5tOuEYYJhp1z4p1ID64Lp4wYV59cQ/0\\nLQBkGv5+FTC9OP4LVlIc4lLsCSegEQdb0QLyx73fcbHPpfRmZO6os3L2q98HxFzj\\nJtObmVQMAdTw8aHkZ9BXIorvCHIas3+uGPrMrdsE+umu8DzjaYkaQer+P2ih0rSF\\nEJu6kA2rXoVQwxlEOIEY/Cd7aFvnJdySePDc9b75n+Jyofl+RYvndpo+66xwY75O\\nAsfnppYwy8iG0bwC5D1DUyyx97qWxf7hIhm1K11BXfGoCzSeaRQJ+uQA/SjJvrjC\\ntjjxtyhVtxBJxfL9H8k+D5Mgyi+DR6tkSKVwuKJagwKBgQDCna55QZmNDZHE4GQs\\n7yc0MB7UvmGkEhciX0R9tRo8WwlFQ8cWCExGv7Z44YWp85E6ipsNijbYQyEDwT5w\\nIt3JbspyLzaAlTCY0oplSBu79I1xhaKbQfXFXaLbNX1nCxRwMTLZvdjvOtKwyMf4\\n6DxJEqy5yZISNmzPooOLmrBkdwKBgQDRZIC7zfGZY4nQ9TqWag/DYSkTQVbq9NYd\\nsNlIOrvF3abXzFOXDkHBAKubTxCq32itdlq6iMvI6HfBwz5kNEqV3ZKPIHLNXCsC\\nP5HBahWpruc6mdbFuinb2BV38+9GjuZvX4JhgMu8HwLjK83L1kivyePZ0gfGxzJD\\nwHbfaARrfwKBgACJmPLCyJ7IG8/0YrJxEqWlQGCMCg7+8ctpgfHq7yCdi8ACOOmJ\\nqlRDsUhSLyFSB+OmgFkgOZiNTukIvphmsEAfKzX3hWoDf3fclP9EnLb/LOjUWqed\\nHgWmhY2fbzI6qJrKt/479P5sJirQ0ySP16LIB2wX72xXdCN6qmxXSAdvAoGAT9wX\\n6Qizoz++WS6eKK3M00RkKQ7beoLkgrBnPlAAO4e80UMBgnQSieyahoJSJglM4BNq\\nqQfxSO+4dPLlAcybwaqe8e17O21yjcn26iBuoKevUr9HlWPaARnZnkUvteZcZo+z\\np0I68cWWEVQsihhw4nKKbxHWm25vcj2eWLhQLzsCgYBzVkwqxpHKbrFRbwaA2mvy\\nTG+YcQ2BAxwDoTNMoTxd6Dpr7gJrMp0TP44D/GT1epQ5y/RIXidD9NEGHtNLNdyl\\nED5qpkf7KcJWX5bayv4J4GO69bKJ6Zc0s0AY407poT6YkocR6g5eooWhAnwy9+wu\\nOjGDOjclflakD2ZT72JpEQ==\\n-----END PRIVATE KEY-----\\n-----BEGIN CERTIFICATE-----\\nMIIDMjCCAhqgAwIBAgIQf9T9DmA9QcGhQXvCLtWQAjANBgkqhkiG9w0BAQsFADAW\\nMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODA2MjUyMDMwMzlaFw0xOTA2MjUy\\nMDQwMzlaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEF\\nAAOCAQ8AMIIBCgKCAQEAny8i5sLm/0chtGNqPq9od5AoAhoO8cGCKatVpia5O2lb\\n3iDpHLpi3jwdn/S0g80FVOjajezsLBG4T1bvHQ2vp7Igrsv31Fnxz+6wIMYfKdFD\\noQ9L0AYcHjfaXNzA7GO4WxkUIuszksJ2vRvv5GdAdOXACbJOIPBheKF3m3H9hSBu\\npYxRct/da95lfFKYJ92E7EtweQ5h3BIspGVj+rVH/BONDAGRG1ryAZNCpEyQa97W\\nz/DKVQDZjMD/SnLP0YmKLAqINyAWcmk1RoOjzKMBC3aOIM3rlhphnlkF7wXECdoo\\nqYMnbLvhSeVhr0fyt0hHjk/ijmTO/Xw/1w0kYVuUCQIDAQABo3wwejAOBgNVHQ8B\\nAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH\\nAwIwHwYDVR0jBBgwFoAU0lTOOFbZLp5QEKOHDHWliSUn8iAwHQYDVR0OBBYEFG7f\\nj9k7AGS/LOdkE307A+h2HC7vMA0GCSqGSIb3DQEBCwUAA4IBAQBt+a2vMq0BTLah\\n3qJXwuRVYRGm5wmTsMAuehRZeeYegO8lkCVc3xmwj3jQO6EV8th466EhAyjUc2g4\\nyvrGhXJ4czRDKI7ZWSkfcS4YzMs4tMihg81pRo/pyziLcdy9kBebLLoCZ4P7OGy/\\nfI26COi+uTUonfn1S4rMc6HqCR1i0L+rHvubyNOn4zh3D7ZlOJsPg4uQ5riktpNc\\nvBRIbRDXMTjqOcJBFgsodkcZNhcO0K8UodY/nM2NicKkImso6sNrzZqHKDSEvqsK\\nBx7f1cTXIKbdM6XxbxfTPLuCLldxkVkztzYJ2Jx5IX9fNZXV3JIMdE3gtczm3ZSC\\nu9mF8zB4\\n-----END CERTIFICATE-----\\n\",\"contentType\":\"application/x-pem-file\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1529958639,\"exp\":1561495239,\"created\":1529959239,\"updated\":1529959239,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:40:53 GMT", "content-length" : "2548", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -228,23 +209,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "46bdb4c1-4ba3-45d6-a1bb-e1f27a535786", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem\",\"deletedDate\":1520461073,\"scheduledPurgeDate\":1528237073,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"x5t\":\"ZBIJi8orGNr44JEHUxVEapDdJXg\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQKYmzJ13LQqWiitOQyJNhfTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODAzMDcyMjA3NDNaFw0xOTAzMDcyMjE3NDNaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApOZU/Ft3MUW4xvv75A2YatQHceH3ydKPfjo9FKcokCQGz93/PoisVhxO5041XLlVDULxN9fzEHBFHMvDMfXTo7/4Qi0kbONmF1/KZk0LzXa3Mi7O/7tuVW/MHOQR59E0Z0vXoVg9izBa+GfHxLuOhtv1CsgOtYktCCNK+gZBFB6dAsisfwqbEYrfxLnhguZbkSGxuyat5il4JyG7ItcU0aWaWQLvtuvgsnsA4LNfurimTUUSDvtzh5CmG0sjFEr3IL5bu3x+R1rtOEDWxRGEChGUZDOCftGcDSBchgPe0u+PaMLAvU4e7Lg0lGSjQsYGyhNLL5en46D1vZv6XFYrHwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUkG2TGjP/VRSwXWZoole0X2C+y60wHQYDVR0OBBYEFCNO8zBQcKXX9OSO4ysorf22r1ahMA0GCSqGSIb3DQEBCwUAA4IBAQBqZuHsRuDgyaI9ayRb2IjH4nQI8UH8u+krafhGbckiMXmdEsHvRSoZj3sAh2rJGDPuRD/WkNqa/G1Mv+g3q97UfE95R7JinTNzEPYM2qvkQnd6ZyPtfQFPTgd5KUeTbKFcosej4NB1FxlV6oBARZRxy39cNvq5DV30C/H43ptlGxVGP8heASfbu2rjsK+ljyX29vwIXGvsSlLA/XFHqToXkPVPm2WAtptTfWNh9tmmQ76JlvoRYOQfS9ogNt0gQEH3aKk9oNjQJ39h4Juxcsx9bPGxvxsfS12J5Ciz+qgzaNoBHZXsuEfhAlRawktYHyI1/R7Y+pKRhOvlSTDfl0zt\",\"attributes\":{\"enabled\":true,\"nbf\":1520460463,\"exp\":1551997063,\"created\":1520461063,\"updated\":1520461063,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461051,\"updated\":1520461051}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "aa33ad02-0c89-4b6b-8caf-0e9f7ca31971", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem\",\"deletedDate\":1529959253,\"scheduledPurgeDate\":1537735253,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"x5t\":\"bSPb4FA82jMarzsvK3yqMUB93GU\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQf9T9DmA9QcGhQXvCLtWQAjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODA2MjUyMDMwMzlaFw0xOTA2MjUyMDQwMzlaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAny8i5sLm/0chtGNqPq9od5AoAhoO8cGCKatVpia5O2lb3iDpHLpi3jwdn/S0g80FVOjajezsLBG4T1bvHQ2vp7Igrsv31Fnxz+6wIMYfKdFDoQ9L0AYcHjfaXNzA7GO4WxkUIuszksJ2vRvv5GdAdOXACbJOIPBheKF3m3H9hSBupYxRct/da95lfFKYJ92E7EtweQ5h3BIspGVj+rVH/BONDAGRG1ryAZNCpEyQa97Wz/DKVQDZjMD/SnLP0YmKLAqINyAWcmk1RoOjzKMBC3aOIM3rlhphnlkF7wXECdooqYMnbLvhSeVhr0fyt0hHjk/ijmTO/Xw/1w0kYVuUCQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU0lTOOFbZLp5QEKOHDHWliSUn8iAwHQYDVR0OBBYEFG7fj9k7AGS/LOdkE307A+h2HC7vMA0GCSqGSIb3DQEBCwUAA4IBAQBt+a2vMq0BTLah3qJXwuRVYRGm5wmTsMAuehRZeeYegO8lkCVc3xmwj3jQO6EV8th466EhAyjUc2g4yvrGhXJ4czRDKI7ZWSkfcS4YzMs4tMihg81pRo/pyziLcdy9kBebLLoCZ4P7OGy/fI26COi+uTUonfn1S4rMc6HqCR1i0L+rHvubyNOn4zh3D7ZlOJsPg4uQ5riktpNcvBRIbRDXMTjqOcJBFgsodkcZNhcO0K8UodY/nM2NicKkImso6sNrzZqHKDSEvqsKBx7f1cTXIKbdM6XxbxfTPLuCLldxkVkztzYJ2Jx5IX9fNZXV3JIMdE3gtczm3ZSCu9mF8zB4\",\"attributes\":{\"enabled\":true,\"nbf\":1529958639,\"exp\":1561495239,\"created\":1529959239,\"updated\":1529959239,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529959236,\"updated\":1529959236}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:40:53 GMT", "content-length" : "93", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -254,23 +236,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c6a4de2a-db74-445b-9881-e19f0db2df74", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "21ebe23b-bc66-40eb-9c24-6f8f6a30dd49", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: createTestJavaPem\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:17:54 GMT", + "date" : "Mon, 25 Jun 2018 20:40:54 GMT", "content-length" : "101", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -280,23 +263,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6d98643c-2577-422d-858d-71dd1ef4d915", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "da03ee97-601a-4aac-9896-9da2d9ef0ac5", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: createTestJavaPem\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:18:04 GMT", + "date" : "Mon, 25 Jun 2018 20:41:06 GMT", "content-length" : "2548", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -306,22 +290,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e4fd8003-74b1-4ee7-ada2-cefbda266e68", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem\",\"deletedDate\":1520461073,\"scheduledPurgeDate\":1528237073,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/12a5e63ca5dc413db39a98df9302dde7\",\"x5t\":\"ZBIJi8orGNr44JEHUxVEapDdJXg\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQKYmzJ13LQqWiitOQyJNhfTANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODAzMDcyMjA3NDNaFw0xOTAzMDcyMjE3NDNaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApOZU/Ft3MUW4xvv75A2YatQHceH3ydKPfjo9FKcokCQGz93/PoisVhxO5041XLlVDULxN9fzEHBFHMvDMfXTo7/4Qi0kbONmF1/KZk0LzXa3Mi7O/7tuVW/MHOQR59E0Z0vXoVg9izBa+GfHxLuOhtv1CsgOtYktCCNK+gZBFB6dAsisfwqbEYrfxLnhguZbkSGxuyat5il4JyG7ItcU0aWaWQLvtuvgsnsA4LNfurimTUUSDvtzh5CmG0sjFEr3IL5bu3x+R1rtOEDWxRGEChGUZDOCftGcDSBchgPe0u+PaMLAvU4e7Lg0lGSjQsYGyhNLL5en46D1vZv6XFYrHwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUkG2TGjP/VRSwXWZoole0X2C+y60wHQYDVR0OBBYEFCNO8zBQcKXX9OSO4ysorf22r1ahMA0GCSqGSIb3DQEBCwUAA4IBAQBqZuHsRuDgyaI9ayRb2IjH4nQI8UH8u+krafhGbckiMXmdEsHvRSoZj3sAh2rJGDPuRD/WkNqa/G1Mv+g3q97UfE95R7JinTNzEPYM2qvkQnd6ZyPtfQFPTgd5KUeTbKFcosej4NB1FxlV6oBARZRxy39cNvq5DV30C/H43ptlGxVGP8heASfbu2rjsK+ljyX29vwIXGvsSlLA/XFHqToXkPVPm2WAtptTfWNh9tmmQ76JlvoRYOQfS9ogNt0gQEH3aKk9oNjQJ39h4Juxcsx9bPGxvxsfS12J5Ciz+qgzaNoBHZXsuEfhAlRawktYHyI1/R7Y+pKRhOvlSTDfl0zt\",\"attributes\":{\"enabled\":true,\"nbf\":1520460463,\"exp\":1551997063,\"created\":1520461063,\"updated\":1520461063,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461051,\"updated\":1520461051}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4fd4d8d3-2674-4a03-8c88-e24ec6073aaa", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem\",\"deletedDate\":1529959253,\"scheduledPurgeDate\":1537735253,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPem/88bcd3f302bd46c58b18ba87b594bdf7\",\"x5t\":\"bSPb4FA82jMarzsvK3yqMUB93GU\",\"cer\":\"MIIDMjCCAhqgAwIBAgIQf9T9DmA9QcGhQXvCLtWQAjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtUZXN0SmF2YVBlbTAeFw0xODA2MjUyMDMwMzlaFw0xOTA2MjUyMDQwMzlaMBYxFDASBgNVBAMTC1Rlc3RKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAny8i5sLm/0chtGNqPq9od5AoAhoO8cGCKatVpia5O2lb3iDpHLpi3jwdn/S0g80FVOjajezsLBG4T1bvHQ2vp7Igrsv31Fnxz+6wIMYfKdFDoQ9L0AYcHjfaXNzA7GO4WxkUIuszksJ2vRvv5GdAdOXACbJOIPBheKF3m3H9hSBupYxRct/da95lfFKYJ92E7EtweQ5h3BIspGVj+rVH/BONDAGRG1ryAZNCpEyQa97Wz/DKVQDZjMD/SnLP0YmKLAqINyAWcmk1RoOjzKMBC3aOIM3rlhphnlkF7wXECdooqYMnbLvhSeVhr0fyt0hHjk/ijmTO/Xw/1w0kYVuUCQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAU0lTOOFbZLp5QEKOHDHWliSUn8iAwHQYDVR0OBBYEFG7fj9k7AGS/LOdkE307A+h2HC7vMA0GCSqGSIb3DQEBCwUAA4IBAQBt+a2vMq0BTLah3qJXwuRVYRGm5wmTsMAuehRZeeYegO8lkCVc3xmwj3jQO6EV8th466EhAyjUc2g4yvrGhXJ4czRDKI7ZWSkfcS4YzMs4tMihg81pRo/pyziLcdy9kBebLLoCZ4P7OGy/fI26COi+uTUonfn1S4rMc6HqCR1i0L+rHvubyNOn4zh3D7ZlOJsPg4uQ5riktpNcvBRIbRDXMTjqOcJBFgsodkcZNhcO0K8UodY/nM2NicKkImso6sNrzZqHKDSEvqsKBx7f1cTXIKbdM6XxbxfTPLuCLldxkVkztzYJ2Jx5IX9fNZXV3JIMdE3gtczm3ZSCu9mF8zB4\",\"attributes\":{\"enabled\":true,\"nbf\":1529958639,\"exp\":1561495239,\"created\":1529959239,\"updated\":1529959239,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=TestJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPemIssuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529959236,\"updated\":1529959236}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPem/pending\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:18:04 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:41:07 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -330,10 +315,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fac1d2e9-9114-4bda-9415-6b70bfc4b683", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "fe1bc27a-ba1b-4f23-a91b-ce27339b5aaa", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/createCertificatePkcs12ForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/createCertificatePkcs12ForCertificateOperationsTest.json index 3636727..a569a17 100644 --- a/azure-keyvault/target/test-classes/session-records/createCertificatePkcs12ForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/createCertificatePkcs12ForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:09 GMT", + "date" : "Mon, 25 Jun 2018 20:36:24 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "67e5a6d8-2130-45ab-a503-a1d1e8eb5269", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e74fdd92-8f59-4a9e-b169-ceb6156be7f8", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:09 GMT", + "date" : "Mon, 25 Jun 2018 20:36:27 GMT", "content-length" : "376", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ebb9d0e4-3c68-41cf-932e-3cbb3d8af169", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1504827149,\"updated\":1520461210}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d7bbf3cd-359b-4495-b8ea-b1686ec58487", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1504827149,\"updated\":1529958987}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:10 GMT", + "date" : "Mon, 25 Jun 2018 20:36:31 GMT", "content-length" : "1343", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,24 +73,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0-preview&request_id=0259eb4a1d34474bb651ccb8faa527b3", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0&request_id=c15f4a8bbfe549c390bb16ab09dbcfa1", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b07c470a-38be-4250-8479-ff1e659559e0", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDN5fBJjvGe8sYVcMmm8dleLYWqY7QBf/rDXZJiTusgIgcGnZdVMO/NZ/eRu1V4hb1toxsMvAuzrSpb7ncV3K+F56A7jF55GuVd5sy9ZRxHElljtXFN55ezCT4QGoHpSOev/9diRpmEbj91jHiiR409k6x6TVrMe+VBVolyGqmVsnteJQzUYpd4d/9Um2K7CsJjBpp6pt5dzbxjp63T5BGjfdJ862FJkrQA6JILr8YqAF/IdhU9nNxOPBaZeurxvLBpltZKGc/XJX62s487JQC9yRubM1kkEdohRkUopWqAU8S3kjX2kLr1OD0RUE4GjUEYBeBfbb1G5At+ARbfwdsnAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAuNKfIuQf0odoOQI1GcSgDYDmv78yLcthv82Bmbmita+BYVKyJ85rUFZN9DhgyPSGPAgfhquE7tBkq53sLJA4rHqwez1upPGYHxp4Dmp1AbK6uldKsFD21fqMdpCkY5405NKesOrvLyu1/D1wiP4tHYt+tR9B3+a1AxWIeWjxB5m49KtZ7/2kgIxD1KRmr1se4YqXM4ektXAuDaAyqvkmZ22wUrpr5Brk3FdRyPR401o2fUSj+FA3v7N1ww7aYXOOjAyDzBNbXB0+d7SPnX8aOe2LEXCOI0lFbRD56kuClB40cPiBMM8biB6J1hmk8CtbPOSqr34CIv92MKjWCnD46g==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"0259eb4a1d34474bb651ccb8faa527b3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "73f57557-30d8-4637-95e5-c12cb78e78b7", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4q86mx/vht2JI+A13YuyiOf/nO/LV4JQrG7XjoDMD9q+P2MHDuaHJz3FfzLwspSVIeCELCYyBNHQp1NctCg/Js9HoBpQ08xbs/4y6v4HbunkTg5jeORC1m+sh9WbK0HHZM5psNR9SYoeV0LsGk0dcqEyRXzU8WhoxiYDeZM4S6zCKtmvmPNQtRgjOmOoYF7E/P89wnvHs9rAhvvPA2lBfplhTC2xeRqXiARoctcUykbkTkpQ2KCWVzIm9thSBdZhIlOYAujVpZINBlxvrd2NKbZn8ITsXrNiDxdMOzvPX/FERaxO2EGswZv+KVWh3merYM9Fa+ezj8th2xIZBpQN1AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnK3UrFe7Lw/CVLjbaVEzyFuyruCJ1xJl0j6wD4wivt2dHS1gHYYCRQfIfAYF5/s7rMNjJB4ZG+DKuAoIXfjwb3eMC04Fr5Da9qDrn6H9s/Y65zkx1M445aeB27/BndvzYPyou6OKfmXmSfFIxgL5Bl6lA7YtF9nYwtI3+TahDDEM6X4A29SJAsIH5COwrLlmYA0x4ZtmsQWOMEynKhU4GU/UMb7lDmBJLSYAPe6NDmWUxF0QGuF99PfERkAXFfITWiTGml/6jS2G1vvgmdZUMHVwbegoSqENjVATJy9fbUMS39mhyRXHS0BUUEnfkQbTRuTHXkV4rQNV0h1hcshpCA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"c15f4a8bbfe549c390bb16ab09dbcfa1\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:12 GMT", + "date" : "Mon, 25 Jun 2018 20:36:32 GMT", "content-length" : "1343", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,23 +101,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "69802573-024b-4a9d-86c7-1341aaaf680b", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDN5fBJjvGe8sYVcMmm8dleLYWqY7QBf/rDXZJiTusgIgcGnZdVMO/NZ/eRu1V4hb1toxsMvAuzrSpb7ncV3K+F56A7jF55GuVd5sy9ZRxHElljtXFN55ezCT4QGoHpSOev/9diRpmEbj91jHiiR409k6x6TVrMe+VBVolyGqmVsnteJQzUYpd4d/9Um2K7CsJjBpp6pt5dzbxjp63T5BGjfdJ862FJkrQA6JILr8YqAF/IdhU9nNxOPBaZeurxvLBpltZKGc/XJX62s487JQC9yRubM1kkEdohRkUopWqAU8S3kjX2kLr1OD0RUE4GjUEYBeBfbb1G5At+ARbfwdsnAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAuNKfIuQf0odoOQI1GcSgDYDmv78yLcthv82Bmbmita+BYVKyJ85rUFZN9DhgyPSGPAgfhquE7tBkq53sLJA4rHqwez1upPGYHxp4Dmp1AbK6uldKsFD21fqMdpCkY5405NKesOrvLyu1/D1wiP4tHYt+tR9B3+a1AxWIeWjxB5m49KtZ7/2kgIxD1KRmr1se4YqXM4ektXAuDaAyqvkmZ22wUrpr5Brk3FdRyPR401o2fUSj+FA3v7N1ww7aYXOOjAyDzBNbXB0+d7SPnX8aOe2LEXCOI0lFbRD56kuClB40cPiBMM8biB6J1hmk8CtbPOSqr34CIv92MKjWCnD46g==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"0259eb4a1d34474bb651ccb8faa527b3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1ba56c71-bea9-4c1f-8b81-74aebe65db0d", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4q86mx/vht2JI+A13YuyiOf/nO/LV4JQrG7XjoDMD9q+P2MHDuaHJz3FfzLwspSVIeCELCYyBNHQp1NctCg/Js9HoBpQ08xbs/4y6v4HbunkTg5jeORC1m+sh9WbK0HHZM5psNR9SYoeV0LsGk0dcqEyRXzU8WhoxiYDeZM4S6zCKtmvmPNQtRgjOmOoYF7E/P89wnvHs9rAhvvPA2lBfplhTC2xeRqXiARoctcUykbkTkpQ2KCWVzIm9thSBdZhIlOYAujVpZINBlxvrd2NKbZn8ITsXrNiDxdMOzvPX/FERaxO2EGswZv+KVWh3merYM9Fa+ezj8th2xIZBpQN1AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnK3UrFe7Lw/CVLjbaVEzyFuyruCJ1xJl0j6wD4wivt2dHS1gHYYCRQfIfAYF5/s7rMNjJB4ZG+DKuAoIXfjwb3eMC04Fr5Da9qDrn6H9s/Y65zkx1M445aeB27/BndvzYPyou6OKfmXmSfFIxgL5Bl6lA7YtF9nYwtI3+TahDDEM6X4A29SJAsIH5COwrLlmYA0x4ZtmsQWOMEynKhU4GU/UMb7lDmBJLSYAPe6NDmWUxF0QGuF99PfERkAXFfITWiTGml/6jS2G1vvgmdZUMHVwbegoSqENjVATJy9fbUMS39mhyRXHS0BUUEnfkQbTRuTHXkV4rQNV0h1hcshpCA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"c15f4a8bbfe549c390bb16ab09dbcfa1\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:21 GMT", + "date" : "Mon, 25 Jun 2018 20:36:44 GMT", + "content-length" : "1343", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "200", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "93d4d57d-5cd5-43ae-ad29-4856fcc43d52", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4q86mx/vht2JI+A13YuyiOf/nO/LV4JQrG7XjoDMD9q+P2MHDuaHJz3FfzLwspSVIeCELCYyBNHQp1NctCg/Js9HoBpQ08xbs/4y6v4HbunkTg5jeORC1m+sh9WbK0HHZM5psNR9SYoeV0LsGk0dcqEyRXzU8WhoxiYDeZM4S6zCKtmvmPNQtRgjOmOoYF7E/P89wnvHs9rAhvvPA2lBfplhTC2xeRqXiARoctcUykbkTkpQ2KCWVzIm9thSBdZhIlOYAujVpZINBlxvrd2NKbZn8ITsXrNiDxdMOzvPX/FERaxO2EGswZv+KVWh3merYM9Fa+ezj8th2xIZBpQN1AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnK3UrFe7Lw/CVLjbaVEzyFuyruCJ1xJl0j6wD4wivt2dHS1gHYYCRQfIfAYF5/s7rMNjJB4ZG+DKuAoIXfjwb3eMC04Fr5Da9qDrn6H9s/Y65zkx1M445aeB27/BndvzYPyou6OKfmXmSfFIxgL5Bl6lA7YtF9nYwtI3+TahDDEM6X4A29SJAsIH5COwrLlmYA0x4ZtmsQWOMEynKhU4GU/UMb7lDmBJLSYAPe6NDmWUxF0QGuF99PfERkAXFfITWiTGml/6jS2G1vvgmdZUMHVwbegoSqENjVATJy9fbUMS39mhyRXHS0BUUEnfkQbTRuTHXkV4rQNV0h1hcshpCA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"c15f4a8bbfe549c390bb16ab09dbcfa1\"}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 20:36:55 GMT", "content-length" : "1270", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c736aa92-1da2-44d8-abfd-b0455c9a8ac1", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDN5fBJjvGe8sYVcMmm8dleLYWqY7QBf/rDXZJiTusgIgcGnZdVMO/NZ/eRu1V4hb1toxsMvAuzrSpb7ncV3K+F56A7jF55GuVd5sy9ZRxHElljtXFN55ezCT4QGoHpSOev/9diRpmEbj91jHiiR409k6x6TVrMe+VBVolyGqmVsnteJQzUYpd4d/9Um2K7CsJjBpp6pt5dzbxjp63T5BGjfdJ862FJkrQA6JILr8YqAF/IdhU9nNxOPBaZeurxvLBpltZKGc/XJX62s487JQC9yRubM1kkEdohRkUopWqAU8S3kjX2kLr1OD0RUE4GjUEYBeBfbb1G5At+ARbfwdsnAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAuNKfIuQf0odoOQI1GcSgDYDmv78yLcthv82Bmbmita+BYVKyJ85rUFZN9DhgyPSGPAgfhquE7tBkq53sLJA4rHqwez1upPGYHxp4Dmp1AbK6uldKsFD21fqMdpCkY5405NKesOrvLyu1/D1wiP4tHYt+tR9B3+a1AxWIeWjxB5m49KtZ7/2kgIxD1KRmr1se4YqXM4ektXAuDaAyqvkmZ22wUrpr5Brk3FdRyPR401o2fUSj+FA3v7N1ww7aYXOOjAyDzBNbXB0+d7SPnX8aOe2LEXCOI0lFbRD56kuClB40cPiBMM8biB6J1hmk8CtbPOSqr34CIv92MKjWCnD46g==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12\",\"request_id\":\"0259eb4a1d34474bb651ccb8faa527b3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0bfa63b4-eb1d-4227-923f-207998d2c468", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\",\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"csr\":\"MIICqTCCAZECAQAwGTEXMBUGA1UEAxMOVGVzdEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC4q86mx/vht2JI+A13YuyiOf/nO/LV4JQrG7XjoDMD9q+P2MHDuaHJz3FfzLwspSVIeCELCYyBNHQp1NctCg/Js9HoBpQ08xbs/4y6v4HbunkTg5jeORC1m+sh9WbK0HHZM5psNR9SYoeV0LsGk0dcqEyRXzU8WhoxiYDeZM4S6zCKtmvmPNQtRgjOmOoYF7E/P89wnvHs9rAhvvPA2lBfplhTC2xeRqXiARoctcUykbkTkpQ2KCWVzIm9thSBdZhIlOYAujVpZINBlxvrd2NKbZn8ITsXrNiDxdMOzvPX/FERaxO2EGswZv+KVWh3merYM9Fa+ezj8th2xIZBpQN1AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnK3UrFe7Lw/CVLjbaVEzyFuyruCJ1xJl0j6wD4wivt2dHS1gHYYCRQfIfAYF5/s7rMNjJB4ZG+DKuAoIXfjwb3eMC04Fr5Da9qDrn6H9s/Y65zkx1M445aeB27/BndvzYPyou6OKfmXmSfFIxgL5Bl6lA7YtF9nYwtI3+TahDDEM6X4A29SJAsIH5COwrLlmYA0x4ZtmsQWOMEynKhU4GU/UMb7lDmBJLSYAPe6NDmWUxF0QGuF99PfERkAXFfITWiTGml/6jS2G1vvgmdZUMHVwbegoSqENjVATJy9fbUMS39mhyRXHS0BUUEnfkQbTRuTHXkV4rQNV0h1hcshpCA==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12\",\"request_id\":\"c15f4a8bbfe549c390bb16ab09dbcfa1\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:21 GMT", + "date" : "Mon, 25 Jun 2018 20:36:57 GMT", "content-length" : "2418", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +182,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fea52a0a-04ad-4da5-9ec1-6e67e111849b", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"x5t\":\"OUibGbupAIEctCiKdsnhLFNsE4k\",\"cer\":\"MIIDODCCAiCgAwIBAgIQe7J+Uo5uRfKZnPhPSs9oIzANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODAzMDcyMjEwMTRaFw0xOTAzMDcyMjIwMTRaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzeXwSY7xnvLGFXDJpvHZXi2FqmO0AX/6w12SYk7rICIHBp2XVTDvzWf3kbtVeIW9baMbDLwLs60qW+53FdyvheegO4xeeRrlXebMvWUcRxJZY7VxTeeXswk+EBqB6Ujnr//XYkaZhG4/dYx4okeNPZOsek1azHvlQVaJchqplbJ7XiUM1GKXeHf/VJtiuwrCYwaaeqbeXc28Y6et0+QRo33SfOthSZK0AOiSC6/GKgBfyHYVPZzcTjwWmXrq8bywaZbWShnP1yV+trOPOyUAvckbmzNZJBHaIUZFKKVqgFPEt5I19pC69Tg9EVBOBo1BGAXgX229RuQLfgEW38HbJwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUgs9+6cW+jsgx/SRsNDTsZPBloygwHQYDVR0OBBYEFOTzblM7Xlkp/Ju7Em7TUIA63olJMA0GCSqGSIb3DQEBCwUAA4IBAQA7cHuN1wO3Ls94LaBmRVrIgv9YUn38JUtAKXEJdZl7Ve/0gYpFVjdhuFCZiwj8h5olVHTCyLUm8+ZP4rgy9JaIcnHmRRdaAFDCl30INn82CW9EGgPjME9UHErO6AMrUoVncH0oZOa9FfEU6pGK65SR5ugy+njNnoOGE3dZZNHFBK/YAedFztiMcYa9FGu+YVadgK9vETiMmL5IU4wr5OweP7pI0Ip0Qm/G6vdVXdGDvz8qLRu3e8VJ6W9w8+hv3ft+wHp9/35XtKCHLSjqcf99n0uwXMBoJaSiFOh0vX6HejQYmXpgJfyJEf3ZFzS+9tBc/ZUzbxS8UY8oM2Ogeyvn\",\"attributes\":{\"enabled\":true,\"nbf\":1520460614,\"exp\":1551997214,\"created\":1520461215,\"updated\":1520461215,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461211,\"updated\":1520461211}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "635ae0b6-c95c-4f62-8640-1b36ca3ce8cd", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"x5t\":\"fUfw4DGjio1BqfdwQ7AK951i8Zk\",\"cer\":\"MIIDODCCAiCgAwIBAgIQFmqP0PPTRM6FBFX3cXaQZTANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODA2MjUyMDI2NTFaFw0xOTA2MjUyMDM2NTFaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuKvOpsf74bdiSPgNd2Lsojn/5zvy1eCUKxu146AzA/avj9jBw7mhyc9xX8y8LKUlSHghCwmMgTR0KdTXLQoPybPR6AaUNPMW7P+Mur+B27p5E4OY3jkQtZvrIfVmytBx2TOabDUfUmKHldC7BpNHXKhMkV81PFoaMYmA3mTOEuswirZr5jzULUYIzpjqGBexPz/PcJ7x7PawIb7zwNpQX6ZYUwtsXkal4gEaHLXFMpG5E5KUNigllcyJvbYUgXWYSJTmALo1aWSDQZcb63djSm2Z/CE7F6zYg8XTDs7z1/xREWsTthBrMGb/ilVod5nq2DPRWvns4/LYdsSGQaUDdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUwghKbu/mgatv1mPyZik7IBwTsdgwHQYDVR0OBBYEFIqpy5Hq8S9KYnv97NIhcheyHb+DMA0GCSqGSIb3DQEBCwUAA4IBAQBOtplnWVtSddrIvUtnQ0T+SgFarJ8z8LATN10xFFn6WoN12FZJbLsLIgZ2X8XI8R8mzsxUoH97pTlodS6BIFUQEwSV6Md9MONqqnxcky87fAs0tc/dYPaU6e+xx0xqzle2EJu4pPNoe/vT4PoIFpixIec6T8X65wUgh1wl6IOElGNVen5GuteEfPJ7z2HedAPom3c0hU+ZHFWTkkRXvY+Bh83txI/SMAP16y+YhOhCAM4HqUg2sq+T5BFYZ79vSw1r+SODSqWtYNOjIGTEVhvhYSjaevodTHjKis9S+9xhvftZSzMadyts1tg6RZqrCH1Igqjq9Q1ujGZW1HLggwVX\",\"attributes\":{\"enabled\":true,\"nbf\":1529958411,\"exp\":1561495011,\"created\":1529959011,\"updated\":1529959011,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529958991,\"updated\":1529958991}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:22 GMT", - "content-length" : "3940", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:36:58 GMT", + "content-length" : "3952", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,23 +209,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "65b7140a-5fd9-4820-8b53-05efd3e0e0a4", - "Body" : "{\"value\":\"MIIKPAIBAzCCCfwGCSqGSIb3DQEHAaCCCe0EggnpMIIJ5TCCBg4GCSqGSIb3DQEHAaCCBf8EggX7MIIF9zCCBfMGCyqGSIb3DQEMCgECoIIE9jCCBPIwHAYKKoZIhvcNAQwBAzAOBAilr9LpmAaNEwICB9AEggTQiA1vjZgVCq3eXvLnDUePiPisuAnhcU/f43GwmfKIvp0xHH52BnBBK2CY3L4voHDsVoroY2Fhp4WKE49faP2p94bQZHBnkThI8/UlVW/zxNlBvARL0F0+k05YUq56UFfmSRhCxkV8dvlhc6XUE/J+s5YPqSrdz7GeRPFerPA1zOTO6vBEwowI8eb+kN254PKGAO5FMVol5vdjANjdu2nE49wq+FxXe89gQvVqBIJMxVeZAn+NGJSoc5cTokg96wKZyhqzN2j26Sos5jO2/MHA77yRSjOlWovmvIY+dF6R9E1SG0eF7hswwjwlZkUQP8gHI5g+UenrofDkoLuJRuhxqNYr7oIzuMQCbXmvRv1S6x13S4wIiyn6N5/PCtwuYWm1+Ku+qE0PkUftVWruzvB5VSZsJ9flHNPadwmkFFgHoI1klUrc4ttvKZEml4JyeqO37Vj2zEZZzpf/PthB8KC2H75KpFvQvbfvJM/+oF/PxmznMTke0ZGdFGYBDfRMg3ffcggaWlyG2GmlloGqydCrknyEJQ6QUHot+KdCyL3QizAccdad7mUnPM/3BXiVR3jAqGLNto7GJ2U048DJZI77FfhShXLT60VSrrhkPqMhurkA6nMMor4UBf/yikJknD1fj+AuogyXdP2bErIETf0MfgdbmTZfWdrcGx3F9q0CHaFlBYJRoQjBjD3G6P3b9deOATtknWGNEsJ0gcbO0WJObSlZC5bnfaOz2qppHr9Io9F41yjxU1sGxZjO+cEHzAIRHacJMJL2N25/2fKXNgA/gkwfz4hKJQZ0BTiQyLS8LYun6wFRMFSkxvNJ+Hng1mPf85V/HAzEUbAkrOtd5MhYbzsLEJPfGdoQSka0cWpiaS4mNpaGvpsLMMbS53f5Gr+HK7agMv3ik4pDHTV+Lnf9IzMoNZOOHI2Tugu95hcid0I8hgAqTuiwzxeLxjdz1IfM0GezyMTLxQ/cS6GCWfVJEP6er+ZXE4qBSuoKPxFOizKLVoz+FFDELXObWpW2KtDFCUfDA7A2Pa8aqRAaY+PEvaSsaqjkJ/f1Z1QYl2X0sM3gVZUB6GlMW4IU72dqVKwZM4Nt0bU8ufJSUxnwrhEKum/QtXR1f7r8pCC4BGh0gjWREFV/G89DUx5e6W9TSooSIHrzxz9DlkAgGqpUhf4ynINe/eIb2Xp/yLCzg/NlqdAvim5eqpY2eU1F+bl9Y+Hg5sQu608oNTwCvlBKwJL+gQT++Bk+qizPZVW0bpoBpaOu9KpWFWrBAaA9GuoVB9bp0Z/GgPTS+jhAUpZdu5AgKvPpKQZhwycHkLloEH2wWOqXuJMnJhumLnN/T8NoRG0c1H3219CTEG7RceFLLmZasubG+o0zwbuzWMAj8hNuDHMGk/pOr083XmItnWC/Dote80PO7AS/NG7fAXHq7BtDMSNOyL2RMQ1cYMofpHz5wnFxM1WbF68OGS5eYbSFUPzUbVxxoImhGrXsfsA77/REpPMR4U01x6LDnB9M/MDUaCdkulxUKKRJBaBt7HOU7SP8TLDwiLK/fuLLZYrqE99G4wevYecZUq15R91BLkVP5sSEmI0vCaie8PNq5eK4v3XNKzESlGtCiwAzpUqEGDeErRcOTIaO5UcLGt/JnqYyq6QxgekwEwYJKoZIhvcNAQkVMQYEBAEAAAAwVwYJKoZIhvcNAQkUMUoeSABmADcANQBmADYAYQAwAGIALQA2ADcAYwA5AC0ANABlAGIAOQAtADgAZgAzADgALQBhAGIANQA3ADcAZQA5AGMAZQAyADQANzB5BgkrBgEEAYI3EQExbB5qAE0AaQBjAHIAbwBzAG8AZgB0ACAARQBuAGgAYQBuAGMAZQBkACAAUgBTAEEAIABhAG4AZAAgAEEARQBTACAAQwByAHkAcAB0AG8AZwByAGEAcABoAGkAYwAgAFAAcgBvAHYAaQBkAGUAcjCCA88GCSqGSIb3DQEHBqCCA8AwggO8AgEAMIIDtQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQYwDgQIdKnJ1aG8dR8CAgfQgIIDiPZQhlWevCQTT+8RStCSNHfSRMxkMoIo3o4wJRcGdLx7dSkQ0XHDSlfeztC/G0GgNJUphP9VK9XKCJyWeo0XSI9oqKMKGiQPlJb+uN5/CZogXJNDun03UDfRxPIqfWUD0ZXpamcNNfaFHU2lzg7AEHLy1sxvz5WoudxmY3ykjZBFY5nl/RS0b09BLWTVh3OBTc7w2izPRiRIq8803gE0HDvIY5zaQ9xYjOc5e7ssfsxNRKs4/yFqAumf2z7FB4HMARXZCAhIJhtKPcEEhVJ1ELK1J/hh1sQXfNN40y3NA1Q/YUerlIEbXfwoCn66fJn4mBrCgHR0brDX+fUAcEErNqpOMOdAStBdre4CitF+4Xm6kU3LM7m4zolRrlXHBKVZDWffXXz29zakcMrT8Jl8O6x4pXxiCfm5lbNAXu9U2bflZoh3bSaP52qlJML5DTAQmLFmauTE0rPqd0M+iDDYAw77nlKXC+5p4HDYNEBRLkJwC2Vc6LHIGirthpqba9j1OvZ4FXL6AOBGxZdCl4Bh2MWDOm0LqMlW0/Jun3kLxsRsuDwzvIiX8cnTvWgf/JjX09Y+9Dzlz7OxQcij02BZIS7BOl+DZ4UrK5Rzsxu7cMRnmdSzsdS4Y9sQTJrt0LmFpgqN+pRCwPehKGjVl+bNQsL8b3QS7mupIAvbM3WInDz4/Zuarmm9cgmWKL096j+4nCm6RnxhHCQRBeYbNq2ErQ9uJVw2oOmd2kKDiL5/f+zEkRFx/ijp0Q8phGfU/z6zkr039q4rNBJDOfDmvw1z/mtf2I3IyuSttfdXs1glfcfU+M2ArqXbe+gewMqZvnVlde0QQMwOyb7fn9mnMlng+FgVoZxU4TqWVniDdsj2VyeD4AMuD+lRAva9g+zvgoE6ROluJIvpK1eOzANk5TAjLgpjnlyatmhztsN+dsd0pQT/qj5JCzv2BZgopLKthcOtYw6ImlKHcFr4CU1d4ZhGhT0VuQXxy/poUKxOD7914MdMjjQxENNzwnCtm2r0anR9RUddbnjAWi6LvNAuP+Z63OVQKjHckCoapsHT+LQZndvF3xyh7DTSofvBHbIHx79Fj5hnPgr3l7z2Ywo+VDyXBEsIgBXBPBpVyQwG9S7kuxUSKGcnuMVHdwhcWc0JtKnP3BPO31RbsI/TqWOpxdQP4RNvm5BztFa4ZqkDhPvfwCQCcnShke7hahowNzAfMAcGBSsOAwIaBBSrsK2VJ2t613m2lQD67eNqt5YHEgQUXcKMgW8lHCLyxrNaxHf79lCrfgw=\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1520460614,\"exp\":1551997214,\"created\":1520461215,\"updated\":1520461215,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a2456f4d-093c-4cc1-96a5-a84c6d533844", + "Body" : "{\"value\":\"MIIKRAIBAzCCCgQGCSqGSIb3DQEHAaCCCfUEggnxMIIJ7TCCBhYGCSqGSIb3DQEHAaCCBgcEggYDMIIF/zCCBfsGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAg8o5c5g7J6TwICB9AEggTYiGKSTwV0OrtVJrsTI2Yol5UdtQdqS435RsMHCkGv8ME+qKQBE06TVj0RvDGIdYLjG6jerTzZAqDZexlto+zNsbp5utTGIjnkdJ3mTs7B6NE6gPM1MEmoOm3oUaQh+Dw7mACNdz1YOsriqlb/FGLZ4bRUCmsKfVYirdsbUHCKyuWbm8sBiTVA41aIRPQGBxdjyzFFRFYJ0ZwUEkmCyCt9NhQaEYgBe6IqNdq62sjIdbLQce2IwjFDfIockwHkl0olLFyp5+xqMJO5QKsxF65iyorUmZ68fjlTyhTYbBrILihFSsYvdbVNIDHvVh6JP6VHyD6rfoeNm+qXsQvKRkAFpcs4ThhvuiJwi19xWE9qrft2FFkeooOaI5+fx33JJKmQ5ezT+9tqGabfzzxGQhmTwHVlEF6ahKOwRsQpPPD0rErYaUGXHAd4dWOtDt5VgE/hwME7Rfqe/HGIVyK7hJ9VcWTrI6n3hqfr6uR3Us8emkf7xCJbxVTdcyeoY0lAG0R1+lYg2a69u8d/hhLY2xE+BfEKNJL3804hWWob/arEN9JcEapSxnKdoAryJ7O2vzqDrCuuugb2hvAZvyIgxwzWpKyqdfhiP5dKM3lc09JWplko7iveIG8V8NELMHUV+LVlzOM+K45X1P6sXcofSsSweoDcmuywBLzu1usmlV7CKjt8Tqt81pkgR6JBIbBg0bP2klsgklVST616EjbXcPMfdRyNLa/NOGH7BS4uSgtGrlrZe0uPpQBts7UYkjs8GX07IEcVmH4bfVyiZE7zMYnEUyohPD8aJNKCN8FE2vIOqtB57QxyvDwRsdKVhsLhm5faLSj5oT7QdNWu1OGASg7clSBHSIdm3pZYp+Ga6BSAlbCqS6GIERSi8JiIq/pFbdLO78mAZ01+fJIN3+Qo95vjWLPe7JM1Bbz//0n5Zp0NUpum7AjnvFHh/Om6VhQfwelemaUhbD2kNfNIxGVGubXR6Fr07Vq5UUm9GvuQgaLDBdJ9m98iVxxQBLyOECMprRi4nTJczwwS7Q7ZJYXmRsJ5wvgp4s6dwnv0mcxevb07+G3f1vJ0Fm5b+q8ylchP3brm0M/A8lZdL5MT2FfM6rcxbjMNjq586kmj7xn8kETH0GmJ+zwgNgFmW0y823y5tBrLQ+lc7P/QH6P9+CP3IAXsMn7Sz0zGjs35/D03dIbYzdMf0EU3ssST6y4/KQtaeSNqqq4GjWDpxfVLTZvQoZ/Y4YQi4JGxUbOIxf56g55JMTXc/0AhVru1wKWRsqAfazZJvTmBG9rRk7pudxtSPUDQNVrbSaGCXK8IxQGzqWf7wzp/ohXFf5J55/fa0L/emJ5/bx9Yu5TFRhJJaEFKSrXexernVp7vs6rcfxrUhqh/q99KUiuQK1G7SxCvSJOVPHZLOxLrqZb3S6d91Qlgc8aNYXXpmXjlesYFnJfCRtHfNpwnMZ5YJKpox0nb5tNPKgxlxUQl/3wSTA8OZoH1/ghaIVu2Mlgpn2VOPJZS1KxCJ/iyaBQvLGs01teG7KLi3dZOA66sggfWiVJrbzLUdjH6OglG/W0IOMHpj69rlQMHEEkQDGhZPI6ZwXhEVuOyvYrIheCKgrqLPGjxaXZim13QkFi2mk+eoVPidoRe5fuGVC7rMCzEX5bkBDGB6TATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IADMAYwAxAGMAZgA1ADEAYgAtAGYAOABlADcALQA0AGUANgA0AC0AYgA1AGEAYQAtADAANwAwADAAOQA3ADgANQBkADQANAA2MHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIIDzwYJKoZIhvcNAQcGoIIDwDCCA7wCAQAwggO1BgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAgWR6MBt5KQiAICB9CAggOI7x1riy9+iM47LpKqv8F1OmmmELs2bLf2GKYmGmTdZtEyAz5dOsYWgLkeYMcK+fnpc5vujT3fJRLl7dRWluikjVI5eOJImq60xuuwDWYjShfoXYIDGO2aSQpZ31bjlYhNkPMaGXVdck/X7DTrcIwyFiAI8leFdG8VvyOt0+ymhNf1bAAZvjictow8nm8uABQxS1Kn2XZ286A/EmaQsT8Apy6fe/ugNLlQ7MgfarYAdhmxilO80R2ukw4lyePzYSJyjgWh0eTdDjpQQJrT97oz+cQkQ5TXKqVV1J9de8yjeAapULCYeztAPlAyP43mwHjjqV5OZOmvgZ4VFm/feIzMOXEYgcoRJd2uNTiGQkktI9dee6TR7wx/V9UKRFw8mC8a4EI9K9v6PnDu3pcyPLeUorx10W/WT/cniKvTBuCP9Nlxt1cZ3ikYKLQT+N6dmypaU6LuXb0fXWEfmv7cC+F38Oii5hfgBDoBF4YAVGPmHHAenCWpyjTZbMoLtdcDncTs1ojNAR/R0ZZd7SGzB9Onr6Rz2JqZbxCN/70c+hK3pFviufxDUzIr80ykTvlJrm+Q5XpAqv45Dr1Epxz38wmFAzX3W68LThfC+c56lrGvNPijmbL0JNWKEga6Fv/uNIE75MspKpQdbUDKx/PGlBXiiZqDgKaDEJo/qYIqx5Kib/Q0vDyCr1mx0Wq/A+k/jmyewZqRITFGQh7/JVf+crfe2sJQbMCwo8/AT+g09nI0XgOnI+l+a3dr8ymlSilsm8XCp+EHfkPoqFsm34nf0BevZ9on5+nOHMwTJyGw87ytWY6jFtazTTUc96iqB/Y1j5AiW+0GrKlLDgIDo8lhYOwvZR75B+uyeBV39uWoHQe47+DihZl/9qR1qWkQbbK80eYmB7xEUHO8VDkj2+81tlHeRA+9d88ARuRqSME3c0Ne9CMspXg/XassZqVXPeryOxwWIAqbzcg15vnsAQzw429FY2Ojx9EB5O2uXio2rMgcruJdqmI4jo42X2PAcQ2XFs0hEayYg0Ed2vKAQXE+e/CQGfzs2SscTSeaPj80Q3MKtNob2f3G3HP1D2sh4JHrxDWdzEQArJMz/qy2POlmuoFLnRQJ1jdCATbw3gU6VLPxDi/ggT3igBUwyCX5eldzkj21uAMTkpCT+TwOGGwM3yg+haR+1ch816XiBXs6bXIs03jsk1Q93LbTLTA3MB8wBwYFKw4DAhoEFBUzGWV1vQFSAjtey9okIuIDeTpQBBR8jLkhFJmG4hy4WeXl4CCxWJ2xpg==\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1529958411,\"exp\":1561495011,\"created\":1529959011,\"updated\":1529959011,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:22 GMT", + "date" : "Mon, 25 Jun 2018 20:36:59 GMT", "content-length" : "2578", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -202,23 +236,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7685455d-06fb-46a6-9afd-1cc316bd5db5", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12\",\"deletedDate\":1520461222,\"scheduledPurgeDate\":1528237222,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"x5t\":\"OUibGbupAIEctCiKdsnhLFNsE4k\",\"cer\":\"MIIDODCCAiCgAwIBAgIQe7J+Uo5uRfKZnPhPSs9oIzANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODAzMDcyMjEwMTRaFw0xOTAzMDcyMjIwMTRaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzeXwSY7xnvLGFXDJpvHZXi2FqmO0AX/6w12SYk7rICIHBp2XVTDvzWf3kbtVeIW9baMbDLwLs60qW+53FdyvheegO4xeeRrlXebMvWUcRxJZY7VxTeeXswk+EBqB6Ujnr//XYkaZhG4/dYx4okeNPZOsek1azHvlQVaJchqplbJ7XiUM1GKXeHf/VJtiuwrCYwaaeqbeXc28Y6et0+QRo33SfOthSZK0AOiSC6/GKgBfyHYVPZzcTjwWmXrq8bywaZbWShnP1yV+trOPOyUAvckbmzNZJBHaIUZFKKVqgFPEt5I19pC69Tg9EVBOBo1BGAXgX229RuQLfgEW38HbJwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUgs9+6cW+jsgx/SRsNDTsZPBloygwHQYDVR0OBBYEFOTzblM7Xlkp/Ju7Em7TUIA63olJMA0GCSqGSIb3DQEBCwUAA4IBAQA7cHuN1wO3Ls94LaBmRVrIgv9YUn38JUtAKXEJdZl7Ve/0gYpFVjdhuFCZiwj8h5olVHTCyLUm8+ZP4rgy9JaIcnHmRRdaAFDCl30INn82CW9EGgPjME9UHErO6AMrUoVncH0oZOa9FfEU6pGK65SR5ugy+njNnoOGE3dZZNHFBK/YAedFztiMcYa9FGu+YVadgK9vETiMmL5IU4wr5OweP7pI0Ip0Qm/G6vdVXdGDvz8qLRu3e8VJ6W9w8+hv3ft+wHp9/35XtKCHLSjqcf99n0uwXMBoJaSiFOh0vX6HejQYmXpgJfyJEf3ZFzS+9tBc/ZUzbxS8UY8oM2Ogeyvn\",\"attributes\":{\"enabled\":true,\"nbf\":1520460614,\"exp\":1551997214,\"created\":1520461215,\"updated\":1520461215,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461211,\"updated\":1520461211}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0a79c785-73b7-4d8f-b2ce-de746d2dc09c", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12\",\"deletedDate\":1529959020,\"scheduledPurgeDate\":1537735020,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"x5t\":\"fUfw4DGjio1BqfdwQ7AK951i8Zk\",\"cer\":\"MIIDODCCAiCgAwIBAgIQFmqP0PPTRM6FBFX3cXaQZTANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODA2MjUyMDI2NTFaFw0xOTA2MjUyMDM2NTFaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuKvOpsf74bdiSPgNd2Lsojn/5zvy1eCUKxu146AzA/avj9jBw7mhyc9xX8y8LKUlSHghCwmMgTR0KdTXLQoPybPR6AaUNPMW7P+Mur+B27p5E4OY3jkQtZvrIfVmytBx2TOabDUfUmKHldC7BpNHXKhMkV81PFoaMYmA3mTOEuswirZr5jzULUYIzpjqGBexPz/PcJ7x7PawIb7zwNpQX6ZYUwtsXkal4gEaHLXFMpG5E5KUNigllcyJvbYUgXWYSJTmALo1aWSDQZcb63djSm2Z/CE7F6zYg8XTDs7z1/xREWsTthBrMGb/ilVod5nq2DPRWvns4/LYdsSGQaUDdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUwghKbu/mgatv1mPyZik7IBwTsdgwHQYDVR0OBBYEFIqpy5Hq8S9KYnv97NIhcheyHb+DMA0GCSqGSIb3DQEBCwUAA4IBAQBOtplnWVtSddrIvUtnQ0T+SgFarJ8z8LATN10xFFn6WoN12FZJbLsLIgZ2X8XI8R8mzsxUoH97pTlodS6BIFUQEwSV6Md9MONqqnxcky87fAs0tc/dYPaU6e+xx0xqzle2EJu4pPNoe/vT4PoIFpixIec6T8X65wUgh1wl6IOElGNVen5GuteEfPJ7z2HedAPom3c0hU+ZHFWTkkRXvY+Bh83txI/SMAP16y+YhOhCAM4HqUg2sq+T5BFYZ79vSw1r+SODSqWtYNOjIGTEVhvhYSjaevodTHjKis9S+9xhvftZSzMadyts1tg6RZqrCH1Igqjq9Q1ujGZW1HLggwVX\",\"attributes\":{\"enabled\":true,\"nbf\":1529958411,\"exp\":1561495011,\"created\":1529959011,\"updated\":1529959011,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529958991,\"updated\":1529958991}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:22 GMT", + "date" : "Mon, 25 Jun 2018 20:37:00 GMT", "content-length" : "96", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -228,23 +263,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "8f3a9ac3-98b7-4cf9-ab91-9a7a1a38661d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c803b6d6-4eba-437f-b904-59635515bb09", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: createTestJavaPkcs12\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:22 GMT", + "date" : "Mon, 25 Jun 2018 20:37:01 GMT", "content-length" : "104", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -254,23 +290,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5ed8757e-9ea7-435f-80bf-1a3c9aa181e3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b05aaae2-bf42-458e-ad41-5551d5163ee7", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: createTestJavaPkcs12\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:33 GMT", + "date" : "Mon, 25 Jun 2018 20:37:13 GMT", "content-length" : "2578", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -280,22 +317,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "092b6c12-d6a3-4e5a-9f96-5b559f34d358", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12\",\"deletedDate\":1520461222,\"scheduledPurgeDate\":1528237222,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/21781e6f28504472b39208ee62285591\",\"x5t\":\"OUibGbupAIEctCiKdsnhLFNsE4k\",\"cer\":\"MIIDODCCAiCgAwIBAgIQe7J+Uo5uRfKZnPhPSs9oIzANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODAzMDcyMjEwMTRaFw0xOTAzMDcyMjIwMTRaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzeXwSY7xnvLGFXDJpvHZXi2FqmO0AX/6w12SYk7rICIHBp2XVTDvzWf3kbtVeIW9baMbDLwLs60qW+53FdyvheegO4xeeRrlXebMvWUcRxJZY7VxTeeXswk+EBqB6Ujnr//XYkaZhG4/dYx4okeNPZOsek1azHvlQVaJchqplbJ7XiUM1GKXeHf/VJtiuwrCYwaaeqbeXc28Y6et0+QRo33SfOthSZK0AOiSC6/GKgBfyHYVPZzcTjwWmXrq8bywaZbWShnP1yV+trOPOyUAvckbmzNZJBHaIUZFKKVqgFPEt5I19pC69Tg9EVBOBo1BGAXgX229RuQLfgEW38HbJwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUgs9+6cW+jsgx/SRsNDTsZPBloygwHQYDVR0OBBYEFOTzblM7Xlkp/Ju7Em7TUIA63olJMA0GCSqGSIb3DQEBCwUAA4IBAQA7cHuN1wO3Ls94LaBmRVrIgv9YUn38JUtAKXEJdZl7Ve/0gYpFVjdhuFCZiwj8h5olVHTCyLUm8+ZP4rgy9JaIcnHmRRdaAFDCl30INn82CW9EGgPjME9UHErO6AMrUoVncH0oZOa9FfEU6pGK65SR5ugy+njNnoOGE3dZZNHFBK/YAedFztiMcYa9FGu+YVadgK9vETiMmL5IU4wr5OweP7pI0Ip0Qm/G6vdVXdGDvz8qLRu3e8VJ6W9w8+hv3ft+wHp9/35XtKCHLSjqcf99n0uwXMBoJaSiFOh0vX6HejQYmXpgJfyJEf3ZFzS+9tBc/ZUzbxS8UY8oM2Ogeyvn\",\"attributes\":{\"enabled\":true,\"nbf\":1520460614,\"exp\":1551997214,\"created\":1520461215,\"updated\":1520461215,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1520461211,\"updated\":1520461211}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "21cd89ee-1e05-4d01-98bb-f2e7cb2c46dc", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12\",\"deletedDate\":1529959020,\"scheduledPurgeDate\":1537735020,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createTestJavaPkcs12/db453f84c0b646e0967f1135a1ad702b\",\"x5t\":\"fUfw4DGjio1BqfdwQ7AK951i8Zk\",\"cer\":\"MIIDODCCAiCgAwIBAgIQFmqP0PPTRM6FBFX3cXaQZTANBgkqhkiG9w0BAQsFADAZMRcwFQYDVQQDEw5UZXN0SmF2YVBrY3MxMjAeFw0xODA2MjUyMDI2NTFaFw0xOTA2MjUyMDM2NTFaMBkxFzAVBgNVBAMTDlRlc3RKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuKvOpsf74bdiSPgNd2Lsojn/5zvy1eCUKxu146AzA/avj9jBw7mhyc9xX8y8LKUlSHghCwmMgTR0KdTXLQoPybPR6AaUNPMW7P+Mur+B27p5E4OY3jkQtZvrIfVmytBx2TOabDUfUmKHldC7BpNHXKhMkV81PFoaMYmA3mTOEuswirZr5jzULUYIzpjqGBexPz/PcJ7x7PawIb7zwNpQX6ZYUwtsXkal4gEaHLXFMpG5E5KUNigllcyJvbYUgXWYSJTmALo1aWSDQZcb63djSm2Z/CE7F6zYg8XTDs7z1/xREWsTthBrMGb/ilVod5nq2DPRWvns4/LYdsSGQaUDdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUwghKbu/mgatv1mPyZik7IBwTsdgwHQYDVR0OBBYEFIqpy5Hq8S9KYnv97NIhcheyHb+DMA0GCSqGSIb3DQEBCwUAA4IBAQBOtplnWVtSddrIvUtnQ0T+SgFarJ8z8LATN10xFFn6WoN12FZJbLsLIgZ2X8XI8R8mzsxUoH97pTlodS6BIFUQEwSV6Md9MONqqnxcky87fAs0tc/dYPaU6e+xx0xqzle2EJu4pPNoe/vT4PoIFpixIec6T8X65wUgh1wl6IOElGNVen5GuteEfPJ7z2HedAPom3c0hU+ZHFWTkkRXvY+Bh83txI/SMAP16y+YhOhCAM4HqUg2sq+T5BFYZ79vSw1r+SODSqWtYNOjIGTEVhvhYSjaevodTHjKis9S+9xhvftZSzMadyts1tg6RZqrCH1Igqjq9Q1ujGZW1HLggwVX\",\"attributes\":{\"enabled\":true,\"nbf\":1529958411,\"exp\":1561495011,\"created\":1529959011,\"updated\":1529959011,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=TestJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"createCertificateJavaPkcs12Issuer01\"},\"attributes\":{\"enabled\":true,\"created\":1529958991,\"updated\":1529958991}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createTestJavaPkcs12/pending\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createTestJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:20:33 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:37:15 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -304,10 +342,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ba198f61-70ab-4f58-90a5-8e810649fb7e", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "edeef58a-7aa2-4472-9298-2e3d6b0938d0", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/createCsrForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/createCsrForCertificateOperationsTest.json index bd19708..ae7b54d 100644 --- a/azure-keyvault/target/test-classes/session-records/createCsrForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/createCsrForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:35:50 GMT", + "date" : "Mon, 25 Jun 2018 20:41:27 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a6258245-32aa-4447-9a00-59545c0f1ab8", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a0f34146-5a20-40d9-8806-1eb5bf6c49d7", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:35:51 GMT", + "date" : "Mon, 25 Jun 2018 20:41:30 GMT", "content-length" : "1259", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,24 +46,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending?api-version=7.0-preview&request_id=79bf63aae03d4b81b52ddacb710cc1b3", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending?api-version=7.0&request_id=f2caef2d83a84c4e8bebf94d982e0852", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "86f6befc-41ce-426d-90eb-1d7fbea43844", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\",\"issuer\":{\"name\":\"Unknown\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUTWFudWFsRW5yb2xsbWVudEphdmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbCUT8i/xk58chy4Tlb2xS1iVt3tOCYnl2eNAYuMn7ZowH8t0q05mCz7hE0dfOrawmxKDuSYqQMYgeDE32fvrbDzDmH2FUUY95Z49UInDPIOxGplm4cAYuTSGEPA6M6F07qgxE4SulmriKW+Uo1ATIrtovSMpiZe5grysmTarV2lxhuK02zbKWlvWY6KrkVIaaS+XdS33XOjyVrD0NoAubNKZRoisuLOVvgeMIWQCqXvFqT04sOorR7HgENzavjzcemA6pz7loZq6CMDUp/7r5+nTLPhOBqs5wB7xI3CxR1a8oc6+2X2Ro4nNcvjA2F+oYfBf40Q2lmWkKrdYbKiGbAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAS14na29jznt7n9Iu0P878Z7Or+jN0JGnFoIx7geN6NixYuTrUJMQ8hgwZvNxsdNicBt2DDK9n4NuW4p3crq9G2NQK/fcjwdBTZubfwpOufiZBmCfOl2cdKKrWJgbpoQSoEjJWxRh2c8JMKKsg6JlRwXsAatwrmg7O2IhNeI8f9qLOPIk7v1NSAwHQTwahIk4Y2RY8REChTA1vn7YOpDzbPnUeX8klFFdf5uSi51xvxes9GIeVhr3cwJi7gvweRX43Grotdgs9oJ8YCYvwB51wNGhsfhYbcQ1SDhig+Kq4oUUDmUIRX3jwCh4RfLcd6EuDUNqu6u+mLzd2Dc8xahH/g==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Please Perform Merge to complete the request.\",\"request_id\":\"79bf63aae03d4b81b52ddacb710cc1b3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0f5438ad-4f89-47a9-a589-98da9e341b43", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\",\"issuer\":{\"name\":\"Unknown\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUTWFudWFsRW5yb2xsbWVudEphdmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgqgzEAxG0KxQGeHiqsCsI1EA6jE4nxqHLC834D+zJVeXdSBZeO2ZfI9XL8y0ziklbknBE8cphgB2eTmrQmUF2tx0iM1v5jgaI7QcZ1TwmnbFiOWrfYCGs9zIAYDRZt5MwlFbO53B/YIWV2iXWpxTNW+cuhXl60fHdWtLLvGxIjEn3400sdS8nRkf6IzTH3aCjyAGR735WfnuBPUQi6SR5cQaGeC7llNgX/crmtlizjqkjlw/ywa9ZwHGw/8ISPTe/ExJCsjjYdlNG5imzSYgAl3PYclOiUBtl+Q2J90xM+QCXx6MfIKvXKvPYlgvRTtWR/0Aec//FbcNz97/f4jczAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAFr37WCz2JCGcLKVaw6db4LZ1/2EBBSDErQciUEESOYu5MFzeO87g/SK1a0D5/p680YRu0CxYsUXSWoFIsudHjkzTo0HRQw/Gu9HRzPSygnw0TwWAOLqaWLIjdCrCtkBbtWynBXCA/UucgAGbFBaNhQ4851hybgZerU+UMoZESdf/SoJGJChUW7x4Gu+xirgsI04QgACAGU/mWOFnlVkN5xjTdM8rqswgqMwPfp8Uf9Mkf8+sXMLNf52N+erX1WV6ERTKYi/50MyIe/oLQrqY2I7B8CMGJuNNWoqnUAAxiiMImd3db7hl/4C3V81/agiigfjW6Iw5iVeDe0/QNApNJA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Please Perform Merge to complete the request.\",\"request_id\":\"f2caef2d83a84c4e8bebf94d982e0852\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:35:51 GMT", + "date" : "Mon, 25 Jun 2018 20:41:31 GMT", "content-length" : "924", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -72,23 +74,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/pkcs10; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "36b7d653-4623-4365-a045-3b4392053aa7", - "Body" : "MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUTWFudWFsRW5yb2xsbWVudEphdmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDbCUT8i/xk58chy4Tlb2xS1iVt3tOCYnl2eNAYuMn7ZowH8t0q05mCz7hE0dfOrawmxKDuSYqQMYgeDE32fvrbDzDmH2FUUY95Z49UInDPIOxGplm4cAYuTSGEPA6M6F07qgxE4SulmriKW+Uo1ATIrtovSMpiZe5grysmTarV2lxhuK02zbKWlvWY6KrkVIaaS+XdS33XOjyVrD0NoAubNKZRoisuLOVvgeMIWQCqXvFqT04sOorR7HgENzavjzcemA6pz7loZq6CMDUp/7r5+nTLPhOBqs5wB7xI3CxR1a8oc6+2X2Ro4nNcvjA2F+oYfBf40Q2lmWkKrdYbKiGbAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAS14na29jznt7n9Iu0P878Z7Or+jN0JGnFoIx7geN6NixYuTrUJMQ8hgwZvNxsdNicBt2DDK9n4NuW4p3crq9G2NQK/fcjwdBTZubfwpOufiZBmCfOl2cdKKrWJgbpoQSoEjJWxRh2c8JMKKsg6JlRwXsAatwrmg7O2IhNeI8f9qLOPIk7v1NSAwHQTwahIk4Y2RY8REChTA1vn7YOpDzbPnUeX8klFFdf5uSi51xvxes9GIeVhr3cwJi7gvweRX43Grotdgs9oJ8YCYvwB51wNGhsfhYbcQ1SDhig+Kq4oUUDmUIRX3jwCh4RfLcd6EuDUNqu6u+mLzd2Dc8xahH/g==" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "73be7c6d-4e36-4c12-9cea-3e6c0faa0bbd", + "Body" : "MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUTWFudWFsRW5yb2xsbWVudEphdmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCgqgzEAxG0KxQGeHiqsCsI1EA6jE4nxqHLC834D+zJVeXdSBZeO2ZfI9XL8y0ziklbknBE8cphgB2eTmrQmUF2tx0iM1v5jgaI7QcZ1TwmnbFiOWrfYCGs9zIAYDRZt5MwlFbO53B/YIWV2iXWpxTNW+cuhXl60fHdWtLLvGxIjEn3400sdS8nRkf6IzTH3aCjyAGR735WfnuBPUQi6SR5cQaGeC7llNgX/crmtlizjqkjlw/ywa9ZwHGw/8ISPTe/ExJCsjjYdlNG5imzSYgAl3PYclOiUBtl+Q2J90xM+QCXx6MfIKvXKvPYlgvRTtWR/0Aec//FbcNz97/f4jczAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAFr37WCz2JCGcLKVaw6db4LZ1/2EBBSDErQciUEESOYu5MFzeO87g/SK1a0D5/p680YRu0CxYsUXSWoFIsudHjkzTo0HRQw/Gu9HRzPSygnw0TwWAOLqaWLIjdCrCtkBbtWynBXCA/UucgAGbFBaNhQ4851hybgZerU+UMoZESdf/SoJGJChUW7x4Gu+xirgsI04QgACAGU/mWOFnlVkN5xjTdM8rqswgqMwPfp8Uf9Mkf8+sXMLNf52N+erX1WV6ERTKYi/50MyIe/oLQrqY2I7B8CMGJuNNWoqnUAAxiiMImd3db7hl/4C3V81/agiigfjW6Iw5iVeDe0/QNApNJA==" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:35:52 GMT", + "date" : "Mon, 25 Jun 2018 20:41:35 GMT", "content-length" : "1205", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,23 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9bc92aa2-8d87-4fe2-b613-6088fd5eec10", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava\",\"deletedDate\":1520462152,\"scheduledPurgeDate\":1528238152,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/1ee592c676ed402485f8b955c50010b6\",\"attributes\":{\"enabled\":false,\"nbf\":1520461551,\"exp\":1551998151,\"created\":1520462151,\"updated\":1520462151,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=ManualEnrollmentJava\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520462151,\"updated\":1520462151}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "578aac55-8fca-4e26-85e3-0652d565f2d2", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava\",\"deletedDate\":1529959295,\"scheduledPurgeDate\":1537735295,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/b404ced3cc4d4bb29b4e478a6ef92395\",\"attributes\":{\"enabled\":false,\"nbf\":1529958690,\"exp\":1561495290,\"created\":1529959290,\"updated\":1529959290,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=ManualEnrollmentJava\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959290,\"updated\":1529959290}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:35:52 GMT", + "date" : "Mon, 25 Jun 2018 20:41:38 GMT", "content-length" : "110", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,23 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5cd5b444-1572-476b-9509-e3d95564bf04", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b60ecaac-5df4-4627-a22d-06362f652b63", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: createManualEnrollmentJava\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:36:02 GMT", + "date" : "Mon, 25 Jun 2018 20:41:49 GMT", "content-length" : "1205", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7f8f8cf2-02b7-4be8-8a49-21f51daa9713", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava\",\"deletedDate\":1520462152,\"scheduledPurgeDate\":1528238152,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/1ee592c676ed402485f8b955c50010b6\",\"attributes\":{\"enabled\":false,\"nbf\":1520461551,\"exp\":1551998151,\"created\":1520462151,\"updated\":1520462151,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=ManualEnrollmentJava\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520462151,\"updated\":1520462151}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6eecc755-9bf8-44a9-ac07-a556d66323f2", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava\",\"deletedDate\":1529959295,\"scheduledPurgeDate\":1537735295,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/b404ced3cc4d4bb29b4e478a6ef92395\",\"attributes\":{\"enabled\":false,\"nbf\":1529958690,\"exp\":1561495290,\"created\":1529959290,\"updated\":1529959290,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=ManualEnrollmentJava\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959290,\"updated\":1529959290}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createManualEnrollmentJava/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:36:03 GMT", + "date" : "Mon, 25 Jun 2018 20:41:49 GMT", "content-length" : "102", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,22 +182,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "89136a4f-7577-4fd4-92d7-7b6b178c6e9a", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b36c1004-1223-4d39-9275-e5bba9ad2300", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: createManualEnrollmentJava\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createManualEnrollmentJava?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:36:03 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:41:51 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -200,10 +207,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "af802ec9-60d4-4f4f-b7fe-368b9a906104", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c374d284-521e-482d-8650-d99ecef6fe27", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePemForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePemForCertificateOperationsTest.json index 56293d1..a6f59ad 100644 --- a/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePemForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePemForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:51:46 GMT", + "date" : "Mon, 25 Jun 2018 20:44:37 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "56814462-85ca-4a56-bb55-a00b2965e325", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6a8a1d9b-8dbe-43fd-a505-aaa027eb670b", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:51:47 GMT", + "date" : "Mon, 25 Jun 2018 20:44:41 GMT", "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,24 +46,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0-preview&request_id=6dfd5a8fd1554b39ab6e25acc90cbfd7", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0&request_id=9a1c2f6199a9412a8ff05a0733dd1aca", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f1cc24fe-ed43-48d2-bdaa-47091c5a9a73", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3smY4GTqcAD0gqdCNeUHn4zQGIJsR4hJx9I0AvUvYvLOtMfqJABOVbdrKVRx+8U2eP7eS5Tm7rbyBLbipcYS0d6Pk2C287Ns4fVUo+A0NRhgT9QNr7GVdCRmqor22fvnFgF3f1GbwCrUfoQj9ul4LgtZ/0QmiEqO0fPJnoplBvwiDQM1XMICTVxVoTD3hRBOfsFh/5kVUEuAmehmI7Wd+u7vaXGMmO66orxlX263yknxne530PJUvgRR5aV6BK/AFcUaINY19clxO9eNmc3e1atBtvmikaQ68ifUCwHYNpUGniRrpvxYcBRuNDKs3hGMHwOtXhwPVB0HhtvMdel91AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAfKLSLeYfDqikrDnmt9v1vyCBggyGCYDbWH40pBqYh/fdFRHy8X7vN2TYEMN+x2jkHMYqzZczx7jflpV+Zv6ljJKKBCfBHgFhlX+L5FbWoG/wxn3HseKBIW1QlAurSAsMyOmPg+toRxRBeGzSyMu6kkClUaWrk5w9Z55xBcs/v+wodYFxtd/Bevjn2JEhqCaOoXGWqgpjNbGsWXlQNh2M3wRsrFY9eJSXglxPlt+gCINRv8rLXZheNO2UqDr+iDLVJMjeMHr7c136TWgYYAJEpMjRjSLbjMhqqOzxH/FkCfq1Xr6uX9pqIdDpbu4Dt+tOyEm566aJR6FbvgV/Y7EKwQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"6dfd5a8fd1554b39ab6e25acc90cbfd7\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e48eb61a-c2ac-483e-8ea0-e9cd569268a8", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyd9kXpYdEAp8bFC90eXhWxpZlKiQqx31hMEaEJvMmGZO+ejmGELYFaJ45Yh/NTCsl/iGqerAvl/H6qcZ+E/VERTLTgiGwxP5Ap5gAyoAY9M7clm8gkSWGd68To/OPU6qZU6UUTnVmvAi4Q6j7CfsMasZPZFtc+1kvO/LekgoTedsMatG1bURMJlRrsOthrtE9SZ01et1eVrKlOudTpkMK2xO0QFp6TBsdMRioWSTlISE826oXqHHhuHYUdZbvMwhjzlkY+gPBJkQxjuiUxbX6hqrR7FkSJ+mTW9ZVtHnQgADzjQUfc6uMUF+0AtjkfM/24oR5UvfkEG5qA1M3BzSZAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAT8UT7y0bAveoRY+wlRY4kFkrgrPIxSxI5kNO6A+D92jktSYDlr4VA+PpANJDGHKVpGpduLyY4QwKCRiXvND4kzZXy3gC/VyJwQYIR4BX11e6rn4/1tksiEYhE9pHVdpDRY42vxgju65sMl3Xh0Kh9esb2zuUaSnKlhb98iK5hlPHzrIN0GlBs1gEl0BBZq7jp0Pavl0zkUnnW7Z6hONB4X+IUnk/GaJ8ZpNunJu+tcAmpCdfDKTY26TyeDwTdrKatr7q0pq9SG9Rf0CSmb+GVaIjIewCPkuMZS7ZmSsnMdmhotCQlNcsegxMBpsi5NU6NXqDVJbtIdqqyDhFiltfaQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"9a1c2f6199a9412a8ff05a0733dd1aca\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:51:47 GMT", + "date" : "Mon, 25 Jun 2018 20:44:43 GMT", "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -72,49 +74,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "478f8140-fdc5-403a-bb54-23dfa1507ac6", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3smY4GTqcAD0gqdCNeUHn4zQGIJsR4hJx9I0AvUvYvLOtMfqJABOVbdrKVRx+8U2eP7eS5Tm7rbyBLbipcYS0d6Pk2C287Ns4fVUo+A0NRhgT9QNr7GVdCRmqor22fvnFgF3f1GbwCrUfoQj9ul4LgtZ/0QmiEqO0fPJnoplBvwiDQM1XMICTVxVoTD3hRBOfsFh/5kVUEuAmehmI7Wd+u7vaXGMmO66orxlX263yknxne530PJUvgRR5aV6BK/AFcUaINY19clxO9eNmc3e1atBtvmikaQ68ifUCwHYNpUGniRrpvxYcBRuNDKs3hGMHwOtXhwPVB0HhtvMdel91AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAfKLSLeYfDqikrDnmt9v1vyCBggyGCYDbWH40pBqYh/fdFRHy8X7vN2TYEMN+x2jkHMYqzZczx7jflpV+Zv6ljJKKBCfBHgFhlX+L5FbWoG/wxn3HseKBIW1QlAurSAsMyOmPg+toRxRBeGzSyMu6kkClUaWrk5w9Z55xBcs/v+wodYFxtd/Bevjn2JEhqCaOoXGWqgpjNbGsWXlQNh2M3wRsrFY9eJSXglxPlt+gCINRv8rLXZheNO2UqDr+iDLVJMjeMHr7c136TWgYYAJEpMjRjSLbjMhqqOzxH/FkCfq1Xr6uX9pqIdDpbu4Dt+tOyEm566aJR6FbvgV/Y7EKwQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"6dfd5a8fd1554b39ab6e25acc90cbfd7\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b4c7f660-46c8-46fc-b639-1316e6c4c094", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyd9kXpYdEAp8bFC90eXhWxpZlKiQqx31hMEaEJvMmGZO+ejmGELYFaJ45Yh/NTCsl/iGqerAvl/H6qcZ+E/VERTLTgiGwxP5Ap5gAyoAY9M7clm8gkSWGd68To/OPU6qZU6UUTnVmvAi4Q6j7CfsMasZPZFtc+1kvO/LekgoTedsMatG1bURMJlRrsOthrtE9SZ01et1eVrKlOudTpkMK2xO0QFp6TBsdMRioWSTlISE826oXqHHhuHYUdZbvMwhjzlkY+gPBJkQxjuiUxbX6hqrR7FkSJ+mTW9ZVtHnQgADzjQUfc6uMUF+0AtjkfM/24oR5UvfkEG5qA1M3BzSZAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAT8UT7y0bAveoRY+wlRY4kFkrgrPIxSxI5kNO6A+D92jktSYDlr4VA+PpANJDGHKVpGpduLyY4QwKCRiXvND4kzZXy3gC/VyJwQYIR4BX11e6rn4/1tksiEYhE9pHVdpDRY42vxgju65sMl3Xh0Kh9esb2zuUaSnKlhb98iK5hlPHzrIN0GlBs1gEl0BBZq7jp0Pavl0zkUnnW7Z6hONB4X+IUnk/GaJ8ZpNunJu+tcAmpCdfDKTY26TyeDwTdrKatr7q0pq9SG9Rf0CSmb+GVaIjIewCPkuMZS7ZmSsnMdmhotCQlNcsegxMBpsi5NU6NXqDVJbtIdqqyDhFiltfaQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"9a1c2f6199a9412a8ff05a0733dd1aca\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:51:57 GMT", - "content-length" : "1313", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "200", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0e080984-1a19-4b63-b25d-4083ebfc3499", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3smY4GTqcAD0gqdCNeUHn4zQGIJsR4hJx9I0AvUvYvLOtMfqJABOVbdrKVRx+8U2eP7eS5Tm7rbyBLbipcYS0d6Pk2C287Ns4fVUo+A0NRhgT9QNr7GVdCRmqor22fvnFgF3f1GbwCrUfoQj9ul4LgtZ/0QmiEqO0fPJnoplBvwiDQM1XMICTVxVoTD3hRBOfsFh/5kVUEuAmehmI7Wd+u7vaXGMmO66orxlX263yknxne530PJUvgRR5aV6BK/AFcUaINY19clxO9eNmc3e1atBtvmikaQ68ifUCwHYNpUGniRrpvxYcBRuNDKs3hGMHwOtXhwPVB0HhtvMdel91AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAfKLSLeYfDqikrDnmt9v1vyCBggyGCYDbWH40pBqYh/fdFRHy8X7vN2TYEMN+x2jkHMYqzZczx7jflpV+Zv6ljJKKBCfBHgFhlX+L5FbWoG/wxn3HseKBIW1QlAurSAsMyOmPg+toRxRBeGzSyMu6kkClUaWrk5w9Z55xBcs/v+wodYFxtd/Bevjn2JEhqCaOoXGWqgpjNbGsWXlQNh2M3wRsrFY9eJSXglxPlt+gCINRv8rLXZheNO2UqDr+iDLVJMjeMHr7c136TWgYYAJEpMjRjSLbjMhqqOzxH/FkCfq1Xr6uX9pqIdDpbu4Dt+tOyEm566aJR6FbvgV/Y7EKwQ==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"6dfd5a8fd1554b39ab6e25acc90cbfd7\"}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:07 GMT", + "date" : "Mon, 25 Jun 2018 20:44:53 GMT", "content-length" : "1237", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,23 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "33f1b293-913a-4f3a-8ce3-ab37cf009b96", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC3smY4GTqcAD0gqdCNeUHn4zQGIJsR4hJx9I0AvUvYvLOtMfqJABOVbdrKVRx+8U2eP7eS5Tm7rbyBLbipcYS0d6Pk2C287Ns4fVUo+A0NRhgT9QNr7GVdCRmqor22fvnFgF3f1GbwCrUfoQj9ul4LgtZ/0QmiEqO0fPJnoplBvwiDQM1XMICTVxVoTD3hRBOfsFh/5kVUEuAmehmI7Wd+u7vaXGMmO66orxlX263yknxne530PJUvgRR5aV6BK/AFcUaINY19clxO9eNmc3e1atBtvmikaQ68ifUCwHYNpUGniRrpvxYcBRuNDKs3hGMHwOtXhwPVB0HhtvMdel91AgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAfKLSLeYfDqikrDnmt9v1vyCBggyGCYDbWH40pBqYh/fdFRHy8X7vN2TYEMN+x2jkHMYqzZczx7jflpV+Zv6ljJKKBCfBHgFhlX+L5FbWoG/wxn3HseKBIW1QlAurSAsMyOmPg+toRxRBeGzSyMu6kkClUaWrk5w9Z55xBcs/v+wodYFxtd/Bevjn2JEhqCaOoXGWqgpjNbGsWXlQNh2M3wRsrFY9eJSXglxPlt+gCINRv8rLXZheNO2UqDr+iDLVJMjeMHr7c136TWgYYAJEpMjRjSLbjMhqqOzxH/FkCfq1Xr6uX9pqIdDpbu4Dt+tOyEm566aJR6FbvgV/Y7EKwQ==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem\",\"request_id\":\"6dfd5a8fd1554b39ab6e25acc90cbfd7\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b63c95e4-d74c-48d6-abe5-95b9ec9f836e", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrDCCAZQCAQAwHDEaMBgGA1UEAxMRU2VsZlNpZ25lZEphdmFQZW0wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCyd9kXpYdEAp8bFC90eXhWxpZlKiQqx31hMEaEJvMmGZO+ejmGELYFaJ45Yh/NTCsl/iGqerAvl/H6qcZ+E/VERTLTgiGwxP5Ap5gAyoAY9M7clm8gkSWGd68To/OPU6qZU6UUTnVmvAi4Q6j7CfsMasZPZFtc+1kvO/LekgoTedsMatG1bURMJlRrsOthrtE9SZ01et1eVrKlOudTpkMK2xO0QFp6TBsdMRioWSTlISE826oXqHHhuHYUdZbvMwhjzlkY+gPBJkQxjuiUxbX6hqrR7FkSJ+mTW9ZVtHnQgADzjQUfc6uMUF+0AtjkfM/24oR5UvfkEG5qA1M3BzSZAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAT8UT7y0bAveoRY+wlRY4kFkrgrPIxSxI5kNO6A+D92jktSYDlr4VA+PpANJDGHKVpGpduLyY4QwKCRiXvND4kzZXy3gC/VyJwQYIR4BX11e6rn4/1tksiEYhE9pHVdpDRY42vxgju65sMl3Xh0Kh9esb2zuUaSnKlhb98iK5hlPHzrIN0GlBs1gEl0BBZq7jp0Pavl0zkUnnW7Z6hONB4X+IUnk/GaJ8ZpNunJu+tcAmpCdfDKTY26TyeDwTdrKatr7q0pq9SG9Rf0CSmb+GVaIjIewCPkuMZS7ZmSsnMdmhotCQlNcsegxMBpsi5NU6NXqDVJbtIdqqyDhFiltfaQ==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem\",\"request_id\":\"9a1c2f6199a9412a8ff05a0733dd1aca\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:08 GMT", + "date" : "Mon, 25 Jun 2018 20:44:54 GMT", "content-length" : "2385", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "372d2079-1068-4a90-9efe-e695e4035209", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"x5t\":\"4YElA9uuiGD1x6Zfiua-RIiC1uk\",\"cer\":\"MIIDPjCCAiagAwIBAgIQG2T7H/XPRGqBwnAkZbdahDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODAzMDcyMjQxNTlaFw0xOTAzMDcyMjUxNTlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt7JmOBk6nAA9IKnQjXlB5+M0BiCbEeIScfSNAL1L2LyzrTH6iQATlW3aylUcfvFNnj+3kuU5u628gS24qXGEtHej5NgtvOzbOH1VKPgNDUYYE/UDa+xlXQkZqqK9tn75xYBd39Rm8Aq1H6EI/bpeC4LWf9EJohKjtHzyZ6KZQb8Ig0DNVzCAk1cVaEw94UQTn7BYf+ZFVBLgJnoZiO1nfru72lxjJjuuqK8ZV9ut8pJ8Z3ud9DyVL4EUeWlegSvwBXFGiDWNfXJcTvXjZnN3tWrQbb5opGkOvIn1AsB2DaVBp4ka6b8WHAUbjQyrN4RjB8DrV4cD1QdB4bbzHXpfdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUXEkKhwmIJ304ly6v4KZy3qOOgVwwHQYDVR0OBBYEFFxJCocJiCd9OJcur+Cmct6jjoFcMA0GCSqGSIb3DQEBCwUAA4IBAQAcpoiCNU560s3NWx63+2gHwxFyx9UhAR5kZUQMdzHYS+lXB4JIclwuF/9AwXgP+jjVQU57L1eZIAPHoMhpZ8yg4wcvUgMIXTMrQOFgK0YwArlCC2t3eBdaLqsaaaASlQrii20xxFPR4MjPP6tJ+UuKUQb15FXGU1QfjLmh/VrS99xqDNWetJCVP/j6ZdyXUHMy7ivQ8QEzWLtWHQ9hXLrJE9RFTGNVTaXw8E0AcpAXi2pEVIysVOTiEGNdGyUotswKzoCNHbhBi4OXd8hoKQVTon1saflQuIcgbUPveQTJhzBUCUa12jjU6qYg6vN4Kuqg+eRWHBu+Qqs/gc9ypk8i\",\"attributes\":{\"enabled\":true,\"nbf\":1520462519,\"exp\":1551999119,\"created\":1520463119,\"updated\":1520463119,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463107,\"updated\":1520463107}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "83851e8c-ecef-4809-9e1b-0490ad6820b0", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"x5t\":\"KnlJ2_j6yD9ZRy39d6WbSXhCR9Y\",\"cer\":\"MIIDPjCCAiagAwIBAgIQMQE1Kme+SLe/rFhCWlN6nDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODA2MjUyMDM0NDlaFw0xOTA2MjUyMDQ0NDlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnfZF6WHRAKfGxQvdHl4VsaWZSokKsd9YTBGhCbzJhmTvno5hhC2BWieOWIfzUwrJf4hqnqwL5fx+qnGfhP1REUy04IhsMT+QKeYAMqAGPTO3JZvIJElhnevE6Pzj1OqmVOlFE51ZrwIuEOo+wn7DGrGT2RbXPtZLzvy3pIKE3nbDGrRtW1ETCZUa7DrYa7RPUmdNXrdXlaypTrnU6ZDCtsTtEBaekwbHTEYqFkk5SEhPNuqF6hx4bh2FHWW7zMIY85ZGPoDwSZEMY7olMW1+oaq0exZEifpk1vWVbR50IAA840FH3OrjFBftALY5HzP9uKEeVL35BBuagNTNwc0mQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUmdOum0ntfOsgxdbHizaG4DCjMSEwHQYDVR0OBBYEFJnTrptJ7XzrIMXWx4s2huAwozEhMA0GCSqGSIb3DQEBCwUAA4IBAQBcMAm7qZ6rzrZ9RpGdJpdDbgvxH3gZojieXXuLR+4rnqNd/TRMhgd/QQZwqzxiqEtyKHN3lVFAuS7lB/m3f37GI6VW2u0avruIXu/J5QDtGS/cCcg2W0uA0yIi4Y6IrIGkp3NNsDx32VIObnv0nP/CniHKjA64BdXZN0rTK84281mI/LeVSUWNDgrkEVbFuP5qZriJqHi2uZB10vXZnfPp9N4M0lcm9ETooBTDLrNYCaCBagNrIfTqWIk8NlJNdCVxpyD1NRJSjkrUADLNJT4aDETBiwRXe7Xkv2KShlTIzjzlXb0sJqg5/oHladvAxlkKv2bN4cNGWL6uXIXBIfT1\",\"attributes\":{\"enabled\":true,\"nbf\":1529958889,\"exp\":1561495489,\"created\":1529959489,\"updated\":1529959489,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959481,\"updated\":1529959481}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:08 GMT", - "content-length" : "3372", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:44:57 GMT", + "content-length" : "3376", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1d41b049-8b0e-472e-9f5f-bae775e514f9", - "Body" : "{\"value\":\"-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC3smY4GTqcAD0g\\nqdCNeUHn4zQGIJsR4hJx9I0AvUvYvLOtMfqJABOVbdrKVRx+8U2eP7eS5Tm7rbyB\\nLbipcYS0d6Pk2C287Ns4fVUo+A0NRhgT9QNr7GVdCRmqor22fvnFgF3f1GbwCrUf\\noQj9ul4LgtZ/0QmiEqO0fPJnoplBvwiDQM1XMICTVxVoTD3hRBOfsFh/5kVUEuAm\\nehmI7Wd+u7vaXGMmO66orxlX263yknxne530PJUvgRR5aV6BK/AFcUaINY19clxO\\n9eNmc3e1atBtvmikaQ68ifUCwHYNpUGniRrpvxYcBRuNDKs3hGMHwOtXhwPVB0Hh\\ntvMdel91AgMBAAECggEAMiHURrwP5DImfIsLmQh+JYg6ku+EEnnVmdbpQknm8KPz\\nDzHEE257abz8yFo4+CXnjmgKM+MuAdu0xbZSHqAV3OCH0HT06onjfAOsYY1slnJK\\nMOwdfm8Z7K2GnSxjxPHbPXy+Yc8INrtdWd/rYb9iWhbfbiuAywP2PFQbHZBg7fF7\\nwad3z9FTMgbh2aSwBDsXiJkjKrCWjVjI0Mr9515JqpJ1PnXLjc1tVUOpgdztNyxZ\\nScVZpyEP3I0wAe5QNWesvR0l3cBLT2VRUZtDQzfg7zVeMr6IeJr+dLrmbNJitC5W\\nW1dLFNyuSH2iHzCL0jyz01x35ao32d7Y+InpBOcicwKBgQDcu0KLy2X2KQr+4NQJ\\nG2+2REh/a16tFQD8cG+a4Z8jSmSt3Nh4ug9KkmTiTqFI+mNWMDdvPltdOgXuJoBq\\nM4zf2uXHwkqQ8HUOWVWzUJt6koriLaQG0dsS1BEqq0HHyviOwCR7QXDDraUzvfGJ\\nePbCJBpFtG71IYxFlKflGVvaqwKBgQDVDEkmlTqT3wrUEoIUe7MW9i/ZxQtfn756\\nAaknjy2PYwy0/dY3gVmj8zydDbOywOXzpw0OVYqNR1hYnKIPBeCzpfLJho7UZGNX\\nPE2x9tbR8dcdcmHcCMuWY1T0dJUF+nasQLhUKsKv0qIUz/2ySGlB7yIWj0o30mTs\\nhbK4EUyuXwKBgQCq7nyfAxjnYms4a2Tn1I5S6Ff4DG6ZvD0yP+O9XeE9k/uZQ/+C\\nphr3VZy4P8nYWMYaVWZoSDK6ZBd5j+k71MXQCJSOd+AEk6EiRn3+SXrNlbPlaRCv\\nk02CLCVLFKnxDTYkXZkitc+cSNk402u7WKhGOWz687pFLACTVYYa/ONL1wKBgQDN\\neuj+voVd44yFGEi/ysLjTZS/O84Jb3/+GqX0UqLFnem+kuhOZoJ3n30BmRqNOIFQ\\n6/iqr5RPSNWLuZ6QUMH1YwP0nMQbU6uAktf44jM1EETC0PRTjWQWaz2f/OVSe8yD\\nvHRMMWXOwJ+05RoyHqbugd7l1VPm3RScDyNdZsoHjwKBgD0YeUttbcD3dOGjY53n\\nvQOGDBCVt5kA7vDb7xaZYygq6p89i9lZ+o/RBT8Kms8LZfJUgetpb0S7NhR4u8pr\\nrumDUH6eNa78zW9y8XP2gaDlZy2/JSYktCJvI/lWHkuMm76pYYPoTFva0/sYzsiG\\nmFZuyfa9VcOX7WAmuwsjFMJo\\n-----END PRIVATE KEY-----\\n-----BEGIN CERTIFICATE-----\\nMIIDPjCCAiagAwIBAgIQG2T7H/XPRGqBwnAkZbdahDANBgkqhkiG9w0BAQsFADAc\\nMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODAzMDcyMjQxNTlaFw0x\\nOTAzMDcyMjUxNTlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjAN\\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt7JmOBk6nAA9IKnQjXlB5+M0BiCb\\nEeIScfSNAL1L2LyzrTH6iQATlW3aylUcfvFNnj+3kuU5u628gS24qXGEtHej5Ngt\\nvOzbOH1VKPgNDUYYE/UDa+xlXQkZqqK9tn75xYBd39Rm8Aq1H6EI/bpeC4LWf9EJ\\nohKjtHzyZ6KZQb8Ig0DNVzCAk1cVaEw94UQTn7BYf+ZFVBLgJnoZiO1nfru72lxj\\nJjuuqK8ZV9ut8pJ8Z3ud9DyVL4EUeWlegSvwBXFGiDWNfXJcTvXjZnN3tWrQbb5o\\npGkOvIn1AsB2DaVBp4ka6b8WHAUbjQyrN4RjB8DrV4cD1QdB4bbzHXpfdQIDAQAB\\no3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEF\\nBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUXEkKhwmIJ304ly6v4KZy3qOOgVww\\nHQYDVR0OBBYEFFxJCocJiCd9OJcur+Cmct6jjoFcMA0GCSqGSIb3DQEBCwUAA4IB\\nAQAcpoiCNU560s3NWx63+2gHwxFyx9UhAR5kZUQMdzHYS+lXB4JIclwuF/9AwXgP\\n+jjVQU57L1eZIAPHoMhpZ8yg4wcvUgMIXTMrQOFgK0YwArlCC2t3eBdaLqsaaaAS\\nlQrii20xxFPR4MjPP6tJ+UuKUQb15FXGU1QfjLmh/VrS99xqDNWetJCVP/j6ZdyX\\nUHMy7ivQ8QEzWLtWHQ9hXLrJE9RFTGNVTaXw8E0AcpAXi2pEVIysVOTiEGNdGyUo\\ntswKzoCNHbhBi4OXd8hoKQVTon1saflQuIcgbUPveQTJhzBUCUa12jjU6qYg6vN4\\nKuqg+eRWHBu+Qqs/gc9ypk8i\\n-----END CERTIFICATE-----\\n\",\"contentType\":\"application/x-pem-file\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1520462519,\"exp\":1551999119,\"created\":1520463119,\"updated\":1520463119,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8900c07b-fd73-4a75-b98d-e846ad5de0c0", + "Body" : "{\"value\":\"-----BEGIN PRIVATE KEY-----\\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCyd9kXpYdEAp8b\\nFC90eXhWxpZlKiQqx31hMEaEJvMmGZO+ejmGELYFaJ45Yh/NTCsl/iGqerAvl/H6\\nqcZ+E/VERTLTgiGwxP5Ap5gAyoAY9M7clm8gkSWGd68To/OPU6qZU6UUTnVmvAi4\\nQ6j7CfsMasZPZFtc+1kvO/LekgoTedsMatG1bURMJlRrsOthrtE9SZ01et1eVrKl\\nOudTpkMK2xO0QFp6TBsdMRioWSTlISE826oXqHHhuHYUdZbvMwhjzlkY+gPBJkQx\\njuiUxbX6hqrR7FkSJ+mTW9ZVtHnQgADzjQUfc6uMUF+0AtjkfM/24oR5UvfkEG5q\\nA1M3BzSZAgMBAAECggEABbf5aNyQ/QjoeEGpU54g0QcEArHa/tPtnJOjbtCgsfPX\\n3B6mgTk/2+SCTWxrgHSUXV9LTN8pjhzcUB/okFmrXkipXEWrNrLZQtEb+cqDWElf\\n54maffyoqypincp/H3Sa3tbjT0dEU8pqrRzd6U1kkf1J5XldxBj5vp25JpCfaghL\\nyzp3un9VIQMXOWduCNwvfVwLEekx7/Wrqv9FaHwBddNI6QVz2ueHEcqWBzcF9BxA\\nwQn3OW14QG5MUroVtjowMa86eJEAWXxunfkIaVoNdOKzklRDPb+TPhQgvR6NFr4Z\\nI7IdShOIZpZnDe7fCv0wKAUrta4apvdAjtwnNKc7QQKBgQDs54BVd6VAEVC34KnG\\nvPoewNjewpwcM4H4Kgd3SDFK/ZaCiWkmvm+a9JBHlUZ2Smq8MHakLQwlnb35f9aF\\nXqjPY+vEGLMxrAWFg3rvW4pUygbdK/bG0UVuEnzFIzHIodXFAvJYaJdIEJ3uTjbo\\nmSsLOE8FjJeibtGym9q6HftdpQKBgQDA2oWs4rYFKb2weaM/6iortwL6MAi1Ut0Q\\nOIbFaGt3lbXZTDLEg19t9L0e376rS+/UEW1H0ahInto2PQtEPStUUlz0mXQOu0+L\\nL9POBbtH9nQLc0RfyJZLBwsY2OALuMKhJVum1vGKuMuZV2vCOzMnGJ+4HcKbi3GB\\nCJYPfa+w5QKBgQCqI3ykZQAWKhlZZY0owPG1AnT+Tq/FBSzzaGPiQ8O7ArKEX2FY\\nRO5sT/YKoudu7vUG4JtkP0H5Bfe45xnOwPPltfJN7BtNsihpActZedm4GTuivf9G\\nPGdrrPVUs3j+iVO4YOxhmAQF6oEx85Q1qkMilLcT2ivQqVwKtSn5/qxXTQKBgQCB\\nQ/fF4lBPNaNH3sBl3vdVRd5hBEFSCLDUZo8vUsZ16Ytyk3iT79rPQPRi9WZAOy4N\\n34B4WzeJNbDeGhyrKLUaV/qmmRUJqtOuX+iAd6cInVE7O4/hA/p5X8c4aGYEdVs/\\n2GKOehR8/1C4/7fjAPtQgVjNeGUxDU6PRsoOqBhTYQKBgQDFPpdNSVuykKJ+llxU\\nEFnDnGmrljTMzSxVsaxw/zPod0ZQCoTNcH+AnWr8JAjaNJq23OPQ2j+MwwmuQ04R\\nTTFXt1aJpb043KtozgylZC+pO0S7ic2W0NfD9wftMUtRlDTv7T1o08dkfeiGco9Z\\nlKX6asy68LPHeXFbc14ZuEBN7g==\\n-----END PRIVATE KEY-----\\n-----BEGIN CERTIFICATE-----\\nMIIDPjCCAiagAwIBAgIQMQE1Kme+SLe/rFhCWlN6nDANBgkqhkiG9w0BAQsFADAc\\nMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODA2MjUyMDM0NDlaFw0x\\nOTA2MjUyMDQ0NDlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjAN\\nBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnfZF6WHRAKfGxQvdHl4VsaWZSok\\nKsd9YTBGhCbzJhmTvno5hhC2BWieOWIfzUwrJf4hqnqwL5fx+qnGfhP1REUy04Ih\\nsMT+QKeYAMqAGPTO3JZvIJElhnevE6Pzj1OqmVOlFE51ZrwIuEOo+wn7DGrGT2Rb\\nXPtZLzvy3pIKE3nbDGrRtW1ETCZUa7DrYa7RPUmdNXrdXlaypTrnU6ZDCtsTtEBa\\nekwbHTEYqFkk5SEhPNuqF6hx4bh2FHWW7zMIY85ZGPoDwSZEMY7olMW1+oaq0exZ\\nEifpk1vWVbR50IAA840FH3OrjFBftALY5HzP9uKEeVL35BBuagNTNwc0mQIDAQAB\\no3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEF\\nBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUmdOum0ntfOsgxdbHizaG4DCjMSEw\\nHQYDVR0OBBYEFJnTrptJ7XzrIMXWx4s2huAwozEhMA0GCSqGSIb3DQEBCwUAA4IB\\nAQBcMAm7qZ6rzrZ9RpGdJpdDbgvxH3gZojieXXuLR+4rnqNd/TRMhgd/QQZwqzxi\\nqEtyKHN3lVFAuS7lB/m3f37GI6VW2u0avruIXu/J5QDtGS/cCcg2W0uA0yIi4Y6I\\nrIGkp3NNsDx32VIObnv0nP/CniHKjA64BdXZN0rTK84281mI/LeVSUWNDgrkEVbF\\nuP5qZriJqHi2uZB10vXZnfPp9N4M0lcm9ETooBTDLrNYCaCBagNrIfTqWIk8NlJN\\ndCVxpyD1NRJSjkrUADLNJT4aDETBiwRXe7Xkv2KShlTIzjzlXb0sJqg5/oHladvA\\nxlkKv2bN4cNGWL6uXIXBIfT1\\n-----END CERTIFICATE-----\\n\",\"contentType\":\"application/x-pem-file\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1529958889,\"exp\":1561495489,\"created\":1529959489,\"updated\":1529959489,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:08 GMT", + "date" : "Mon, 25 Jun 2018 20:44:58 GMT", "content-length" : "2542", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -202,23 +182,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "485a9e17-d97b-49cf-a98f-2c80d9aca08f", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem\",\"deletedDate\":1520463129,\"scheduledPurgeDate\":1528239129,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"x5t\":\"4YElA9uuiGD1x6Zfiua-RIiC1uk\",\"cer\":\"MIIDPjCCAiagAwIBAgIQG2T7H/XPRGqBwnAkZbdahDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODAzMDcyMjQxNTlaFw0xOTAzMDcyMjUxNTlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt7JmOBk6nAA9IKnQjXlB5+M0BiCbEeIScfSNAL1L2LyzrTH6iQATlW3aylUcfvFNnj+3kuU5u628gS24qXGEtHej5NgtvOzbOH1VKPgNDUYYE/UDa+xlXQkZqqK9tn75xYBd39Rm8Aq1H6EI/bpeC4LWf9EJohKjtHzyZ6KZQb8Ig0DNVzCAk1cVaEw94UQTn7BYf+ZFVBLgJnoZiO1nfru72lxjJjuuqK8ZV9ut8pJ8Z3ud9DyVL4EUeWlegSvwBXFGiDWNfXJcTvXjZnN3tWrQbb5opGkOvIn1AsB2DaVBp4ka6b8WHAUbjQyrN4RjB8DrV4cD1QdB4bbzHXpfdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUXEkKhwmIJ304ly6v4KZy3qOOgVwwHQYDVR0OBBYEFFxJCocJiCd9OJcur+Cmct6jjoFcMA0GCSqGSIb3DQEBCwUAA4IBAQAcpoiCNU560s3NWx63+2gHwxFyx9UhAR5kZUQMdzHYS+lXB4JIclwuF/9AwXgP+jjVQU57L1eZIAPHoMhpZ8yg4wcvUgMIXTMrQOFgK0YwArlCC2t3eBdaLqsaaaASlQrii20xxFPR4MjPP6tJ+UuKUQb15FXGU1QfjLmh/VrS99xqDNWetJCVP/j6ZdyXUHMy7ivQ8QEzWLtWHQ9hXLrJE9RFTGNVTaXw8E0AcpAXi2pEVIysVOTiEGNdGyUotswKzoCNHbhBi4OXd8hoKQVTon1saflQuIcgbUPveQTJhzBUCUa12jjU6qYg6vN4Kuqg+eRWHBu+Qqs/gc9ypk8i\",\"attributes\":{\"enabled\":true,\"nbf\":1520462519,\"exp\":1551999119,\"created\":1520463119,\"updated\":1520463119,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463107,\"updated\":1520463107}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b98a4940-9a18-4844-9f0d-26349229c9e8", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem\",\"deletedDate\":1529959498,\"scheduledPurgeDate\":1537735498,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"x5t\":\"KnlJ2_j6yD9ZRy39d6WbSXhCR9Y\",\"cer\":\"MIIDPjCCAiagAwIBAgIQMQE1Kme+SLe/rFhCWlN6nDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODA2MjUyMDM0NDlaFw0xOTA2MjUyMDQ0NDlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnfZF6WHRAKfGxQvdHl4VsaWZSokKsd9YTBGhCbzJhmTvno5hhC2BWieOWIfzUwrJf4hqnqwL5fx+qnGfhP1REUy04IhsMT+QKeYAMqAGPTO3JZvIJElhnevE6Pzj1OqmVOlFE51ZrwIuEOo+wn7DGrGT2RbXPtZLzvy3pIKE3nbDGrRtW1ETCZUa7DrYa7RPUmdNXrdXlaypTrnU6ZDCtsTtEBaekwbHTEYqFkk5SEhPNuqF6hx4bh2FHWW7zMIY85ZGPoDwSZEMY7olMW1+oaq0exZEifpk1vWVbR50IAA840FH3OrjFBftALY5HzP9uKEeVL35BBuagNTNwc0mQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUmdOum0ntfOsgxdbHizaG4DCjMSEwHQYDVR0OBBYEFJnTrptJ7XzrIMXWx4s2huAwozEhMA0GCSqGSIb3DQEBCwUAA4IBAQBcMAm7qZ6rzrZ9RpGdJpdDbgvxH3gZojieXXuLR+4rnqNd/TRMhgd/QQZwqzxiqEtyKHN3lVFAuS7lB/m3f37GI6VW2u0avruIXu/J5QDtGS/cCcg2W0uA0yIi4Y6IrIGkp3NNsDx32VIObnv0nP/CniHKjA64BdXZN0rTK84281mI/LeVSUWNDgrkEVbFuP5qZriJqHi2uZB10vXZnfPp9N4M0lcm9ETooBTDLrNYCaCBagNrIfTqWIk8NlJNdCVxpyD1NRJSjkrUADLNJT4aDETBiwRXe7Xkv2KShlTIzjzlXb0sJqg5/oHladvAxlkKv2bN4cNGWL6uXIXBIfT1\",\"attributes\":{\"enabled\":true,\"nbf\":1529958889,\"exp\":1561495489,\"created\":1529959489,\"updated\":1529959489,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959481,\"updated\":1529959481}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:09 GMT", + "date" : "Mon, 25 Jun 2018 20:44:59 GMT", "content-length" : "93", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -228,23 +209,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "75baf217-eac9-4863-9a30-00b8f97a248c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "226d04f8-0a32-4e3c-994c-28023f337f07", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: SelfSignedJavaPem\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:09 GMT", + "date" : "Mon, 25 Jun 2018 20:45:02 GMT", "content-length" : "101", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -254,23 +236,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0e4f833b-b87e-45cc-bb94-e6b23fa015de", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c4c3f40c-4a46-4c37-816c-49762c6f2ad2", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: SelfSignedJavaPem\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:20 GMT", + "date" : "Mon, 25 Jun 2018 20:45:14 GMT", "content-length" : "2542", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -280,22 +263,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "11928303-6b21-4ff1-aa47-de26f651b24e", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem\",\"deletedDate\":1520463129,\"scheduledPurgeDate\":1528239129,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/733984ea37084ee49c1ddba8c3524319\",\"x5t\":\"4YElA9uuiGD1x6Zfiua-RIiC1uk\",\"cer\":\"MIIDPjCCAiagAwIBAgIQG2T7H/XPRGqBwnAkZbdahDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODAzMDcyMjQxNTlaFw0xOTAzMDcyMjUxNTlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt7JmOBk6nAA9IKnQjXlB5+M0BiCbEeIScfSNAL1L2LyzrTH6iQATlW3aylUcfvFNnj+3kuU5u628gS24qXGEtHej5NgtvOzbOH1VKPgNDUYYE/UDa+xlXQkZqqK9tn75xYBd39Rm8Aq1H6EI/bpeC4LWf9EJohKjtHzyZ6KZQb8Ig0DNVzCAk1cVaEw94UQTn7BYf+ZFVBLgJnoZiO1nfru72lxjJjuuqK8ZV9ut8pJ8Z3ud9DyVL4EUeWlegSvwBXFGiDWNfXJcTvXjZnN3tWrQbb5opGkOvIn1AsB2DaVBp4ka6b8WHAUbjQyrN4RjB8DrV4cD1QdB4bbzHXpfdQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUXEkKhwmIJ304ly6v4KZy3qOOgVwwHQYDVR0OBBYEFFxJCocJiCd9OJcur+Cmct6jjoFcMA0GCSqGSIb3DQEBCwUAA4IBAQAcpoiCNU560s3NWx63+2gHwxFyx9UhAR5kZUQMdzHYS+lXB4JIclwuF/9AwXgP+jjVQU57L1eZIAPHoMhpZ8yg4wcvUgMIXTMrQOFgK0YwArlCC2t3eBdaLqsaaaASlQrii20xxFPR4MjPP6tJ+UuKUQb15FXGU1QfjLmh/VrS99xqDNWetJCVP/j6ZdyXUHMy7ivQ8QEzWLtWHQ9hXLrJE9RFTGNVTaXw8E0AcpAXi2pEVIysVOTiEGNdGyUotswKzoCNHbhBi4OXd8hoKQVTon1saflQuIcgbUPveQTJhzBUCUa12jjU6qYg6vN4Kuqg+eRWHBu+Qqs/gc9ypk8i\",\"attributes\":{\"enabled\":true,\"nbf\":1520462519,\"exp\":1551999119,\"created\":1520463119,\"updated\":1520463119,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463107,\"updated\":1520463107}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5fe3760a-853e-4c17-9244-1e6ed78f9234", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem\",\"deletedDate\":1529959498,\"scheduledPurgeDate\":1537735498,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/SelfSignedJavaPem/1b06fdbadbc94641a2f3314b582f6b7f\",\"x5t\":\"KnlJ2_j6yD9ZRy39d6WbSXhCR9Y\",\"cer\":\"MIIDPjCCAiagAwIBAgIQMQE1Kme+SLe/rFhCWlN6nDANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDExFTZWxmU2lnbmVkSmF2YVBlbTAeFw0xODA2MjUyMDM0NDlaFw0xOTA2MjUyMDQ0NDlaMBwxGjAYBgNVBAMTEVNlbGZTaWduZWRKYXZhUGVtMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsnfZF6WHRAKfGxQvdHl4VsaWZSokKsd9YTBGhCbzJhmTvno5hhC2BWieOWIfzUwrJf4hqnqwL5fx+qnGfhP1REUy04IhsMT+QKeYAMqAGPTO3JZvIJElhnevE6Pzj1OqmVOlFE51ZrwIuEOo+wn7DGrGT2RbXPtZLzvy3pIKE3nbDGrRtW1ETCZUa7DrYa7RPUmdNXrdXlaypTrnU6ZDCtsTtEBaekwbHTEYqFkk5SEhPNuqF6hx4bh2FHWW7zMIY85ZGPoDwSZEMY7olMW1+oaq0exZEifpk1vWVbR50IAA840FH3OrjFBftALY5HzP9uKEeVL35BBuagNTNwc0mQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUmdOum0ntfOsgxdbHizaG4DCjMSEwHQYDVR0OBBYEFJnTrptJ7XzrIMXWx4s2huAwozEhMA0GCSqGSIb3DQEBCwUAA4IBAQBcMAm7qZ6rzrZ9RpGdJpdDbgvxH3gZojieXXuLR+4rnqNd/TRMhgd/QQZwqzxiqEtyKHN3lVFAuS7lB/m3f37GI6VW2u0avruIXu/J5QDtGS/cCcg2W0uA0yIi4Y6IrIGkp3NNsDx32VIObnv0nP/CniHKjA64BdXZN0rTK84281mI/LeVSUWNDgrkEVbFuP5qZriJqHi2uZB10vXZnfPp9N4M0lcm9ETooBTDLrNYCaCBagNrIfTqWIk8NlJNdCVxpyD1NRJSjkrUADLNJT4aDETBiwRXe7Xkv2KShlTIzjzlXb0sJqg5/oHladvAxlkKv2bN4cNGWL6uXIXBIfT1\",\"attributes\":{\"enabled\":true,\"nbf\":1529958889,\"exp\":1561495489,\"created\":1529959489,\"updated\":1529959489,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pem-file\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPem\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959481,\"updated\":1529959481}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/SelfSignedJavaPem/pending\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/SelfSignedJavaPem?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:52:20 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:45:19 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -304,10 +288,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bbb82004-7dc3-4d03-9f61-388591742b0d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a9a9e1b1-296b-4b0f-a235-08cbf70b6516", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePkcs12ForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePkcs12ForCertificateOperationsTest.json index b6eab0f..a7bbc1f 100644 --- a/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePkcs12ForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/createSelfSignedCertificatePkcs12ForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:18 GMT", + "date" : "Mon, 25 Jun 2018 20:42:43 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5c1612f4-df09-4351-b6ac-34ccd5ba1f04", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "afabb736-8218-4d8c-b329-a293ef539a4e", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:19 GMT", + "date" : "Mon, 25 Jun 2018 20:42:45 GMT", "content-length" : "1326", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,24 +46,25 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0-preview&request_id=30d34db386d044fd87310e19adb03171", + "location" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0&request_id=448c82bd75404f79a69178bc29097cf2", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0c2c2325-8d07-4c2d-ae29-bd85472f5375", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OQDDSCVkJwfz1K8IUjQXKfKg+dwBHhTsNS60g7Qtt76gVNRijHCWfjZYwqb7U52LPTjDJ5QOLyqL1BnsXLa8s8PcFjAVUUsHe5REQ6ZoFfZCAqP/WHM0+udjORYD5XSjXBlIrBC2qkJSvi+0f85Y6B+UqIt6FZ5EK2NbQp7Lh+ZprMGN8gFGltlHt1KLpJygqMCURdKq3vxizze+mqaTuu3Hv9An5I8HSOUp76ywkeA2yDcCWtuz6Lu78h70jTnyOIEmej0EVKakM/yrELfp6c86ya5dlQ9A1duVTP9z97WL9yo+IlR1lvPoiuimmgnbY8yqF4zuTaBSNQHOq5OvAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAYybkzU5qjc6veK3fvyt53SKGlqkI3QkeYp/GA9+575cSxDHq5MBUswbBkqjLSZThARkpjZatS6gihfd95zeViS3rqldnXa6Dk7SY94dsOjRIMYeUQzvYyrdnXWk1UPmJ3C9wwcSAWoTDcmw/zDSxGmdoW7fbJGkVh1CJY1FjSDXmPxtu5PX3qH0zWW3klF9uYNCrrg03raDP0gEgWcB8Qqp7e4iDRyuy8PxtxR/4/X91AvDMo3oxVx7/ENZ1jLA+W99sTDroY7FxZl768LyF8UPv6hYggmfAxFpUkIu1XQsXoDEQd+BG1XJt30u/BZmPaJQHNXAEjdms0yzoYVTnvA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"30d34db386d044fd87310e19adb03171\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "da0d60e4-d504-4850-a308-8d35e793621b", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrUssWRdIge64A9WiJm66RQyXzh8MU4lpSZ3JRpWMjwZlfAFeIsePeois0q0NS7ig96nWie9t80MveLtA/KrDf+IzAcMbFslKXw3DTHOp74DWiWID7pwvZvGJVGkhTAkkYjcS7TFTe6CMOayI+p0ykg+4Lqos6Gb3IJSTaCf0verghoxIFPQfl9PeTifpHO2pQ60p2oenQsOIrs6JXDvfBwjCc/N5ciedavvToTjmhlpI1vGI1aphXrRd/V49Pea5dEEqvRJ2cJ16m3lnTrezrsUUFyd89ZkfR6q/VXl/gJCsqUmEir+HC0yY1cAaLv3Kmb+JEKP5unDS1pgzXH7sJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnNvYD9nx/m+I90NN6WnpjZMYWpWmmAFqbfeMj/orylW5hSDUfFGg2w1NLOoIArKuQIQu9cKa8125NPvjvrDV6LK07xmf/+TaVdazHW/sRyVTd8q6eqLZqKsIM7T8uX0jQTTic08o3funpGmBJd64e7YFz1oqIIFUPYqYoMtTxw6pe2AOMr8Jtov2lPN1E4krKB7GYcBMwM5/B4nP6j/61BrCJbCa+OfMICYV802DizbbETmbIZKUDhdZ3DOfzkzMKtybOM+xTuKabSvTcbJ+RLv998Mvu8F3bdsSKjCDiYOkYpQTpJ6VZnDkhGW593MKP+RVrdxZV6gsBtGO0J9PtA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"448c82bd75404f79a69178bc29097cf2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:19 GMT", + "date" : "Mon, 25 Jun 2018 20:42:47 GMT", "content-length" : "1326", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -72,23 +74,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fd1f47f3-c646-493b-bf80-0b654c50c2e1", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OQDDSCVkJwfz1K8IUjQXKfKg+dwBHhTsNS60g7Qtt76gVNRijHCWfjZYwqb7U52LPTjDJ5QOLyqL1BnsXLa8s8PcFjAVUUsHe5REQ6ZoFfZCAqP/WHM0+udjORYD5XSjXBlIrBC2qkJSvi+0f85Y6B+UqIt6FZ5EK2NbQp7Lh+ZprMGN8gFGltlHt1KLpJygqMCURdKq3vxizze+mqaTuu3Hv9An5I8HSOUp76ywkeA2yDcCWtuz6Lu78h70jTnyOIEmej0EVKakM/yrELfp6c86ya5dlQ9A1duVTP9z97WL9yo+IlR1lvPoiuimmgnbY8yqF4zuTaBSNQHOq5OvAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAYybkzU5qjc6veK3fvyt53SKGlqkI3QkeYp/GA9+575cSxDHq5MBUswbBkqjLSZThARkpjZatS6gihfd95zeViS3rqldnXa6Dk7SY94dsOjRIMYeUQzvYyrdnXWk1UPmJ3C9wwcSAWoTDcmw/zDSxGmdoW7fbJGkVh1CJY1FjSDXmPxtu5PX3qH0zWW3klF9uYNCrrg03raDP0gEgWcB8Qqp7e4iDRyuy8PxtxR/4/X91AvDMo3oxVx7/ENZ1jLA+W99sTDroY7FxZl768LyF8UPv6hYggmfAxFpUkIu1XQsXoDEQd+BG1XJt30u/BZmPaJQHNXAEjdms0yzoYVTnvA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"30d34db386d044fd87310e19adb03171\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9dd810f2-feb6-4304-a51f-2fd61d74e295", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrUssWRdIge64A9WiJm66RQyXzh8MU4lpSZ3JRpWMjwZlfAFeIsePeois0q0NS7ig96nWie9t80MveLtA/KrDf+IzAcMbFslKXw3DTHOp74DWiWID7pwvZvGJVGkhTAkkYjcS7TFTe6CMOayI+p0ykg+4Lqos6Gb3IJSTaCf0verghoxIFPQfl9PeTifpHO2pQ60p2oenQsOIrs6JXDvfBwjCc/N5ciedavvToTjmhlpI1vGI1aphXrRd/V49Pea5dEEqvRJ2cJ16m3lnTrezrsUUFyd89ZkfR6q/VXl/gJCsqUmEir+HC0yY1cAaLv3Kmb+JEKP5unDS1pgzXH7sJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnNvYD9nx/m+I90NN6WnpjZMYWpWmmAFqbfeMj/orylW5hSDUfFGg2w1NLOoIArKuQIQu9cKa8125NPvjvrDV6LK07xmf/+TaVdazHW/sRyVTd8q6eqLZqKsIM7T8uX0jQTTic08o3funpGmBJd64e7YFz1oqIIFUPYqYoMtTxw6pe2AOMr8Jtov2lPN1E4krKB7GYcBMwM5/B4nP6j/61BrCJbCa+OfMICYV802DizbbETmbIZKUDhdZ3DOfzkzMKtybOM+xTuKabSvTcbJ+RLv998Mvu8F3bdsSKjCDiYOkYpQTpJ6VZnDkhGW593MKP+RVrdxZV6gsBtGO0J9PtA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"448c82bd75404f79a69178bc29097cf2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:29 GMT", + "date" : "Mon, 25 Jun 2018 20:42:58 GMT", "content-length" : "1326", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -98,23 +101,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e5d17ed7-dd53-47a8-a805-ec9f6c35340c", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OQDDSCVkJwfz1K8IUjQXKfKg+dwBHhTsNS60g7Qtt76gVNRijHCWfjZYwqb7U52LPTjDJ5QOLyqL1BnsXLa8s8PcFjAVUUsHe5REQ6ZoFfZCAqP/WHM0+udjORYD5XSjXBlIrBC2qkJSvi+0f85Y6B+UqIt6FZ5EK2NbQp7Lh+ZprMGN8gFGltlHt1KLpJygqMCURdKq3vxizze+mqaTuu3Hv9An5I8HSOUp76ywkeA2yDcCWtuz6Lu78h70jTnyOIEmej0EVKakM/yrELfp6c86ya5dlQ9A1duVTP9z97WL9yo+IlR1lvPoiuimmgnbY8yqF4zuTaBSNQHOq5OvAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAYybkzU5qjc6veK3fvyt53SKGlqkI3QkeYp/GA9+575cSxDHq5MBUswbBkqjLSZThARkpjZatS6gihfd95zeViS3rqldnXa6Dk7SY94dsOjRIMYeUQzvYyrdnXWk1UPmJ3C9wwcSAWoTDcmw/zDSxGmdoW7fbJGkVh1CJY1FjSDXmPxtu5PX3qH0zWW3klF9uYNCrrg03raDP0gEgWcB8Qqp7e4iDRyuy8PxtxR/4/X91AvDMo3oxVx7/ENZ1jLA+W99sTDroY7FxZl768LyF8UPv6hYggmfAxFpUkIu1XQsXoDEQd+BG1XJt30u/BZmPaJQHNXAEjdms0yzoYVTnvA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"30d34db386d044fd87310e19adb03171\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0b1f6533-47d9-460b-887e-bb7595934933", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrUssWRdIge64A9WiJm66RQyXzh8MU4lpSZ3JRpWMjwZlfAFeIsePeois0q0NS7ig96nWie9t80MveLtA/KrDf+IzAcMbFslKXw3DTHOp74DWiWID7pwvZvGJVGkhTAkkYjcS7TFTe6CMOayI+p0ykg+4Lqos6Gb3IJSTaCf0verghoxIFPQfl9PeTifpHO2pQ60p2oenQsOIrs6JXDvfBwjCc/N5ciedavvToTjmhlpI1vGI1aphXrRd/V49Pea5dEEqvRJ2cJ16m3lnTrezrsUUFyd89ZkfR6q/VXl/gJCsqUmEir+HC0yY1cAaLv3Kmb+JEKP5unDS1pgzXH7sJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnNvYD9nx/m+I90NN6WnpjZMYWpWmmAFqbfeMj/orylW5hSDUfFGg2w1NLOoIArKuQIQu9cKa8125NPvjvrDV6LK07xmf/+TaVdazHW/sRyVTd8q6eqLZqKsIM7T8uX0jQTTic08o3funpGmBJd64e7YFz1oqIIFUPYqYoMtTxw6pe2AOMr8Jtov2lPN1E4krKB7GYcBMwM5/B4nP6j/61BrCJbCa+OfMICYV802DizbbETmbIZKUDhdZ3DOfzkzMKtybOM+xTuKabSvTcbJ+RLv998Mvu8F3bdsSKjCDiYOkYpQTpJ6VZnDkhGW593MKP+RVrdxZV6gsBtGO0J9PtA==\",\"cancellation_requested\":false,\"status\":\"inProgress\",\"status_details\":\"Pending certificate created. Certificate request is in progress. This may take some time based on the issuer provider. Please check again later.\",\"request_id\":\"448c82bd75404f79a69178bc29097cf2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:39 GMT", + "date" : "Mon, 25 Jun 2018 20:43:15 GMT", "content-length" : "1259", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -124,23 +128,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0c4e9e62-f556-47ce-94ca-a80000be7ab4", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC+OQDDSCVkJwfz1K8IUjQXKfKg+dwBHhTsNS60g7Qtt76gVNRijHCWfjZYwqb7U52LPTjDJ5QOLyqL1BnsXLa8s8PcFjAVUUsHe5REQ6ZoFfZCAqP/WHM0+udjORYD5XSjXBlIrBC2qkJSvi+0f85Y6B+UqIt6FZ5EK2NbQp7Lh+ZprMGN8gFGltlHt1KLpJygqMCURdKq3vxizze+mqaTuu3Hv9An5I8HSOUp76ywkeA2yDcCWtuz6Lu78h70jTnyOIEmej0EVKakM/yrELfp6c86ya5dlQ9A1duVTP9z97WL9yo+IlR1lvPoiuimmgnbY8yqF4zuTaBSNQHOq5OvAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAYybkzU5qjc6veK3fvyt53SKGlqkI3QkeYp/GA9+575cSxDHq5MBUswbBkqjLSZThARkpjZatS6gihfd95zeViS3rqldnXa6Dk7SY94dsOjRIMYeUQzvYyrdnXWk1UPmJ3C9wwcSAWoTDcmw/zDSxGmdoW7fbJGkVh1CJY1FjSDXmPxtu5PX3qH0zWW3klF9uYNCrrg03raDP0gEgWcB8Qqp7e4iDRyuy8PxtxR/4/X91AvDMo3oxVx7/ENZ1jLA+W99sTDroY7FxZl768LyF8UPv6hYggmfAxFpUkIu1XQsXoDEQd+BG1XJt30u/BZmPaJQHNXAEjdms0yzoYVTnvA==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12\",\"request_id\":\"30d34db386d044fd87310e19adb03171\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "50474355-e9b0-4b67-acd7-f0887431a1f5", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\",\"issuer\":{\"name\":\"Self\"},\"csr\":\"MIICrzCCAZcCAQAwHzEdMBsGA1UEAxMUU2VsZlNpZ25lZEphdmFQa2NzMTIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrUssWRdIge64A9WiJm66RQyXzh8MU4lpSZ3JRpWMjwZlfAFeIsePeois0q0NS7ig96nWie9t80MveLtA/KrDf+IzAcMbFslKXw3DTHOp74DWiWID7pwvZvGJVGkhTAkkYjcS7TFTe6CMOayI+p0ykg+4Lqos6Gb3IJSTaCf0verghoxIFPQfl9PeTifpHO2pQ60p2oenQsOIrs6JXDvfBwjCc/N5ciedavvToTjmhlpI1vGI1aphXrRd/V49Pea5dEEqvRJ2cJ16m3lnTrezrsUUFyd89ZkfR6q/VXl/gJCsqUmEir+HC0yY1cAaLv3Kmb+JEKP5unDS1pgzXH7sJAgMBAAGgSzBJBgkqhkiG9w0BCQ4xPDA6MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwCQYDVR0TBAIwADANBgkqhkiG9w0BAQsFAAOCAQEAnNvYD9nx/m+I90NN6WnpjZMYWpWmmAFqbfeMj/orylW5hSDUfFGg2w1NLOoIArKuQIQu9cKa8125NPvjvrDV6LK07xmf/+TaVdazHW/sRyVTd8q6eqLZqKsIM7T8uX0jQTTic08o3funpGmBJd64e7YFz1oqIIFUPYqYoMtTxw6pe2AOMr8Jtov2lPN1E4krKB7GYcBMwM5/B4nP6j/61BrCJbCa+OfMICYV802DizbbETmbIZKUDhdZ3DOfzkzMKtybOM+xTuKabSvTcbJ+RLv998Mvu8F3bdsSKjCDiYOkYpQTpJ6VZnDkhGW593MKP+RVrdxZV6gsBtGO0J9PtA==\",\"cancellation_requested\":false,\"status\":\"completed\",\"target\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12\",\"request_id\":\"448c82bd75404f79a69178bc29097cf2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:39 GMT", + "date" : "Mon, 25 Jun 2018 20:43:16 GMT", "content-length" : "2449", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -150,23 +155,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "499fa277-ea01-4f58-8b4a-6d2c73374688", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"x5t\":\"IKoebP20RgtgkQkdSeRqUws_yg8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQIfiEaYl4RGu5xXRsY2Jh8jANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODAzMDcyMjQzMjlaFw0xOTAzMDcyMjUzMjlaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjkAw0glZCcH89SvCFI0FynyoPncAR4U7DUutIO0Lbe+oFTUYoxwln42WMKm+1Odiz04wyeUDi8qi9QZ7Fy2vLPD3BYwFVFLB3uUREOmaBX2QgKj/1hzNPrnYzkWA+V0o1wZSKwQtqpCUr4vtH/OWOgflKiLehWeRCtjW0Key4fmaazBjfIBRpbZR7dSi6ScoKjAlEXSqt78Ys83vpqmk7rtx7/QJ+SPB0jlKe+ssJHgNsg3Alrbs+i7u/Ie9I058jiBJno9BFSmpDP8qxC36enPOsmuXZUPQNXblUz/c/e1i/cqPiJUdZbz6IroppoJ22PMqheM7k2gUjUBzquTrwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUKRAcWY2VQh5qWRSc1FDCFRE/MKwwHQYDVR0OBBYEFCkQHFmNlUIealkUnNRQwhURPzCsMA0GCSqGSIb3DQEBCwUAA4IBAQBBTS8wMxj3m5GC3u5E66Jw0Sw8M8X7u3vlHT9iA70bFggcKWybg17PJ9/vDKaCCDXLg0jp6D1oBE8bmzh0EIL2Qrs3vuiyWlvLtjDHg98gC5i1PjcnCnmBvFjWmZKJshFQzvJwQfmJJO7sQHrUxx8pvuJYzIJhsv8xu4WPM6EvZ9xUvooBNHw6fyUj4ldPwwupTWTbRMLatSy12h4cOUF5jI5z3Tzfm3nig3pQ/cDsIP3SxzQsKGJ8COy7vASEgm6Sz3Yi8Ca+qMk6UjEGHe3OSVr+3no8sqQzAEpa4iChe0RG4R9Tj5fSu1V6ZoJie3LcBIgiEr0syrpwRkBPQkU/\",\"attributes\":{\"enabled\":true,\"nbf\":1520462609,\"exp\":1551999209,\"created\":1520463209,\"updated\":1520463209,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463199,\"updated\":1520463199}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f316a7d3-ecc7-4fca-a925-9d5d4e5c4577", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"x5t\":\"Om-VbbinEvfYKd16l9bSxFd3Im8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQBvZ7Z9zkRNSBnvfas7VmDzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUyMDMzMDJaFw0xOTA2MjUyMDQzMDJaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1LLFkXSIHuuAPVoiZuukUMl84fDFOJaUmdyUaVjI8GZXwBXiLHj3qIrNKtDUu4oPep1onvbfNDL3i7QPyqw3/iMwHDGxbJSl8Nw0xzqe+A1oliA+6cL2bxiVRpIUwJJGI3Eu0xU3ugjDmsiPqdMpIPuC6qLOhm9yCUk2gn9L3q4IaMSBT0H5fT3k4n6RztqUOtKdqHp0LDiK7OiVw73wcIwnPzeXInnWr706E45oZaSNbxiNWqYV60Xf1ePT3muXRBKr0SdnCdept5Z063s67FFBcnfPWZH0eqv1V5f4CQrKlJhIq/hwtMmNXAGi79ypm/iRCj+bpw0taYM1x+7CQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUV9eXvCJbaBAw21wYVaQJlyD5A+gwHQYDVR0OBBYEFFfXl7wiW2gQMNtcGFWkCZcg+QPoMA0GCSqGSIb3DQEBCwUAA4IBAQCosg7Vof1TmGtM3Q2IWM6w5J6eJd++hcfsrF6nSovqMjc3poEdfLfuWJ0NSOYoKw8oksvAi/QkrpKU4bOFwEa2S0f76pdsqtwIXmDKgdoPxFORd+lKFp3vzc9QMMQYHTl+PzlvnN5rbsdBpwHrUVWW5qF7YYqJnpGVOqrWi3EplmaAOfcwNuIsL1d9et+zA1ubuPqt+W+N+4wORcQ6d2mnTaYlXgucJZI0/SNUvLOrCoudLYhc5QVRsGSAXAuttaWTS0vY7pOWZdl31G+URlrOwwVOjln0dxX9UNHw6BHIt7CctIvH3N4datvDbGTa/f8n7+9J4jx7GE8jIB5Bwv4Z\",\"attributes\":{\"enabled\":true,\"nbf\":1529958782,\"exp\":1561495382,\"created\":1529959382,\"updated\":1529959382,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959366,\"updated\":1529959366}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:39 GMT", + "date" : "Mon, 25 Jun 2018 20:43:17 GMT", "content-length" : "3994", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -176,23 +182,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "eab05d3b-871d-4a8a-96cf-7387050be83e", - "Body" : "{\"value\":\"MIIKVAIBAzCCChQGCSqGSIb3DQEHAaCCCgUEggoBMIIJ/TCCBhYGCSqGSIb3DQEHAaCCBgcEggYDMIIF/zCCBfsGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAhu0lLD0WFurwICB9AEggTYQddt3Ab79xBgon78fPv/myEuUP1T1mLBKg3nA/lufZUmzelrXk8xim3LyLcR07GNtIfZwcygkOuzk93Gt0EmiOklJKQJiqq6WfYbRIDQthuAOMPzUqHp90g9x0r3O+m8kuX51eyGNmRccvqIcoDz1rChyxAlXoKk8CfcAek8aPb9G9Z6LC2fwXU5tnkcsYnkuca/u/xW3aBaYdGIhDsm0FyQeNunpJUpHUkKSS4aUAJkZ4Ey/dEJrNafrpjbq1T+YJ5u0spvQjLjAf/pV+jyo4AYttz/IJzNYRKDbs6zywImd6gc19pgV29W7zirxK+Nk94olIaT9ca56YpWdV1i+mxRwb9pulCSQ6n1H9RnyA6jXxTB8TKieKRCHvsu8dnpStdQ9ZQyUKQd4I6oML3tFpqI1mc/t2Ca/efCvNiimWTYBEv2dIOAdQx0wc3C2cp/DabYbWS4PPVJHRJ18yVFX2t9WpUvKbcIgfYmzTCy1Z1DcJfGV3u/Nnk/9Y8OS0XSBCFKntVgtCFBGSeGfBjR7a8zd7iTKvIX33/a7/7h0/8GXiG6T82SenM7cgUP9EO2+2WEoL3LF3qbrDCuJx22aZNrh3phbi2MYqXhIGrhKFvTBZ6jDmN54bYWbzWgFiHREGc2HJNXaHqv2b+UB+cqUqappEATgUslarQFLoTqiE4idmyGTQTFR/MlrG/v3L24ZMF3rurE76hl8loCR1QN6pVpx2Lx+klD0YjuG38QexDL+AROz7ucNy72BRddEAj+xQunBzaVjMrtaaNUrli6/mKSMU/iDLh4X/rNUJlY2yL1rX64qB+ePe6IhOI363JCc43avAIA2HCkgvRJd9ZHmk6AWMYaLCXe6RMzmSy6uQHSruZHXtsR/Fv2uNMQwKGm19dr7P1S0UP4aTZjwG2CpN/zyPe3ONDBMYzWL5RNlo/stz2SGqiebPmgYq3qRViLLtpdeftQx9yl8oZHcfNerXa/lkKAOMSRk7W2f4W6QUu7ZNJx7MDj/AVsEUOXlJnIVEgsfdbQhRaIHaE4hR4yykr70tqJAyZuBu1ABZfzXEHGcB8Tw4rlslkkP9PLTeneQAKn4dJMv1q2MHtaedd9R+1Yy+3YbHBHPTlGUetLYYKof0ZQtSKPJNqpfIICFJnKlQLcmr4L1xnaPX5cFdQ2pwQiN1jWnWeqm8G09qnEgTb8/uvBmcQ3uhdKQ3cXjokHOuq0d7v3i4XEA02q/4VQlQs24CF6wYrHnOohOaCOUilwXCmX/+kIFNuy7VDZ6cattvbKZYxjHSEC6z3K/Lr5EQ5qMPnXqhBtP51kG6hjnLadC8lcNlQit54YKuCP+e/XB7UtkrxhpptQEZFqIzuV+zyULFAKMZ8Z88kwEesgmnc0ltEaSkcx23lzeUqFQgXgIYCPpoAfxPgzWwJ6N6aDhqilpVPwSuQb0ckzUVCSKyWk+U9kRPs6YQomRxaxA3EewAMkM2o6P1nwwWzMkZh90o1JjO6fw145me1cTvixsls/41Di4Fn0ef2tFEk4SeUv5VJ+1BecIVCP06AhvCTCsO9A2HReCg548RUdWj59w+hHxNkKxBRMrxfqdZi9+y/IgZ7wZS4N7uz3pyZy7ERfkcxkvYGjZiHJKYt3xVP7ZT85dBKf66YG3zGB6TATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IADQAOAAyADAAZQA5ADQAMQAtAGMAOQAwADMALQA0ADUAYwA4AC0AYQA0ADIAMgAtADMAZQBiAGIAMQBmADYAZQA3AGUANQBhMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIID3wYJKoZIhvcNAQcGoIID0DCCA8wCAQAwggPFBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAh1sPqDsDbvMAICB9CAggOYu65IXPk6PzjW2uNQhncpcTXlGtggx3NiQrKHShhJwTvsu3egUbPcnI/xeMLxkARzNnupwHXDLvlcV3gUo7leil7Tw/trBRZgYATf11Dxy/5JWS8RKqQbyYuTq/yH2uxhjggQ0GVO4pwg1tuHSGOjqRzSo4z1FL9tBnBhlRtD/dj0CjwHraVGJ7MhnQKXWENpCxFzrsbS/pVLVFcLJ7kfdP9RRjyMVVwpjyXa92kcCUcc+DF82awLrF72CJBW35wvFNs76zS/uNdxteTG39AAaY7RhDgk81f1glNY4yfl+A/5uFnIq50LECvYX5/Q7dek4IQyzQWrfhp1dBfGONQMvTsBV0/h5QJSrTndcTTf5okFLuNc/bIoCt5BZDeTBl6kLuS1hVUZp8qzsrI6n9+N1JSLlqsslFFqooDw/DBrFBmZCD69qHCiJySoSdyv+SNDCFxJJXPnDLef9h41wDz2xULUkQ5RZ+DrXICV/rPjf2aYilHvTQOm7CzB7tC9YNmIxV9TawvOsZfMLKQXnlLHkUZ/hnSADbuFfCb2o4dCAwnVmXcfv/W4Ky7mN18A82W4r0RRrYIL7VnJvjZTdt1HW06M8VgYB5KcMob/1j2gm0fkG5nDRHJl9NEMVtrCXp+ZtPCcp+M6ZiPVvF1JkYw65y5uKlXyqy5ciMnGrdxmnK9A2cg9m1pNHs1ENo/n/R6gegbkitNAsHM6Y3Nc1yMQHJMpXFz8+dILrRLO9JmtayHcRWkthenJJS6P77SzC0gXqs/13Qdwh3OUz/ToCE0D5BEeq22ZtTF0XyiJv7LHaSAXPuOIZQm1vsuwTq2/ooYQfZt48jiisyMMq2YqzpND9wpjbo4y3Krhnsr8OYvPpgzOdw+1ScoJZ0AOlOaendF28fgEA21QHYlY5LXcS2rx800j3HzmgNkN7PNn7vwl5MScuXdoQ03zsRhxv7TlOa2tsN9MgusFahKbTQ2JFtR8hsDiuxQVtEjq3Fqm0C43E2T3oYCnQzwWlaWNQMEUBLUguhMuD3xwxEXM3356zsv52dJqUhJznFofCSJH/B77xXPHvAloTOamJwQl9O0qJZd3q3EqvWKCBbTjvH/mGm1oCB+nYOR3a+EGdgIG5ipgWGYM3Q/s9ABywj59ghj5duA0OindsqIvVNCdvCdu+/as9UVMyx6RqG+Ifp8UWpfHdI94OEXruo+PZ8XIrC7lQzSUUU1V9rPcwaIwNzAfMAcGBSsOAwIaBBT7B2phAb2F1mA13rXinHj5x16kwQQU1Eij73OhEDPpPrrdPxCEuAcqT00=\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1520462609,\"exp\":1551999209,\"created\":1520463209,\"updated\":1520463209,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c9ea60d3-710d-49ee-a5f8-f793c25327a1", + "Body" : "{\"value\":\"MIIKVAIBAzCCChQGCSqGSIb3DQEHAaCCCgUEggoBMIIJ/TCCBhYGCSqGSIb3DQEHAaCCBgcEggYDMIIF/zCCBfsGCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAhNOzCvxJu4FgICB9AEggTYdKc7DmhSBb5CGM1o6CFwkLk7jkfN0b7i7J7K2dMduPkaR/u4W1+HPxdtilbm276Ak4ug3a4QJIaQQGspv+FfJuWGDWJnN8oNDE7HBrrbeM/RTzUiRV1pCNZ88YZHTCdoFeDVTbGcxHslg/nU7aVt39EUMraaVdKepdjyn+v3m9//Ce9Qr+GAq3jGAkxqS7iT2G8ZeIWDe6CBebpaTuSFn3V3Li4vqJQfAF4GV1Mz9EyKx4C9sApq2O0vLesZLnT1UDo9fjFbgTwPSIJLPwxbdZB2dsUOF844nd4OXZdb0sl291keOezYUNYuPe/XNSz8hAhRt3IAFdB4rpgEOS9ahtXSRebjkuXWtOuuBGcC3LijpsgmlljYKRDzNuEkL3CwWco3DciWtD1glnUdd6gwsPb00DbDtyXVQB6Ucuni5C3U3PaLUOmUNLrHgbofW7bmvK/08isYtIgbNUNWs3smRQzKC39kI4Z4COseJqqsisLQqJD8hHrzWK8zEMJRGJNm0KmrFBon93E2cQi+ZBaLnZfzCLyntp2DUGkFa22Y+dH3OkEBhhc0XcJXlExvmyXhOlMAD0WyZJCVj6Cjw+ON0hZRZrcBFgb1zlK/FL9bzuxAD35K3jGHRUCYhtk/zupUzt4FQ+1k8CDd+bZ/fVpn4WFX69lwIPEAdcxKEVNeXIa8c1ci7n3tA+mmIjPD+3VimTiNocvAilD8vgz6PesYfre7CokANCcgqAjLQlhAwPhwx0ys3DZwX125mfPYhpviosNwUR5QTWR/2Ompq0sqriKQir9H/jruAK0ZGTZC/SWUihaoTSlpn+jp7J6wGCOSzDZKuKLXLpvG14pDO1/e7L9pILLQ729fNuVXwDzx4GbCuROjjwQQgL1f29jfTdsLTvp45YbKOVHEC4fQGWe1ydNGi5OifUmykUsDOk9wMF+GR6VnIZ9uQ5/1eAfqa6adXFd19R/uCpnyR2t4CHbi/UG6uyOeNHGsIrVCkgtDlk3tucon5Nl0sgu4JlhbvibrvEfRg7zjLYacOSb2tjWtl0A0nlPZeRA8z+bUBLeIzxeNVFE75B0L92k/jpzfFMIzMUtC+q0J7NlXdCtVK3dfJN42s5bCjN2k5Blq1SaKMdIODnmiFaAtNk3BQX34dm8pfvQQ/bsmMViFYrcEIgzokx/Ih0E8yPLYfFUr2eSPObRNJ6s9q063Kpu0qCBzyk9HR3biHfGgD8RqbTo1WD8boXff5ywDVm0D5Iq+1UI1nQ1kFb19ncB5kr7wcdbDAibChB5jcoa8l2YXerHKy4hwlrZs8MnPo7Ox6Hnrx/PqchLDdS8hRMyj+eg7Htxak4AblDPUaqvTuTmveG9ecEkwQ9+uEnZZv1dTyK4CmfO01qQdZWND5FCGzE3ifWx5jNXvFBD3ADSA/y3NaIpIcmtpVa/JyJdX6T6yVyAFAly+vViMf+0hagPh0fKjtLpV8+jtcag20oC0jtrf81TdWBOynt1xuNQB/WTXlT+aoytMlRKtE90tfoDCTcUtlrb1i0WWLY//jmFf1Qeu0ZXRzWSYHZaaxVBGd219nLTjeF409mWdVi6bVUVSIRwNgE0DJDMzXRQarBfejW9IaMKITy49EeF+7EPhlf43grsVKqKrqqgcqF+0XGg9yTGB6TATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IADMAZgA5ADEAZAAyADQAYQAtAGIANQAzAGMALQA0AGUAMQA2AC0AOAA0AGMAZgAtADEAMQA2ADkANQA1ADkAMwA5ADUAZQAwMHkGCSsGAQQBgjcRATFsHmoATQBpAGMAcgBvAHMAbwBmAHQAIABFAG4AaABhAG4AYwBlAGQAIABSAFMAQQAgAGEAbgBkACAAQQBFAFMAIABDAHIAeQBwAHQAbwBnAHIAYQBwAGgAaQBjACAAUAByAG8AdgBpAGQAZQByMIID3wYJKoZIhvcNAQcGoIID0DCCA8wCAQAwggPFBgkqhkiG9w0BBwEwHAYKKoZIhvcNAQwBBjAOBAizSKvFhTEBRAICB9CAggOY2bYYRnNQhUXJLOcEqyOiwCqNb2bf8kaPTJZnsDUPVCfLuYBOB1MPxd5sgwYcgn4vrb4M4c2tIG+NoeMt8p8gUMeGCVVb2+GCxlMxjxsFc9kfJO3pvwIklr6iqsFPyxN37HWby+QxYUQmE0umCmhRx8BdK0SHTeMwg/E0fZLq+HOFpdnNrbQyOYj4Js1Tm9ul5TpV37TIPIiaoaKxm86N4qhhoVmvj8/Y6aSaiCtWLciM9vWutnvB//AyWJtspaZJPmq4KtPDg791jIWzUz+4tEe2RhqsVZWuH/rLMe89YNdU3focX+qIpX4GEpXr9bVHkZXvCik5Hh0rpmkmct8auO4MKY5EEvhgPdGc7ouj2PF0HrC1KPy7pkDnfcqfNsGeyubCZpQXoO7/sm3+N6ttPXo8QNh7pQajVhxBCRmo8X6NH6hNKt4NCzALlqeZm0A41DqHkjtk8dX5kJ/WC3qxKEg+qLEFrsC295TjayBR6BniyhGTUNbZIIRpWr9pCkvgNtlX1JPbzNAb9YFUq9hvqa7gP6amnw7IN/Li75SfQP3o3wQ6EERlOxs3NCSrT3Uor+b7IpU2+DlGh2Fb2T1y6YZc7X0R3Y4vRAU1savvJDy4pmUWOj2JHb1P3uXHjeOZ1UCoYGq/w7a3ei15JdQbQh2lVzIrwUKV/E6K+Dxg8pKRTmBOB5TdvdW1yDNyExmcOrh5o2D4ALKbGIMSutgNeo84fzlDWssQL5mUttrnQHhlsOtCWHVwd5CScIk7A/bGZt9JL5bOfqtZUh0gX4yT+ehzgE0cdJk/k1HpFPngXwzJpiAlxDowm2HNx2EgH8NezVZebhVc+GH1fxLoel2oPhCWdMIP5Re38v59xapi5Jq3+dNc7REUqBl7dmR0s7QnBl/gH0iITv9XkfnIodxgAF4zz8IB6LY9Bs6Fkcf3HV2MEYvpNnatiGO48ANBEWCnqCP+d/lYafBvgOaO2vPE1gj9w6wQ+DqTXEcUMcxKV1VSn2+DH6wOrtyk6FcAHUBs+RWGzuFcHUlKTkonPHxu35q+hjZh4HQRJbc8KX/MtIC5lyn2H3hfvd8xrjoSpocHcGVmhZI6hMzsWxdIFQns6GlJ7Wm3qV4UnTV8LEUBJcXquE6zbx3IbR6BXS2EU781jIYT6oJv5ABcrcBit3lVzX9ZeWvuQjfBKYsYyde8bmHlOmQEXGaV0eyK47tU0vvfE/lUAh0DeJUwNzAfMAcGBSsOAwIaBBQjOs4O9ikadRlBFPAOgpDj5pe94AQUBs24ab+iiKOkuaiG8Ek54sbyEBs=\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1529958782,\"exp\":1561495382,\"created\":1529959382,\"updated\":1529959382,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:39 GMT", + "date" : "Mon, 25 Jun 2018 20:43:18 GMT", "content-length" : "722", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -202,23 +209,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "af443c56-a6e0-4e96-be70-9c90de914d20", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vjkAw0glZCcH89SvCFI0FynyoPncAR4U7DUutIO0Lbe-oFTUYoxwln42WMKm-1Odiz04wyeUDi8qi9QZ7Fy2vLPD3BYwFVFLB3uUREOmaBX2QgKj_1hzNPrnYzkWA-V0o1wZSKwQtqpCUr4vtH_OWOgflKiLehWeRCtjW0Key4fmaazBjfIBRpbZR7dSi6ScoKjAlEXSqt78Ys83vpqmk7rtx7_QJ-SPB0jlKe-ssJHgNsg3Alrbs-i7u_Ie9I058jiBJno9BFSmpDP8qxC36enPOsmuXZUPQNXblUz_c_e1i_cqPiJUdZbz6IroppoJ22PMqheM7k2gUjUBzquTrw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":1520462609,\"exp\":1551999209,\"created\":1520463209,\"updated\":1520463209,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"managed\":true}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3bccf37e-cdd3-4b96-8ccd-8fec9aa34b00", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"q1LLFkXSIHuuAPVoiZuukUMl84fDFOJaUmdyUaVjI8GZXwBXiLHj3qIrNKtDUu4oPep1onvbfNDL3i7QPyqw3_iMwHDGxbJSl8Nw0xzqe-A1oliA-6cL2bxiVRpIUwJJGI3Eu0xU3ugjDmsiPqdMpIPuC6qLOhm9yCUk2gn9L3q4IaMSBT0H5fT3k4n6RztqUOtKdqHp0LDiK7OiVw73wcIwnPzeXInnWr706E45oZaSNbxiNWqYV60Xf1ePT3muXRBKr0SdnCdept5Z063s67FFBcnfPWZH0eqv1V5f4CQrKlJhIq_hwtMmNXAGi79ypm_iRCj-bpw0taYM1x-7CQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":1529958782,\"exp\":1561495382,\"created\":1529959382,\"updated\":1529959382,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"managed\":true}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:41 GMT", + "date" : "Mon, 25 Jun 2018 20:43:20 GMT", "content-length" : "2615", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -228,23 +236,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "17198dae-d811-4e9a-b035-9e7d2a3b65ba", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12\",\"deletedDate\":1520463221,\"scheduledPurgeDate\":1528239221,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"x5t\":\"IKoebP20RgtgkQkdSeRqUws_yg8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQIfiEaYl4RGu5xXRsY2Jh8jANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODAzMDcyMjQzMjlaFw0xOTAzMDcyMjUzMjlaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjkAw0glZCcH89SvCFI0FynyoPncAR4U7DUutIO0Lbe+oFTUYoxwln42WMKm+1Odiz04wyeUDi8qi9QZ7Fy2vLPD3BYwFVFLB3uUREOmaBX2QgKj/1hzNPrnYzkWA+V0o1wZSKwQtqpCUr4vtH/OWOgflKiLehWeRCtjW0Key4fmaazBjfIBRpbZR7dSi6ScoKjAlEXSqt78Ys83vpqmk7rtx7/QJ+SPB0jlKe+ssJHgNsg3Alrbs+i7u/Ie9I058jiBJno9BFSmpDP8qxC36enPOsmuXZUPQNXblUz/c/e1i/cqPiJUdZbz6IroppoJ22PMqheM7k2gUjUBzquTrwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUKRAcWY2VQh5qWRSc1FDCFRE/MKwwHQYDVR0OBBYEFCkQHFmNlUIealkUnNRQwhURPzCsMA0GCSqGSIb3DQEBCwUAA4IBAQBBTS8wMxj3m5GC3u5E66Jw0Sw8M8X7u3vlHT9iA70bFggcKWybg17PJ9/vDKaCCDXLg0jp6D1oBE8bmzh0EIL2Qrs3vuiyWlvLtjDHg98gC5i1PjcnCnmBvFjWmZKJshFQzvJwQfmJJO7sQHrUxx8pvuJYzIJhsv8xu4WPM6EvZ9xUvooBNHw6fyUj4ldPwwupTWTbRMLatSy12h4cOUF5jI5z3Tzfm3nig3pQ/cDsIP3SxzQsKGJ8COy7vASEgm6Sz3Yi8Ca+qMk6UjEGHe3OSVr+3no8sqQzAEpa4iChe0RG4R9Tj5fSu1V6ZoJie3LcBIgiEr0syrpwRkBPQkU/\",\"attributes\":{\"enabled\":true,\"nbf\":1520462609,\"exp\":1551999209,\"created\":1520463209,\"updated\":1520463209,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463199,\"updated\":1520463199}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d76ccb4b-3444-462e-8682-722ee5dd1773", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12\",\"deletedDate\":1529959401,\"scheduledPurgeDate\":1537735401,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"x5t\":\"Om-VbbinEvfYKd16l9bSxFd3Im8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQBvZ7Z9zkRNSBnvfas7VmDzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUyMDMzMDJaFw0xOTA2MjUyMDQzMDJaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1LLFkXSIHuuAPVoiZuukUMl84fDFOJaUmdyUaVjI8GZXwBXiLHj3qIrNKtDUu4oPep1onvbfNDL3i7QPyqw3/iMwHDGxbJSl8Nw0xzqe+A1oliA+6cL2bxiVRpIUwJJGI3Eu0xU3ugjDmsiPqdMpIPuC6qLOhm9yCUk2gn9L3q4IaMSBT0H5fT3k4n6RztqUOtKdqHp0LDiK7OiVw73wcIwnPzeXInnWr706E45oZaSNbxiNWqYV60Xf1ePT3muXRBKr0SdnCdept5Z063s67FFBcnfPWZH0eqv1V5f4CQrKlJhIq/hwtMmNXAGi79ypm/iRCj+bpw0taYM1x+7CQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUV9eXvCJbaBAw21wYVaQJlyD5A+gwHQYDVR0OBBYEFFfXl7wiW2gQMNtcGFWkCZcg+QPoMA0GCSqGSIb3DQEBCwUAA4IBAQCosg7Vof1TmGtM3Q2IWM6w5J6eJd++hcfsrF6nSovqMjc3poEdfLfuWJ0NSOYoKw8oksvAi/QkrpKU4bOFwEa2S0f76pdsqtwIXmDKgdoPxFORd+lKFp3vzc9QMMQYHTl+PzlvnN5rbsdBpwHrUVWW5qF7YYqJnpGVOqrWi3EplmaAOfcwNuIsL1d9et+zA1ubuPqt+W+N+4wORcQ6d2mnTaYlXgucJZI0/SNUvLOrCoudLYhc5QVRsGSAXAuttaWTS0vY7pOWZdl31G+URlrOwwVOjln0dxX9UNHw6BHIt7CctIvH3N4datvDbGTa/f8n7+9J4jx7GE8jIB5Bwv4Z\",\"attributes\":{\"enabled\":true,\"nbf\":1529958782,\"exp\":1561495382,\"created\":1529959382,\"updated\":1529959382,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959366,\"updated\":1529959366}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:41 GMT", + "date" : "Mon, 25 Jun 2018 20:43:22 GMT", "content-length" : "110", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -254,23 +263,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "77358ee0-6657-42b3-9e7f-14c9586c3a93", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8b3d944f-284c-40db-9172-a7cd25dd0326", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: createSelfSignedJavaPkcs12\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:51 GMT", + "date" : "Mon, 25 Jun 2018 20:43:35 GMT", "content-length" : "2615", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -280,23 +290,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6f864ffb-63d5-4d61-8824-7e960b5485c8", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12\",\"deletedDate\":1520463221,\"scheduledPurgeDate\":1528239221,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/1c6588c661d24e3d848ba93319a6f6fe\",\"x5t\":\"IKoebP20RgtgkQkdSeRqUws_yg8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQIfiEaYl4RGu5xXRsY2Jh8jANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODAzMDcyMjQzMjlaFw0xOTAzMDcyMjUzMjlaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvjkAw0glZCcH89SvCFI0FynyoPncAR4U7DUutIO0Lbe+oFTUYoxwln42WMKm+1Odiz04wyeUDi8qi9QZ7Fy2vLPD3BYwFVFLB3uUREOmaBX2QgKj/1hzNPrnYzkWA+V0o1wZSKwQtqpCUr4vtH/OWOgflKiLehWeRCtjW0Key4fmaazBjfIBRpbZR7dSi6ScoKjAlEXSqt78Ys83vpqmk7rtx7/QJ+SPB0jlKe+ssJHgNsg3Alrbs+i7u/Ie9I058jiBJno9BFSmpDP8qxC36enPOsmuXZUPQNXblUz/c/e1i/cqPiJUdZbz6IroppoJ22PMqheM7k2gUjUBzquTrwIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUKRAcWY2VQh5qWRSc1FDCFRE/MKwwHQYDVR0OBBYEFCkQHFmNlUIealkUnNRQwhURPzCsMA0GCSqGSIb3DQEBCwUAA4IBAQBBTS8wMxj3m5GC3u5E66Jw0Sw8M8X7u3vlHT9iA70bFggcKWybg17PJ9/vDKaCCDXLg0jp6D1oBE8bmzh0EIL2Qrs3vuiyWlvLtjDHg98gC5i1PjcnCnmBvFjWmZKJshFQzvJwQfmJJO7sQHrUxx8pvuJYzIJhsv8xu4WPM6EvZ9xUvooBNHw6fyUj4ldPwwupTWTbRMLatSy12h4cOUF5jI5z3Tzfm3nig3pQ/cDsIP3SxzQsKGJ8COy7vASEgm6Sz3Yi8Ca+qMk6UjEGHe3OSVr+3no8sqQzAEpa4iChe0RG4R9Tj5fSu1V6ZoJie3LcBIgiEr0syrpwRkBPQkU/\",\"attributes\":{\"enabled\":true,\"nbf\":1520462609,\"exp\":1551999209,\"created\":1520463209,\"updated\":1520463209,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1520463199,\"updated\":1520463199}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dce45f36-0d39-40e9-b984-e2be7ee74836", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12\",\"deletedDate\":1529959401,\"scheduledPurgeDate\":1537735401,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createSelfSignedJavaPkcs12/8f43b64ff07940198fa4474a201ae3b7\",\"x5t\":\"Om-VbbinEvfYKd16l9bSxFd3Im8\",\"cer\":\"MIIDRDCCAiygAwIBAgIQBvZ7Z9zkRNSBnvfas7VmDzANBgkqhkiG9w0BAQsFADAfMR0wGwYDVQQDExRTZWxmU2lnbmVkSmF2YVBrY3MxMjAeFw0xODA2MjUyMDMzMDJaFw0xOTA2MjUyMDQzMDJaMB8xHTAbBgNVBAMTFFNlbGZTaWduZWRKYXZhUGtjczEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq1LLFkXSIHuuAPVoiZuukUMl84fDFOJaUmdyUaVjI8GZXwBXiLHj3qIrNKtDUu4oPep1onvbfNDL3i7QPyqw3/iMwHDGxbJSl8Nw0xzqe+A1oliA+6cL2bxiVRpIUwJJGI3Eu0xU3ugjDmsiPqdMpIPuC6qLOhm9yCUk2gn9L3q4IaMSBT0H5fT3k4n6RztqUOtKdqHp0LDiK7OiVw73wcIwnPzeXInnWr706E45oZaSNbxiNWqYV60Xf1ePT3muXRBKr0SdnCdept5Z063s67FFBcnfPWZH0eqv1V5f4CQrKlJhIq/hwtMmNXAGi79ypm/iRCj+bpw0taYM1x+7CQIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUV9eXvCJbaBAw21wYVaQJlyD5A+gwHQYDVR0OBBYEFFfXl7wiW2gQMNtcGFWkCZcg+QPoMA0GCSqGSIb3DQEBCwUAA4IBAQCosg7Vof1TmGtM3Q2IWM6w5J6eJd++hcfsrF6nSovqMjc3poEdfLfuWJ0NSOYoKw8oksvAi/QkrpKU4bOFwEa2S0f76pdsqtwIXmDKgdoPxFORd+lKFp3vzc9QMMQYHTl+PzlvnN5rbsdBpwHrUVWW5qF7YYqJnpGVOqrWi3EplmaAOfcwNuIsL1d9et+zA1ubuPqt+W+N+4wORcQ6d2mnTaYlXgucJZI0/SNUvLOrCoudLYhc5QVRsGSAXAuttaWTS0vY7pOWZdl31G+URlrOwwVOjln0dxX9UNHw6BHIt7CctIvH3N4datvDbGTa/f8n7+9J4jx7GE8jIB5Bwv4Z\",\"attributes\":{\"enabled\":true,\"nbf\":1529958782,\"exp\":1561495382,\"created\":1529959382,\"updated\":1529959382,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=SelfSignedJavaPkcs12\",\"ekus\":[\"1.3.6.1.5.5.7.3.1\",\"1.3.6.1.5.5.7.3.2\"],\"key_usage\":[\"digitalSignature\",\"keyEncipherment\"],\"validity_months\":12,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"AutoRenew\"}}],\"issuer\":{\"name\":\"Self\"},\"attributes\":{\"enabled\":true,\"created\":1529959366,\"updated\":1529959366}},\"pending\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/pending\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/createSelfSignedJavaPkcs12/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:51 GMT", + "date" : "Mon, 25 Jun 2018 20:43:35 GMT", "content-length" : "102", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -306,22 +317,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "71f89de7-baf5-49d5-b31f-317bedd4c8f9", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b1f550d3-2404-4092-9eac-52205c202fe9", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: createSelfSignedJavaPkcs12\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/createSelfSignedJavaPkcs12?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:53:51 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:43:37 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -330,10 +342,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6835acd2-bd73-45d9-a2f7-e6bc54c07510", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8878602d-e3e7-46b0-b18f-1a5fb2bd038f", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/crudOperationsForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/crudOperationsForKeyOperationsTest.json index fb9e3f3..bc3b475 100644 --- a/azure-keyvault/target/test-classes/session-records/crudOperationsForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/crudOperationsForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:29 GMT", + "date" : "Mon, 25 Jun 2018 19:54:28 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7f475ed9-61e2-4a53-bb8d-7c48fab44317", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0c9207fd-514a-47d1-9894-80140e299e7b", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:30 GMT", + "date" : "Mon, 25 Jun 2018 19:54:29 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "67e855cf-4a5f-40e1-8fcb-599a8a351687", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0bc6e3d8-15ff-4941-a70b-6a3e9040c3ba", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:30 GMT", + "date" : "Mon, 25 Jun 2018 19:54:30 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e2eb5fdf-8f79-4999-b8f3-e06f5a259db9", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ef81adfe-83f4-4b7e-8859-9bcf5646efd7", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:30 GMT", + "date" : "Mon, 25 Jun 2018 19:54:35 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "471ddf04-ce1d-40dc-82d6-0363eccf8e14", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a7dfbf8a-b8d6-4e3b-92e3-9f3e8c340bfc", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:30 GMT", + "date" : "Mon, 25 Jun 2018 19:54:37 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4fb560bd-a85e-41eb-b8dd-539619371f94", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a8b2062c-5b0a-40ee-a58a-cae797201c73", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:30 GMT", + "date" : "Mon, 25 Jun 2018 19:54:38 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "33727007-65b0-4375-85ba-394d88d5dbef", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "98e8c977-afc4-4daa-b135-00108f9f3aed", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:31 GMT", + "date" : "Mon, 25 Jun 2018 19:54:39 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ddec24c1-c68c-4d37-ab15-852dd43aebf4", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539770,\"updated\":1520539770,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c2e130aa-4458-4779-ac94-16c7d326904f", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956470,\"updated\":1529956470,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:31 GMT", + "date" : "Mon, 25 Jun 2018 19:54:40 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "698eb24f-675b-4863-bb78-956195d0f79a", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"exp\":2527358971,\"created\":1520539770,\"updated\":1520539771,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "98cf454e-0705-48b5-ba59-6ff33678414a", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"exp\":2527361680,\"created\":1529956470,\"updated\":1529956480,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:31 GMT", + "date" : "Mon, 25 Jun 2018 19:54:42 GMT", "content-length" : "676", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "93282bb5-9116-4dfc-a810-eb6d823ad5e4", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949435772,\"exp\":2527358971,\"created\":1520539770,\"updated\":1520539772,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bafdd1a6-b3ae-4430-8c9c-cc578ebfca42", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949438480,\"exp\":2527361680,\"created\":1529956470,\"updated\":1529956483,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:31 GMT", + "date" : "Mon, 25 Jun 2018 19:54:46 GMT", "content-length" : "815", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "29a65ff7-aade-4def-aaa6-3624b6c1c5f9", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539772,\"scheduledPurgeDate\":1528315772,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949435772,\"exp\":2527358971,\"created\":1520539770,\"updated\":1520539772,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b356c4e8-eee3-41c7-bbe2-58ea63893433", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956485,\"scheduledPurgeDate\":1537732485,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949438480,\"exp\":2527361680,\"created\":1529956470,\"updated\":1529956483,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:32 GMT", + "date" : "Mon, 25 Jun 2018 19:54:47 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c2a2df8e-33dd-42eb-ad64-411b922154a6", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ad64b9cc-f622-4343-ad04-ff6c24bc614d", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:42 GMT", + "date" : "Mon, 25 Jun 2018 19:54:59 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,23 +316,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "2e1d7b49-cf90-43d3-9f93-7e0ebf3a0b92", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "93fa29e6-e858-4096-aac7-8c2fce5ac220", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:53 GMT", + "date" : "Mon, 25 Jun 2018 19:55:12 GMT", "content-length" : "815", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -331,23 +343,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ab1520a7-97c9-4c8f-ba14-dea6d50653b6", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539772,\"scheduledPurgeDate\":1528315772,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/df32e26870ae4407922553db2b130813\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"wq0pvT-OhseCosXJMJIY2ti6OtRw-vX-p3GAxeTISC4Mnj8uuI7xoxsbdZgObBa3HaSHXgCZFB8KBOVXFfL92vYXpYccCsMTEl4_oZYnChdrvIEQ1YjY6xL6b2c0zYbQ9c5pLipBrex8F7omtIKm77m5DKVCxtnriX2wqkeRJtjiqgGDj6U6raNrNCBn8pL62koDtWBH7qxCA5y6V4zemkHcnH-tAD-I6rqhhale_cYxoSuxp0esp9-h3Q4mE8l65TfRquIqOnk2hY-rqlMDCQypb60AkBNHET21aQ8gNtC_ZqA8h_5Stwvyu8bZ1qtWG-E0hCJ2cDhfBT2nFPJ4Nw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949435772,\"exp\":2527358971,\"created\":1520539770,\"updated\":1520539772,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "38dea960-55c0-4456-80de-44da49f31229", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956485,\"scheduledPurgeDate\":1537732485,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/782dc12fba224594867fa86b794abe5b\",\"kty\":\"RSA\",\"key_ops\":[\"sign\",\"verify\"],\"n\":\"1A35EKPtATdtykmf5w_NcQ3Il9NOq7ZUz8YTIBFEXw_w6SdJsVdIzOSQb8v7SaXUJayQmsrZVtDm0qPfOmjsUu7nbHk0I9aYZQpFGhfIWI7N6PvshgM7BFhyptACSwA6-cxVBu8JGZwwDD3jbbgiuPF7O0RqKQAC_3oa5X6axjAbczvxvWgEbamZ5cUGcafJdzK-ya1MRRerA1ANZ6TK8AlsRXkAQs3PT9eENCJA8ok5mMAPaF4KX5FOsJ55h-deNuqGSa169TD4KBOpV9zGT_uHCb7dfH9dThOQjFjt0GcYJeF4dsojr_gg_9IQUTpBqAmqUCjABMQkDZEqegUbLQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":949438480,\"exp\":2527361680,\"created\":1529956470,\"updated\":1529956483,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:53 GMT", + "date" : "Mon, 25 Jun 2018 19:55:13 GMT", "content-length" : "67", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -357,22 +370,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9326b8fd-009e-4270-a330-493e93a63be2", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d0805287-e6dd-4628-b356-cbf9d4b9dd58", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Key not found: javaKey\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:53 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:55:15 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -381,10 +395,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "094c067b-2af4-494c-9db1-b1f9af633792", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "01ffed22-c060-4446-a45e-f107389c0635", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/crudOperationsForSecretOperationsTest.json b/azure-keyvault/target/test-classes/session-records/crudOperationsForSecretOperationsTest.json index 8f957f4..3b75b96 100644 --- a/azure-keyvault/target/test-classes/session-records/crudOperationsForSecretOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/crudOperationsForSecretOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:57 GMT", + "date" : "Mon, 25 Jun 2018 20:06:58 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6709ea71-0f7c-484c-ab7b-2745ab443695", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "01ff418a-dc4d-46a0-8142-61b87a348c46", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:57 GMT", + "date" : "Mon, 25 Jun 2018 20:06:59 GMT", "content-length" : "275", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7239c5f1-7383-44f9-92c4-2c58280e6197", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"created\":1520540277,\"updated\":1520540277,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "95d0c9c8-a6e2-40c6-9114-299dbda17343", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"created\":1529957220,\"updated\":1529957220,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:57 GMT", + "date" : "Mon, 25 Jun 2018 20:07:01 GMT", "content-length" : "275", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5596eb6c-fa98-40a3-98e0-c9936a8dcbd9", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"created\":1520540277,\"updated\":1520540277,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "12057c25-1fb9-456f-bcb3-dfa18458df1d", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"created\":1529957220,\"updated\":1529957220,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:58 GMT", + "date" : "Mon, 25 Jun 2018 20:07:02 GMT", "content-length" : "275", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f70e46d7-6da7-4b58-bbaa-4cf78d142c30", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"created\":1520540277,\"updated\":1520540277,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "93a776b7-6eaa-4a76-9b29-286dce04543c", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"created\":1529957220,\"updated\":1529957220,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:58 GMT", + "date" : "Mon, 25 Jun 2018 20:07:02 GMT", "content-length" : "275", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f02a99c3-03aa-4237-a76f-2bb0786a8bef", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"created\":1520540277,\"updated\":1520540277,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "90057129-007f-4300-8f0c-79554069843e", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"created\":1529957220,\"updated\":1529957220,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:58 GMT", + "date" : "Mon, 25 Jun 2018 20:07:03 GMT", "content-length" : "275", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "67de804d-808f-488e-aac6-560e9c4ee444", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"created\":1520540277,\"updated\":1520540277,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1fab8b49-3f0e-4f0b-b3c7-83327a680d0d", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"created\":1529957220,\"updated\":1529957220,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:58 GMT", + "date" : "Mon, 25 Jun 2018 20:07:05 GMT", "content-length" : "290", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d74ec00b-b07d-476a-a4c2-3ff2faf5106f", - "Body" : "{\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"exp\":2527359478,\"created\":1520540277,\"updated\":1520540278,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7b869764-4052-4926-b64c-55a8867ef498", + "Body" : "{\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"exp\":2527362423,\"created\":1529957220,\"updated\":1529957225,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:58 GMT", + "date" : "Mon, 25 Jun 2018 20:07:06 GMT", "content-length" : "307", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "aa993a21-fe29-455d-9cc7-bc0875881c03", - "Body" : "{\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"nbf\":949436278,\"exp\":2527359478,\"created\":1520540277,\"updated\":1520540279,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6b3f77cb-332b-475b-8e4c-a1386992b5c1", + "Body" : "{\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"nbf\":949439225,\"exp\":2527362423,\"created\":1529957220,\"updated\":1529957226,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:59 GMT", + "date" : "Mon, 25 Jun 2018 20:07:08 GMT", "content-length" : "452", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,49 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cbbe409e-b798-4d31-ae41-c09b20e3a9c5", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret\",\"deletedDate\":1520540279,\"scheduledPurgeDate\":1528316279,\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"nbf\":949436278,\"exp\":2527359478,\"created\":1520540277,\"updated\":1520540279,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c2f3e9da-32df-4471-9987-bf39852a6107", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret\",\"deletedDate\":1529957228,\"scheduledPurgeDate\":1537733228,\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"nbf\":949439225,\"exp\":2527362423,\"created\":1529957220,\"updated\":1529957226,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:59 GMT", - "content-length" : "84", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c801888e-a91c-4e10-a37d-bc1a7b649a68", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: crudSecret\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:09 GMT", + "date" : "Mon, 25 Jun 2018 20:07:14 GMT", "content-length" : "452", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "93957226-6b81-46cb-afbd-83964a94415e", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret\",\"deletedDate\":1520540279,\"scheduledPurgeDate\":1528316279,\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/f2a2ab29780f4b79a1cd7553d6493acd\",\"attributes\":{\"enabled\":true,\"nbf\":949436278,\"exp\":2527359478,\"created\":1520540277,\"updated\":1520540279,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6a23c9e5-9053-42f4-a39e-dc7f25d51357", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret\",\"deletedDate\":1529957228,\"scheduledPurgeDate\":1537733228,\"contentType\":\"application/html\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/323c8db683d942028d0aa1221d268d43\",\"attributes\":{\"enabled\":true,\"nbf\":949439225,\"exp\":2527362423,\"created\":1529957220,\"updated\":1529957226,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"rex\":\"woof\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/crudSecret/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:09 GMT", + "date" : "Mon, 25 Jun 2018 20:07:15 GMT", "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,22 +289,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "06454a65-b4a4-4a2f-a178-6693967ed89b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "709c0f0e-2da9-46c9-bf93-0f6034cf5523", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Secret not found: crudSecret\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/crudSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:10 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:07:16 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -329,10 +314,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d9f2ee3c-5950-4c73-a713-ff557a35db30", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1e80aa35-92f7-4f72-81cc-a934ac804546", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/disabledSecretGetForSecretOperationsTest.json b/azure-keyvault/target/test-classes/session-records/disabledSecretGetForSecretOperationsTest.json index 3dc5778..7073348 100644 --- a/azure-keyvault/target/test-classes/session-records/disabledSecretGetForSecretOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/disabledSecretGetForSecretOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:11 GMT", + "date" : "Mon, 25 Jun 2018 20:07:21 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "761d48df-ee97-44cd-9ff5-56998e3d7acc", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "931a3fce-0ebb-4a78-9cfd-b22b4b599a5e", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:11 GMT", + "date" : "Mon, 25 Jun 2018 20:07:23 GMT", "content-length" : "280", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3bfc735c-8072-4c3b-82f2-dc3f57a26312", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/367b7ed4894a4f51b8cc8631a187ab8e\",\"attributes\":{\"enabled\":false,\"created\":1520540292,\"updated\":1520540292,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1667161f-06cc-47b8-9255-779534cb077f", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/35ae81e2550e44bc85ae7114c3259401\",\"attributes\":{\"enabled\":false,\"created\":1529957243,\"updated\":1529957243,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/367b7ed4894a4f51b8cc8631a187ab8e?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/35ae81e2550e44bc85ae7114c3259401?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:11 GMT", + "date" : "Mon, 25 Jun 2018 20:07:24 GMT", "content-length" : "132", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "177b2a1b-974b-4a85-9456-f63e7dd6c702", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5ed25588-d1dc-49e9-96d3-66b407e9ec44", "Body" : "{\"error\":{\"code\":\"Forbidden\",\"message\":\"Operation get is not allowed on a disabled secret.\",\"innererror\":{\"code\":\"SecretDisabled\"}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:12 GMT", + "date" : "Mon, 25 Jun 2018 20:07:26 GMT", "content-length" : "373", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,22 +100,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a387b1e8-e50c-46f7-814a-1feca67ddc75", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/disabledsecret\",\"deletedDate\":1520540292,\"scheduledPurgeDate\":1528316292,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/367b7ed4894a4f51b8cc8631a187ab8e\",\"attributes\":{\"enabled\":false,\"created\":1520540292,\"updated\":1520540292,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "47845f04-ded9-473d-9ca0-b2cb067b018b", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/disabledsecret\",\"deletedDate\":1529957247,\"scheduledPurgeDate\":1537733247,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/disabledsecret/35ae81e2550e44bc85ae7114c3259401\",\"attributes\":{\"enabled\":false,\"created\":1529957243,\"updated\":1529957243,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/disabledsecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/disabledsecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:53 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:08:09 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -121,10 +125,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d5cbe73f-b02a-4ccd-b993-e281abf0d04d", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "df0f2b59-d08e-4de6-92dc-e1551a03df64", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/encryptDecryptOperationsForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/encryptDecryptOperationsForKeyOperationsTest.json index 97fac51..7425d89 100644 --- a/azure-keyvault/target/test-classes/session-records/encryptDecryptOperationsForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/encryptDecryptOperationsForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:28 GMT", + "date" : "Mon, 25 Jun 2018 19:44:59 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e1d6bcb4-b35e-4bde-a7af-13f14bb075a6", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4531c61d-c14c-40ab-ab7c-abccd229122a", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:28 GMT", + "date" : "Mon, 25 Jun 2018 19:45:01 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b8bf854d-6c7c-4a64-9331-c04b3060ff53", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539409,\"updated\":1520539409,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c4ccbfa0-5997-4c47-8540-f8e0911746fd", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955901,\"updated\":1529955901,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//encrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//encrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:29 GMT", + "date" : "Mon, 25 Jun 2018 19:45:03 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "910bca76-68f2-4b71-8902-0a415ec3a7df", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"value\":\"xIonIVHUEETNSRds2NmYbGovGfJ1JImkkEGCyBFWTyBR7HT98Nulpv3g-ffRqfL2z2WCWYrsI2Akr4-nLyehZanKjykxYoQIecElSAmu213pSvjfBr98Gb9YnM4whFD4UHBroJv2hIohfy7JDq6dUi-NyK8aUpEcw7AaMGwit2ER3zB4rCF2dpg51K0scLLB_VIB2KTNn80XyYpnMAYTPF8ZSnEY5xciujEvD77Ns-Ke0wb2ZcPv9nyu2chcrXqvsuCcaGJ1-RSDHp6jvy3KIdsGh52KmPuRwnEVMLG9XjvklV3v2iCWkJrzY31ClCq3_RMLqnFSvwkAULkB3d3XlQ\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e186c997-305b-44f3-a9ef-48af40c5d99e", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"value\":\"G8d2JDBD_lCgTcjwYQfjqNxTDBO1IGfFo8M-lNyAJzls43ia6bK24xl_4-Rk0EB5Qs_bT7TCflSwCJ4dNbA9dDjmG4yEQ9PuWPR-QqvM9vHYrHHbarro1wePWmYufeJ0caof2vr7BdQxadVqWsscjpYZvTabuyeP0COd50RlPn8VVZbpHlqryHvVlKyA-tgqZVAwuDwI7EGIu6LcKGBmHbZc3oN7QKRNc1eUvNQzhM8BcuelLQkqS5H4AnW9iDrW7nL4mHwEtvV9xxJoYXRq6LFGpConEDrfKIJDgwcKpk_RTV_YU3wQqIcUpR3Xx7HzH1MROfZoSNmqZtFsYKLpdg\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//decrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//decrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:29 GMT", + "date" : "Mon, 25 Jun 2018 19:45:07 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c7cd050c-7e6e-4be6-8c34-ac492c7d1002", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0cd57441-afcc-4f01-8431-05c413420403", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b/encrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45/encrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:29 GMT", + "date" : "Mon, 25 Jun 2018 19:45:09 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "693a7ad8-60ba-4650-927e-eaa6e31c87f4", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"value\":\"OxYv-YsosXl5iOQ_qE1Zn-JKwEFAPBDR7gDhFusLmCDYdJmgQ0Ziik5A3YJIE9Dkm5LU2WdpZHf4ANFuKkyxMcUoAlK_9OVzq8wchwRdlVkbRFWjkypbslmbCYclzQevaoqcd8P8bP7kQa7vVMJLZMfcr4r0Kj2SFUoMGjqtpj53eT2jug04UHRyxZm5lTPEaf9r1tt1hspP7iun_kfagyBCToD0xdOLF3uYQRgQGJXdz4q5gzqlJt7OiynEcy4HFf7CDsGzJBZKXHJo7IUTjgKH5U70d9Yv8tLfhunlps0CjGvyurvVbq6LW1-pcFxlVSw_NdAMTiX2x5pjmf-MZw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3aa5cf94-ccaa-4439-b7cf-cd4ed02b16b2", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"value\":\"in5vHTWLaAyZBXLCy0Ng4Z4qShtDunVhhsWM0BhMsOGwFHgabCC8VoPEINwIvVymPaj0CZZ05lAGcxlugNvgZvyWo8hMwB87NlC916bThVy5kS85g4-pSQEmjayEP1j2LrKTv49UgzrGsTWrBWY6HTSINhWp9wcoGHi8Xx9DMqDErpdNj5KrDnlzFiMzYoiUbfcTqplaMgtfFOyzZl-UCkbJMszY03dQgv6ga9zSdA3mRMZKLtmQ7ugw-mydjPdWCg_hjEhMjx8jkuGKf2EE333gCqh37nJIMNMYNt0cpTJc-WKwH16R0CF9DTzs_swnDjXfDIUnt5xgXvgah2NWgA\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b/decrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45/decrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:29 GMT", + "date" : "Mon, 25 Jun 2018 19:45:12 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,11 +154,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f9cc3ba4-21ee-4919-a4b1-27f8b5621e45", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "afe31985-77bf-4d53-85ec-159b4c6182ca", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/importCertificatePkcs12ForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/importCertificatePkcs12ForCertificateOperationsTest.json index d910e78..d19ea3c 100644 --- a/azure-keyvault/target/test-classes/session-records/importCertificatePkcs12ForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/importCertificatePkcs12ForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:25 GMT", + "date" : "Mon, 25 Jun 2018 20:35:38 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "30982546-8bc4-4d72-8632-e539bf768db3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e9284d38-a33b-4357-bd98-fcf7606f74ee", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:27 GMT", + "date" : "Mon, 25 Jun 2018 20:35:40 GMT", "content-length" : "1856", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fd083d6c-a51e-4dc3-bead-9f1720d475f2", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520463267,\"updated\":1520463267,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520463267,\"updated\":1520463267}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "262438e8-b233-4071-9a87-6eafac1db1dc", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529958940,\"updated\":1529958940,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529958940,\"updated\":1529958940}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:27 GMT", + "date" : "Mon, 25 Jun 2018 20:35:44 GMT", "content-length" : "3570", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a648ade9-1400-435e-878f-b7da8b0adf8e", - "Body" : "{\"value\":\"MIIJKAIBAzCCCOgGCSqGSIb3DQEHAaCCCNkEggjVMIII0TCCBfoGCSqGSIb3DQEHAaCCBesEggXnMIIF4zCCBd8GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAg3eMyW/zbYRAICB9AEggTYn8OTYFHouytcWFUVOqMg72rEMNmAlBgj1dSSvyxxhJFo5GYxfp0kGAADWl4WIg4pCNzLBWhU7nEkICgwX4sszFlI97S+dtkg3NBv7V4nD9Kx5SUa2WMQ0gjgM/GrXYLJFp+b+VuSOgIQYDH4mwMOKqWElPUtPfRg3Q92Y5qrI6fqxbCukJMTfZdTQ4lmDN0uWhQOswndRLtmPOJgwVFcAaupicRvBAbqy38i4oxgVboHuB8xQXsQQoFW9keI4TAkH2vA7mBx/yIOBPNtH6uhDlE2gQFk8x9JPgJkWNRtTz6J8tMFPfuwO18dmZlKxwmRjAUy/K2rMKezyFnTfujSFacFXCm00LFinL6QLSxU+Ncjh1Gho2dPlS2UujP5tlscfHkNPv1oW6sh38wEFhNW7BDYPXJQ4cw4CM1Ee6sSB0/LUDBY+pp0eCROpdZDLhds6+B9sjphhO17Ry3q9+xiyFniB2chKFRyv6wqyRZyw3hPSvj5z848tqmBL73nMjhPOY7Aq3qYd36lhg6qTrZWwlefjZ2dwVm0zhHHVm1QipecZedlyISrVxjlXyKsYezAFZtsixmgvkjX5F7KcLlcjvUQYWBeph6yqiFGiD7/0bnndf8FOmSNDuiM7aD8xvlGLqYEI82DyFPMjVsLGVVGh8LtxBNwtLgMlfcX5/nAupA1nUgDB0uAW/mywxCv5IpJxYwySWxh9A1DI2eGJJvbDnE5LhFTebsmPYutzCfine84YBSSIrm98oSQxT8LpdtzqJqbkrsKJhVa5bfba96TqHJmW+r1LP06iyXjxFNy+MLa2QfKgS8nhKQWuUNosgCTUu8juhyDPxhnX7vwmPu4Yb3kkb2z3skNbNyufxyl0YAjMnabrnGFj4N8kEORSnpQXK5y1Afe3I/nMk3v8NCWNjT6J3FOyXibbQ+wqzuoRQx5fLmiwupNAvoTXVxWA8hpHSUlDBRvqHGJQIayj2SUmMlyU3CjczZ7hSU5oWoZs0tbylU7JMOeb5GqQfzgW7Drys1r4JEd4MW43yz0kr5IKQX+nGaGnSTXaElmByb10hFFLyahgoylCCruVSlem57BNziD953RhYKl20cvkja2huLcZ/l6F/fHt0ndq5UPKJff7mt+fwcyZTpN+7m0hVLcVgMM6igr4fKEddF1k5HkcB5od7ZM+8qVDIYJ4LruglaGoItOLthXT+2tutfrPCOsE3XZ0wzybZdCZZj5eXT/z30gV59dbGS+iUDl1H4U2u18kj8U3sKTgX9pD/ng272LdMqjTIqs9wg67w3BRnst+KaeJ7IH2dbb9KsQ4/WGOPsbljysAxAu42fycG/YWEg3ZYkUxpZPdFLopxhlt3dXuZwX6blJVamJb1ecxSXCDC91iJGByj//SVUA7w8lZ9TaMjis9j6gmbM4c+51lQReswHcZZA/g7xGb6lHDppJU/rurpWwMphMIsuSo7ntJzoiVZdFPOQkoXV/Cthykm8pju1T1o6MKsTCO/1g9PpM4SiDSTGMIBzlyqCXXyjtFC2Euma9AayvW6fSXpqnNUhGPZX4KoiHO70lcYxs6xE5ZFlCol1ydqI4H0In2RHW9Y1725V3G5QRhM7JjuZoii4fPpUBweyTIrFIKLe8n0PCMZXp927G5KkgmjGBzTATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECAmasK0fOVD0AgIH0ICCAohVzJIuLFqe/lsNG7+KFz60/2weNVxReFH7q8CgtNy8+rImvEF1A7wg4RU34jhOf9hDWCcorqLgq9/P4+P3+tRQqphybLX3JNK70CiRWe40FiasSxIdt949Z+61zGXVH8+gX9bPIfG6wAYCup7LzcIG2ITlbtIfJT66AFe3F1uHlo3GMkDba+j9NhJ/QI9sX0f83XIIyGdG31xHOAw2XFmprTYNyBo+ACLWunA6sm5mGjNtPggmMl3DxgXLFwj3GeHZEZTMYcLAAz7nfxYZwbhwG7/N6Kr4q0GYr+Gsos7uXxa0O5Zc0oHIfLczEQtu4EvxWMNsHhhGfS8ZoxYzH6RnFeQDMmxiILUiGObbQEpSbyFMuWQoJGVlgd8BbldmL9W7ks3dbaUo7Uz8fP+KImf0cYMrknt8UX1z4AC1lZvH3+uRl28dnTCHrUSRIPAUptN86k+lyw5fHJaIh/8+rzatUd7QfxqHRBkuRSk4DW+/fAOA/UrcBj0q0A45FWE5PoDk721G4tyItI13X9oLd6EzncacqbW4ZuXU0/++kkgUsdFMwdeQYzIU/noK62i0RlFUJG1fBbXn438WcExkYiNAhKEH1qDbsX91FTAty+Aa/iAMT7jYuiyYjys3khAD9r4eCax1AJ4T1G4qUvXSV4BvpBrvMv0d8b3seHC8fQWEvY2e1lCgql+qD0bnzSb/m/2dsg2SqZ5cKkmV2ylo6yY8YDnIYsnrU5bMRDPekREox18Gz/YIyUBPyaJA+8UGiCixRcBqnbn2kg0BNOzHpB+/KuByunXQ+XGKbz3KFGHrJlbnM55g7rojPr5k3XMC7cWhMAW4RKDSaGieuKwNGooAt5YieFUAIwMwNzAfMAcGBSsOAwIaBBSfnmTrdtSVuWTxyowU7dCFo70gZAQURtlJOSkd15A2URhfRSkzRe5032M=\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520463267,\"updated\":1520463267,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9fcb8408-46bf-4bc8-b3e9-5f707d155fdd", + "Body" : "{\"value\":\"MIIJKAIBAzCCCOgGCSqGSIb3DQEHAaCCCNkEggjVMIII0TCCBfoGCSqGSIb3DQEHAaCCBesEggXnMIIF4zCCBd8GCyqGSIb3DQEMCgECoIIE/jCCBPowHAYKKoZIhvcNAQwBAzAOBAi1hm/i/Cl2sAICB9AEggTY5xWw5bqf9JqWWE/lpv4JTDdlW8PPLPQz/VXQlz0HRoX1DZMtBQUJxkL3sjir0RHZWr5mQ8rRj5UICIX2pNWl8g50nl7iNXyV28imd7EhYNcPzugkgp9QKFyVYN9OT5I94LD5ZkMNmRpUAd5109/ujxXmAX64Yof4NCwROzGraJsjIUy+ClYsAt4xmsazNWu3fmMXLn/rjoV3xk4WkW8SIZYHbVmgS0Sd7kQj03ENafv3tCTGeKopyaQBOSxvSMbjNT1rwkTEKdP2YWe7hAAO0Gv56LlWSBQt4tGCoVLDTU6pLEZ2+o7o5n9ktIa+WLNjlxwB/CnNvb0OSs/ZKnBiRLXo5S7KmI6QD3au8hUaEDM6WliJ8hIJed1xyhR8bS8CzosrrJpusyhCVTyLeV7iBzBUoEAkh3FQNYyRWd+pbcj3E+emsaPm9J7fyAIXwZZBkqfonDvVGslFePrJiIE+xLmumUDBJbHaq7LWbc1E8Q69TfyROJvNwgaYzTDxv7ZV9OJgW04mfbOJowC+Nwqz1vNQeyIwX+n9s12HpJpQEDglGKo91bgBdk+dwZnzd5ejs5lpB5AcopCuYr1L7fD16X4L161h95mo21/oR2W04Um84E/EBqbiAr/j7KCarD106aRIFY6xl1MGDMOF5aa8qDImYTXHKurj9fZX+HgTMV49wGv9QXdsOIViXIDxKncyHnxvh7lfczylvPJFuY/WCF90HVZQUioVsIVXDTJLfkEuWpjPRSQqLJq4ldfzmuWeGkf47XQNbBjOVtjB4Ige21rZ/ni+lvn3fVYMgqpe3HrGbzLGQAk9xSu72olwBBfs3O5WzD4RsIeNKvxqGFVodsUKSdc8rOtNU/ALXMIo86p4MfCCZ1X9ezV4ChS85h5tTpxIEXoBI1TZwnRLLKpXarwIJGgbxNu0paepGQl+YaLoH/FdFg4L2wAaDskMf+mepXQwsmp/5pL5+78eehus2TyGvsXeMK4ndCnRfzT3XQLNbXD5GcYpWB8IeMvr0cd8WXvx7ka5I31d9hrEtbR3cgwhgHKo5pA8DfjP0gO3HGK0MEWkF+bC62MmD6CNnQW0wdyKP4cnXZfX1wwbFebibNL40gwALke+DwUCen1/PGBX/4cx2oGZMu6jEmDvztKAtxSGGVL50vb1TomPJ9ouq6WQpdHYnTFjlh0n8E2Vca+ad5E9KAXtD/O/UZyjFTCP+f/ofIaOU0hLZYeIoQEJmu5XMXvLDPy3rK2ZSyUrWNl42Zquij6Bx7PW3dcYhZ15iBWBd9waqud/6S4aKPQ7CiX1lTlR5vvc7UxrdH88eaXbSpmWPlS4cg1wWDzyf7bJxEdJ7qkwFmY0kz5O4pQ8W3YkQ6QIQ6kH0yPPXHbS7TjA9rJJJMhOaBVAw7T0qdXG1oBfCswvZn5iKSwMAWnUkJKmmyXacBxrX0AuVso7icc372qMITjrH+h9nkVALMeW+eIlcsM2wutb806bJxOx9jUNm2wcIcP/OlqPIRxUvUCtysAA2iTKe+BJvOtT/JMB9R+sKHp2cjWpFoVu1esI2+o1npRLRB5ysnDLIfr9VCFllDmQNcdb7FnoBqSS49NB3z6DKG3mCYHsNlp+B98W4OOclqCJ5lNvO7zu7QpZs9/t80y/++vllDGBzTATBgkqhkiG9w0BCRUxBgQEAQAAADBXBgkqhkiG9w0BCRQxSh5IAGEAOAAwAGQAZgBmADgANgAtAGUAOQA2AGUALQA0ADIAMgA0AC0AYQBhADEAMQAtAGIAZAAxADkANABkADUAYQA2AGIANwA3MF0GCSsGAQQBgjcRATFQHk4ATQBpAGMAcgBvAHMAbwBmAHQAIABTAHQAcgBvAG4AZwAgAEMAcgB5AHAAdABvAGcAcgBhAHAAaABpAGMAIABQAHIAbwB2AGkAZABlAHIwggLPBgkqhkiG9w0BBwagggLAMIICvAIBADCCArUGCSqGSIb3DQEHATAcBgoqhkiG9w0BDAEGMA4ECBuGktyvzWetAgIH0ICCAoiev4rLUr7Nh/LVB+KtlImXa4okxncvGrU/KublgWqKepzFRVKERJZJFkMPQtsAgkGDvafX8qPQhEekbUENoFQgZNruaSa6xgWDqnb6aA5xtKbkj5OPyL/oyov0x6+mgpgl4imBcyj+4vwoBJnb+CF1858rQcQqSp7jh9WyJN90xjb1Kx7k4hFR5f065jfkEZLGXOHfTPknqlrF/PUyrmUo0lMJN5O7V2TaFZT8586FP4Qj8B8JF/zfxJTuk0kMhgvqsScsvFY8Xc7SDkEpJDJgWSbnnzbl+ZJtWeTJ/+4739qETRMKqi91Uhur0+DkEJUn9vF20cCbO7P8mHC2aFboaYWtdHEof9DLxi0/lOmc9ClP57xRKcTWl7h521NPiVPx4aS8UUW9Wtn3NjHqaXLvnmLTQYuTw0KSzMSiSytjEXlf+5CBKLRwQpIeO7myfRGIXCClSB/epfwHqjaQhN0LNKZ5VQ51UejOSAycNcq9SB70EB8ylPibeevbPqOgmROsY4gQvJg/KTHND57giZDavlYO+fDkzqHyFLZTvKcPNH31AwRJlmn47zRF3mGhpwKToiRGqs6HlxTsFJBAZ914pjSR/VIZopbGFI59HvN0jzutD4de8U4NJ8ApIVbzwl7e/PhqyW/e5+nipd6biIWkmkELR6ucBEiGPsIcttV0wHcHRMpDpRxE3DMClGPtd7d76wnRZlMJwfP5ymcIP63O6i9SNlAgjlMSPYLzfo35Os+ErTbMVdbjs94rR7j9qvJxxbtbzWSpcrBXfGPlXGoBBD+pCo4dlkAsXJiK3DgYKSTbU+D8AXDWIEB+Nmhsi/edDSRHGTR8EpSx67IrnBIUfXfFDj0QzqgwNzAfMAcGBSsOAwIaBBSI0iufeieEHxWcozGwZD5E+3FZlAQUCeKoCYO8VQUNFUHLW9BofkQ6srQ=\",\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529958940,\"updated\":1529958940,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/816c0d97aa45484d83f50ec916028274\"}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:28 GMT", + "date" : "Mon, 25 Jun 2018 20:35:46 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "93a9620e-b22f-4018-aed9-7fdeb7fce58c", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs\",\"deletedDate\":1520463268,\"scheduledPurgeDate\":1528239268,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520463267,\"updated\":1520463267,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520463267,\"updated\":1520463267}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "442e0c9d-ed5d-4f12-a84f-bef47fdd1647", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs\",\"deletedDate\":1529958946,\"scheduledPurgeDate\":1537734946,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529958940,\"updated\":1529958940,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529958940,\"updated\":1529958940}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:28 GMT", + "date" : "Mon, 25 Jun 2018 20:35:46 GMT", "content-length" : "98", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "58b2568f-ee55-454d-91e0-82a4b61054e6", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7a3f539a-414d-4d51-a4ba-61d32598bbfc", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: importCertPkcs\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:38 GMT", + "date" : "Mon, 25 Jun 2018 20:35:57 GMT", + "content-length" : "98", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4f88aff1-8f31-4d84-a71d-9f67ed623451", + "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: importCertPkcs\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 20:36:09 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f702d952-abd2-4375-a9fe-ee678b874f10", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs\",\"deletedDate\":1520463268,\"scheduledPurgeDate\":1528239268,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/d071ce1af07f487bb5fda2c12b1d5c8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520463267,\"updated\":1520463267,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520463267,\"updated\":1520463267}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "76e0053a-3fe1-4949-846f-de53bd2dc005", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs\",\"deletedDate\":1529958946,\"scheduledPurgeDate\":1537734946,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/importCertPkcs/816c0d97aa45484d83f50ec916028274\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529958940,\"updated\":1529958940,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529958940,\"updated\":1529958940}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/importCertPkcs/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:38 GMT", + "date" : "Mon, 25 Jun 2018 20:36:10 GMT", "content-length" : "90", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,22 +208,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0d37c65d-a597-4063-b9f7-9fe58dc20d12", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "866c10f5-ae60-4365-8e1c-d115831aee42", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Certificate not found: importCertPkcs\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/importCertPkcs?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 22:54:39 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:36:14 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -199,10 +233,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1a9a81a4-ab2e-41c4-8960-01350b5af78b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "62bbe322-5417-45dd-af0f-7c115df06db7", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/importKeyOperationForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/importKeyOperationForKeyOperationsTest.json index ede63a3..3c6c8c2 100644 --- a/azure-keyvault/target/test-classes/session-records/importKeyOperationForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/importKeyOperationForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:27 GMT", + "date" : "Mon, 25 Jun 2018 19:54:16 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "730efcf5-e970-434d-ab8c-dafa4b6eb95f", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cb3bb1b1-92e8-4440-bcad-f47f3a9c0e75", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:27 GMT", + "date" : "Mon, 25 Jun 2018 19:54:17 GMT", "content-length" : "680", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "03e97be0-30f9-49dc-9c39-2225d776e082", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/aab66593a3f540a4b8bf24d9d8371274\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":947362167,\"exp\":2525285367,\"created\":1520539767,\"updated\":1520539767,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "32aa2bdb-402b-44a9-8334-dc649bdbd8ab", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/dc38d2c3e5874dbd8a9799181034fc8c\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":948833656,\"exp\":2526756856,\"created\":1529956457,\"updated\":1529956457,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/aab66593a3f540a4b8bf24d9d8371274/encrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/dc38d2c3e5874dbd8a9799181034fc8c/encrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:27 GMT", + "date" : "Mon, 25 Jun 2018 19:54:18 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "15e83633-a896-4972-9ec5-791c1dfa2f74", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/aab66593a3f540a4b8bf24d9d8371274\",\"value\":\"FBBgJ3luJYUY9xhNvB9xvux_4BITDXXbkERaDS18C2CnAW2dIJu2vu5lAuc2vq0c6_Q-qgldKQaXW0rjET0il4mW0aIzQX8YU8zy5mUuo3U0ed6V5QGlQB3WmDf7oBS2g0MZhKsZj6RlH-iBWz5_-QY25AgDItbpNks5JvAtQ8SStzbAfJuH1sLvglTug8As5RzPDOBQKkY2HLOZU9JdfNbWOet7p8Pi4de0D-Jndn7T3uJuIAaOxOfbFiAhpRMx0lJpdQQG7BRIpO92Dyv5OVPSF6oqZCGDyKFLUL24Do3prknXd9SgQihGFL-b0V7q_NeP6wlcI3cOvN4u-oSP9A\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a42b0abe-7614-4ad4-bb33-3bf0120baa89", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/dc38d2c3e5874dbd8a9799181034fc8c\",\"value\":\"qjlvOsKO5yWWlJFvl5y9d0RtNJcObzDLc-VRf8dIYT1Dp3vlAjytvXNTLyeoF6GXLdNFZb8nL5ut28NCUTNmr8fZlTlcz5Wuwp13V_57wefsebOs4U1Y6HeseiUTsg6ccAnIIRfUegOHsh8KZMO17tWg7PM4ZeVxWgJzo_Ur5GBf16rjvODdY3aPrANvyajhUT55LkcEi9iifAQ_TA2diXPZwRYhPYEQUk2sY3UR2bk1_Zok0hZhA_sbUa4A4QFrLFUuaVYOdL-VSfAfdcp2RXK8uAnaddXZe0a-6SHMq0Xfo43OJ__JAbH7rKEbnOWtDuEVGUbDdF6g-zqeO9Wfdw\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/aab66593a3f540a4b8bf24d9d8371274/decrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/dc38d2c3e5874dbd8a9799181034fc8c/decrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:27 GMT", + "date" : "Mon, 25 Jun 2018 19:54:22 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a975b345-a998-4375-8c42-cb8c04419e87", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/aab66593a3f540a4b8bf24d9d8371274\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "676780a2-c058-45d0-bbfc-3ebba95f63da", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/dc38d2c3e5874dbd8a9799181034fc8c\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:28 GMT", + "date" : "Mon, 25 Jun 2018 19:54:23 GMT", "content-length" : "684", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1167e637-9a65-4830-b0e8-8badcdfcd12b", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/a6d5c37812c244419b08c848368e5d8e\",\"kty\":\"RSA-HSM\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":947362168,\"exp\":2525285368,\"created\":1520539768,\"updated\":1520539768,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c6bfb3cd-32fe-4a81-9ece-f8e7346f217f", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/67e41a759268430385285661e21cd3d8\",\"kty\":\"RSA-HSM\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":948833662,\"exp\":2526756862,\"created\":1529956464,\"updated\":1529956464,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/a6d5c37812c244419b08c848368e5d8e/encrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/67e41a759268430385285661e21cd3d8/encrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:29 GMT", + "date" : "Mon, 25 Jun 2018 19:54:24 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e4c2e3e2-c856-40fe-a604-cb726e24c5c2", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/a6d5c37812c244419b08c848368e5d8e\",\"value\":\"qi2JsIhCsLPdygejiVEVuORSGYtq-eanbDZiVztwYMqUVE_rGRzHyAh94wyiJpCfRqMs3r4OAq2txsYCxC8FQXAaf5QoiwEjsCXvFqONa1XhUpsWsZbotKgCLPndLOzjGHLTHVfUTD_BHXZ-whi9HYB9grwhWtSmgsUplK6cJUr7oYd0_HX_8z99zCAsMrh7f-Z1OPwCAdjPu6XwzuC1PrEKGaOOXsC2TStcaXsFmV1a7Ptdy6Fkz-RL7G5_JbxPt4DrDxahKTZp4YeO8glqZr8_h1zq4Jm6KbQb9ndOU3BTWi1X-KpHigl2iF97S8hPwPMgxi7_9l2j39a6gnQ6rg\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d4a574e4-1769-44da-a29e-c171c112800d", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/67e41a759268430385285661e21cd3d8\",\"value\":\"RGg52mu0diB0U_UpW34fNZbgnfdgV9DCg6u-EXo9959zu_q17MSIagzAbQUsd2E6yOpp3M4vuMDXe6so13VJ_aYJHOoP8EfgFPjT4qqX3CL23oiUg--S_lOt6ceq5zpgkTo_jU2X1rsGLrHOpaa0jDzymz2FJCoeCFNfC6AOXG8ua34XsaqCubVRuTnzA8Xsb-uMMQTiVAPOM4kROyOsVzcP0YxVk-TKbd1Tdwokrc6Z_xcxCZNa7gG71NGNMM8DMcOhuc8mq2R1M9GgciTXyB1AtIPoSs2gh3_IGYK4-Ryk_Ug9OAllBfM6qgMVR6helOTbRrwh5ZavWf97OzJ46w\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/a6d5c37812c244419b08c848368e5d8e/decrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/67e41a759268430385285661e21cd3d8/decrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:09:29 GMT", + "date" : "Mon, 25 Jun 2018 19:54:27 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,11 +181,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "987d57e4-bc74-4899-9f45-46fd2b5c771f", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/a6d5c37812c244419b08c848368e5d8e\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "874658a5-201c-4df7-86fc-9e8312975a40", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/67e41a759268430385285661e21cd3d8\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/issuerAsyncForAsyncOperationsTest.json b/azure-keyvault/target/test-classes/session-records/issuerAsyncForAsyncOperationsTest.json index c250b5d..36ff4b0 100644 --- a/azure-keyvault/target/test-classes/session-records/issuerAsyncForAsyncOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/issuerAsyncForAsyncOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:52 GMT", + "date" : "Mon, 25 Jun 2018 19:31:01 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a921d942-981e-4ebf-925b-5e6180a0f9bc", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c7b1d61a-39a9-4344-9a8f-c8c5d55874ba", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:52 GMT", + "date" : "Mon, 25 Jun 2018 19:31:03 GMT", "content-length" : "175", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "655da94d-def4-460c-85b4-15cf7b59caef", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"Test\",\"attributes\":{\"enabled\":true,\"created\":1520449553,\"updated\":1520449553}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f0bbfa0d-62e4-460c-a3c5-6f47e5666ca6", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"Test\",\"attributes\":{\"enabled\":true,\"created\":1529955063,\"updated\":1529955063}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:04 GMT", "content-length" : "179", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "85bf7772-2b6f-4961-9146-972331c3d3e7", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1520449553,\"updated\":1520449554}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9fdabe80-3302-4e4e-8e6f-7c6a0fc37f36", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1529955063,\"updated\":1529955065}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:05 GMT", "content-length" : "179", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1b33fca6-a5c1-4948-8d36-5aa4037b13ba", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1520449553,\"updated\":1520449554}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "851bdd94-97dc-412a-88b6-dcb31983c9cc", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1529955063,\"updated\":1529955065}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:06 GMT", "content-length" : "394", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "425b2317-e3e4-4c2a-be40-6429f25f81ac", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4f0cd220-9ef1-4818-bf7b-05cb4e37687e", "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPemIssuer01\",\"provider\":\"Test\"},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/createCertificateJavaPkcs12Issuer01\",\"provider\":\"Test\"},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\"}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:11 GMT", "content-length" : "179", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,11 +154,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e1fe61fb-034b-4732-989f-07086b768944", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1520449553,\"updated\":1520449554}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7c8ed540-59ee-48ab-97b3-d9269605f7b8", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/myIssuer\",\"provider\":\"SslAdmin\",\"attributes\":{\"enabled\":true,\"created\":1529955063,\"updated\":1529955065}}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/issuerCrudOperationsForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/issuerCrudOperationsForCertificateOperationsTest.json index ace1871..be47d35 100644 --- a/azure-keyvault/target/test-classes/session-records/issuerCrudOperationsForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/issuerCrudOperationsForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:19 GMT", + "date" : "Mon, 25 Jun 2018 20:35:27 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "39284b7c-b53c-47c0-a479-eb314f759487", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6a09b730-be17-4352-b3f4-61393c2da0ec", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:20 GMT", + "date" : "Mon, 25 Jun 2018 20:35:30 GMT", "content-length" : "348", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "06f8dda0-95ab-4c77-988b-13ea8c7ec6c5", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1520463920,\"updated\":1520463920}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1dd9c201-4f06-496c-9e76-b2d5d6bf2134", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1529958930,\"updated\":1529958930}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:20 GMT", + "date" : "Mon, 25 Jun 2018 20:35:33 GMT", "content-length" : "348", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "caa1981e-1d9e-40f6-80c9-e32baf55070c", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1520463920,\"updated\":1520463920}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b98746fc-11ff-4e05-97c3-4ef61c5e7c96", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account1\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1529958930,\"updated\":1529958930}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:21 GMT", + "date" : "Mon, 25 Jun 2018 20:35:34 GMT", "content-length" : "348", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "716e9a97-8317-4f58-913b-1ef4b918f7c6", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account2\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1520463920,\"updated\":1520463921}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "47fcd550-156d-4ab9-8b1c-87f7877302ad", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account2\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1529958930,\"updated\":1529958935}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:21 GMT", + "date" : "Mon, 25 Jun 2018 20:35:37 GMT", "content-length" : "348", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3a355ae4-9ced-46c4-a95b-55af32789b89", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account2\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1520463920,\"updated\":1520463921}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bf23edd8-59da-4818-a051-fd0a1f1408bf", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1\",\"provider\":\"Test\",\"credentials\":{\"account_id\":\"account2\"},\"org_details\":{\"zip\":0,\"admin_details\":[{\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john.doe@contoso.com\",\"phone\":\"1234567890\"}]},\"attributes\":{\"enabled\":true,\"created\":1529958930,\"updated\":1529958935}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/issuers/issuer1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:05:21 GMT", + "date" : "Mon, 25 Jun 2018 20:35:38 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,10 +154,11 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1191bdcd-6716-4b56-bf27-a72123a7d610", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4a83881b-744a-4fac-a0a0-4c5bc45f760d", "Body" : "{\"error\":{\"code\":\"CertificateIssuerNotFound\",\"message\":\"Issuer not found\"}}" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/keyAsyncForAsyncOperationsTest.json b/azure-keyvault/target/test-classes/session-records/keyAsyncForAsyncOperationsTest.json index df08631..86433b9 100644 --- a/azure-keyvault/target/test-classes/session-records/keyAsyncForAsyncOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/keyAsyncForAsyncOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:39 GMT", + "date" : "Mon, 25 Jun 2018 19:32:20 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c7940b87-451f-4537-910d-8a084c700ab3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ea64f8c9-310c-4ae4-9c5d-504a86cad5e7", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:40 GMT", + "date" : "Mon, 25 Jun 2018 19:32:21 GMT", "content-length" : "662", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cf6dafe6-e79d-424e-822e-63b901230297", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449600,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f7d33391-3d60-4541-9fe3-9f6502c143c8", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955141,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:40 GMT", + "date" : "Mon, 25 Jun 2018 19:32:24 GMT", "content-length" : "662", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "69107563-872d-47f7-b7cf-3fd1de9eb1b0", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f0ffcc59-3b24-4914-a0ae-ced6c413a39c", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:40 GMT", + "date" : "Mon, 25 Jun 2018 19:32:26 GMT", "content-length" : "662", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fb0470dc-430a-44a4-9606-3b99497c3149", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c44ef5b5-58df-434f-bcbb-cb5c20607bde", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?maxresults=2&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?maxresults=2&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:41 GMT", - "content-length" : "824", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:26 GMT", + "content-length" : "312", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e836b1db-6489-47ae-addd-ac6a84988258", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/cancellationRequestedCertJava\",\"attributes\":{\"enabled\":false,\"nbf\":1519842497,\"exp\":1551379097,\"created\":1519843097,\"updated\":1519843097,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/createManualEnrollmentJava\",\"attributes\":{\"enabled\":false,\"nbf\":1519842513,\"exp\":1551379113,\"created\":1519843113,\"updated\":1519843113,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5RFVrVkJWRVZUUlV4R1UwbEhUa1ZFU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "fc8d5215-af4b-432b-b0f4-ad74ab871cc3", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5RFVrVkJWRVZUUlV4R1UwbEhUa1ZFU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5RFVrVkJWRVZUUlV4R1UwbEhUa1ZFU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJV3RsZVM5RFVrVkJWRVZUUlV4R1UwbEhUa1ZFU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:41 GMT", - "content-length" : "308", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:33 GMT", + "content-length" : "300", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "de6fcd5e-d66a-408b-9b72-1265e91c4f6f", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1d4107ed-b5e4-472d-9d72-e360baab521a", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkxRMU14TWlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:41 GMT", - "content-length" : "281", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:34 GMT", + "content-length" : "278", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4ef62d7c-8422-44a1-aec8-b71d730e383e", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lXdGxlUzlMUlZsTFJWa2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8aa4eb08-4a05-4096-afd7-cc26df608e9b", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElXdGxlUzlLUVZaQlMwVlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lXdGxlUzlMUlZsTFJWa2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElXdGxlUzlLUVZaQlMwVlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:41 GMT", - "content-length" : "722", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:37 GMT", + "content-length" : "475", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "59dd8484-4e59-407e-80b3-75296ecdb5a8", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/keykey\",\"attributes\":{\"enabled\":true,\"created\":1515701809,\"updated\":1515701809,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036639,\"updated\":1520036639,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2ca0c2a9-dd7a-4ff3-911f-846b331ef580", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey\",\"attributes\":{\"enabled\":true,\"created\":1527889585,\"updated\":1527889585,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:42 GMT", - "content-length" : "781", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:38 GMT", + "content-length" : "294", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0ec0acd2-1f72-4046-b826-7a75f928864f", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036640,\"updated\":1520036640,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f4244160-4521-496e-915b-76158956c18b", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:42 GMT", - "content-length" : "536", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:41 GMT", + "content-length" : "289", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "04d5d694-c292-499b-a5e7-ffcd53be0462", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"managed\":true}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlOV1VORlVsUkpSa2xEUVZSRklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e9acd702-8bb5-4e65-979a-26483aa6d0dc", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlOV1VORlVsUkpSa2xEUVZSRklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlOV1VORlVsUkpSa2xEUVZSRklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lXdGxlUzlOV1VORlVsUkpSa2xEUVZSRklUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:42 GMT", - "content-length" : "481", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:43 GMT", + "content-length" : "457", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a9abbef7-24a9-4dfe-a655-bfa1535a73f3", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey\",\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlUUlV4R1UwbEhUa1ZFU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d3ca59df-aeec-4a06-b3b9-ad26eb1d4885", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey\",\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeklXdGxlUzlQVkVoRlVrdEZXVEloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlUUlV4R1UwbEhUa1ZFU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeklXdGxlUzlQVkVoRlVrdEZXVEloTURBd01ESTRJVGs1T1RrdE1USXRNekZVTWpNNk5UazZOVGt1T1RrNU9UazVPVm9oIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:42 GMT", - "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:44 GMT", + "content-length" : "658", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,23 +316,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bb50478d-24ab-431c-8667-df61ca7dbabf", - "Body" : "{\"value\":[],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8d337d8d-b50a-4ee9-ba92-38e397caa86f", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2\",\"attributes\":{\"enabled\":true,\"created\":1528498195,\"updated\":1528498195,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey\",\"attributes\":{\"enabled\":true,\"created\":1528324427,\"updated\":1528324427,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlUUlV4R1UwbEhUa1ZFU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/versions?maxresults=2&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlUUlV4R1UwbEhUa1ZFU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:43 GMT", - "content-length" : "240", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:45 GMT", + "content-length" : "28", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -331,23 +343,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "891548fc-685e-40f5-8d93-eb7b2488e6c6", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f46405f6-2a05-42fe-a871-ca230bfb697b", + "Body" : "{\"value\":[],\"nextLink\":null}" } }, { - "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/backup?api-version=7.0-preview", + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/versions?maxresults=2&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:43 GMT", - "content-length" : "13139", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:46 GMT", + "content-length" : "240", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -357,23 +370,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e71ad60b-724c-4be9-bd0d-b206b45ccab0", - "Body" : "{\"value\":\"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLk5LWEJ5Zk5fSkpscFozWkZNWmpSSHVkM1pNc3Y0Y2M5MmVidkk5ZEUwR3dWbTZ3UVNfaURUeGxUd1NfSTJJM19TS3dyVTI5NjFQM0k0OG1XYmF4Zmxrd2hiZUNpcTBPbE1heW9lUTJqMGJUbnBVVFU3SzgyZUdhVThmX0VYSGpWTUUwOVlFb2hiSXN4NEZWbm9ESmJDb2wtdUs0ZEx1Zzd2cC1lMEc2a0Q5VDQxRzJGaW0ybXZzcl92OHdoTkRsVDhzU0NHZ21pZ3QtaVpjOXZpM211bTZFNmdxV3VMQ3ZubTc1eF93djJfLTczRlctUnU2THJnZEk1cEg4SldWNGh4QjdLY1ZMSDlUemdpa3ROcDB1YlQzNGN5N05kT1ZPNU5hN3VIRDB6VkFaMmt1VDlhM3FpNDZZTFVudFFvMl9pMW9xTm8tUjU1c1puSkd0TnU5THBndy5uMGVlMGI3bXhieGt3RUNBZnpOWDlBLm9VVFZxamlEeXlUT1ZkQnVrRnRrLWYwb0NIZU5tYThYRVNBOFIwQW12blhKUDd2aUlGTUNnZExqdHB1WXpRWTdtdjdBYkJ4YmhFUGVlQ2hyYmZoMlMtTy1hWERIQWNRR04xdjhlSVFJb09GczdsVkllYVZ6XzAwUEs1RFFnSGxTR2RKdFhLUjVkaEwxZXNPNnNyS004QktDdEFRQkpqRXB5OG1iUTlUN3NNMm5CM1JSVmhwNV9DYktyUW5vSW1HMzJrNmQyZHRVMm5zWTFLOEVYMFFzd3otdWhtZ3o3cnU3MUw4Y1dVdkdxTXJxZWFmN2k1RDZ5TTNMaU9hMkUyTlVmRjdJUTZSMEgteVlNVy1VV3dUbWFVZEVUVFdzN1hkdExXcFFxSE5OQVZOUm9aWUMzaTlPQ3ZMYUNGd2YzdWphTUdBdHB3Tll4N1hYTmd4N09zMmtST3JYU1p3TUdnYU1FX09NTEs1bFVuTFVBZHVCRE5BY0pmcEFkZTRjUlBsQlY1TGZaQXpxTmZwSDlrV0JnWHQwR09BTS0yS2lYSVJPX3Flczl6eFBhVFh0Yk1pQ1VoRkl4T2tRY2ktMFNRUXpyQzdjVHBDeW9TN09sWVEtU1c1dWtOT2d3TEtwUTUyR2dCdGpneFd2RGtxMDdNTDdKaG9OejVUd3JYUlh4N1dfZ25QSk1VRENhN3E3N29neHlUN0tJNlczSk5FZThqVDdkNGJsUFBiWERfd2NXWktsdmtBOWw4a2dnaFJJUzAzRlNuaVBfdHA3Q1Vvd3BUTUJ0NTFqOGQ2ZUk1Z251X2lRRFZ1N21IbEJoN0QxdUVHSUtYaEV3M29ZQ1UyODRNeklhbGcwb2R4ZWJNRDhFR1pYQVdESTNuUjI4M0xQVlg4cjZqMDZvUjJKTDJKQ2lRTU5rR0FneC1yWDlLbHVtMXZRVzdyazc4bjNfLXQ1T2tIaFY3MUdBNnBna2p4dE9uMHhCdXpiZmotNkxtVXZjUnFyR2ZBcWRRMU1sa1JuRnJKWlNmbGVCcGsxQUZxcnQ1dE93c3B5TnBCZmdWRzJXZTdwRXhXdzVYS1RPc0oyTTc4eThhWG85YThjVUFMeXFfLUtCbkZ6czRVMk44dTRqYXFpa3pwVFpXM3VWRXJDeDhNanB2VkoyTVNsNDFGYVJHaUFNOXpHeUNMVGxENU5jNVRQVUJkMldXUHZITnQ5ZU9DUnRmczBHM2l1SThRVXZsbkgwekhsWlFmZ1hlc3BlQzZIOHZaN3ZUSHRpZWhqblI4U3dxRXRDbjJoYmktVXhyR3ktM0RmSFk1S1BrRnBHdWZHTWpRbGVSM2FOSnNkQUtrMFVZQVBOSGFPcVl0ZTdXcjJIdHpnN3Z5bk5zVzhGaWk0bnQ4UG5DOEFYN1NHdElIUFdvUGt6YzVtRDZET0Nrb1JYOUh4cnpqNzZSR1V3OVBUaHY2S1M1YmdsQVFLazVNQ1ljOFdITFBuTU9Wd05naWZ4Rk1nX3lZdS1MVWpvLTlvRnpkNXIyODVXd01TMkE1SG9feXVwUXZoNkcwSXlsUjExNUNROU9yTWI3empnekNkWEhzNmpFSXZKbDBOREQxbV9aVEtKa0tZZUZQOXc2RUY3aGMzRmFKd2tKMXlqb3UtOThNakRwd2NkTVJrckZQdmhjV09XNHZUUVdwMTVINEtLa09LZHFQUC1KTnhjbHlDY1FqbWdDUzNTQ0Q0dnpmT3N0ZkxvN1k2WGIxVlVzbGl6RjZVWkk3dnFCMEg2M2loQ3hmcUlNaXI4U2hmSnljbEhNN0ZmbUZQRVExSGlpOVRkaVdpS1QyWXdqNmt1TlRyc2x6RnQ0NEZpMHFjZWFDQ0RBeFktQlRQTzJ0REtqaHQyMVgtS3RJUmh2TWJaenctd0hXd2VnNFNYZEhOcm5RUE5XYVJ5dDZfU2l1aG93Z3Z0SkotZ3gxOFVFVGFjbGlQUHJpNFQxelRxTEpnRWswa2dWRE02QzJJT1g1UTZZc3E3ZWZvcnFUQTF3NC1BSlIyVzRrSWtWR2hOWnJvcGpGUEZJYXpwTDJkQVIwXzlJWDgzempIYUhYWmJ4UHBJcGhsMWFxa0VVeVpld3dLRTg2NmxYX05NalI1Vmg1T0pqZmR4MkYwUk41M1ZiY1FkaDQxOXNyRE4wVmVNLVBnOEltN056MTd6ZVh0c0R5NkJGRnpXTElxQ3lUaWNyYmVDWjhwdWdHOWxpM194a1RfUzRSOUlqdTR5NHhhTFIzXzRnaDhGZkV0MHB0RDc1bDJZNXBWc2R6ZC1weDZ1UTh4V3dxRUp4U29UbWpwYkhxNXotV1dOek5ZQm5fLWtyYmV1b0ZLdE1SYVhmTWNOY3RiTXo3OWV2dUluV2dYeUtlMS1CUWR4OEZDRTdFQWJ5TFcxMGNXZ0xyWFJkTkRaTUFiUUJxcGFuY1Rwc2NuS052U25tNHhubGprNVgxNUtEeloySW52S21pQnF1QzktNDFqbHZraTdzbE5WTk5sUEFhNU5FRGhvU1dITGxNWWZwMXY1dzF3MWRRel9hay03bHhpdF9iLVFUSnhUdzNGVmg0QkJlcE5waWQyMjdkQlpyMHNOR29MOFZXNTExa1AtbjdyS1NJV3hMNWJZc0lyU1VDUmtJVkg3Q0hNX1ZpYUcxN2NtNk4tRnhweUxVZjJITkJERkdxbUtpclJGNHZmdFp0a2tVYVk1NV9qdEk3SXdsaE1kQnZQcy1ZM2VlcnYwT2FZTlFqNVNPR1N3cW1rYVB5d2hTQnBMa1FSUzN0N3p4MFMyTWxoX0FlQjNWMk01Vm9lZ2V4NVdaaGtCWC1RMHUyeW45UjF3MnFDRXlQS0REQVJta2tPRmFiMWR2T1YzYVQwX2NuUjAxMlU3ak9JWGc3WkkwUjZqa1JoeUh0M01WUmtJMjdLbmdmejZfR0lvR084SVBMMlFhdXBvcjhjVC1WZ0Ywa012R1pMeWg2ai13VHJ1c2JpdDVqN25ZYnJGSlY1THF5dFkzaFhkYmdPQ2RXOTU5RlJzcm95WC1wVE1Zb0RKaFAyR0hJZWZkcFFXMGlGVFB4aWxmdEVhaTlVODU3MVZPVExjcXFLUXI0aTFyQ3p6Y1VwaFVqa3VUWTA5c2pJZUlNRDNDdjM5VzA5RVFkVW8xM3B5dlBwZWRWSXJPVjdBSmRxZ2FXVUV6RGRrcnR4cHI1ZjNjVERCSTlPelZVTjh2bkxJMUt3TEd6cnkybThIdHBYSFVVNk92Tk9PYV9mTFRBWXM4cU5FZkd6TjRrU3BraWN1NEZjU1AyTzNOQUQ0dllzd2c0RTZJQWUxT1dIUG1qN1F5WW1ZRV9sZVVCMEhOcTAxZjgyTnNvSWlfaDZjc2RsZXhBdjFpQ2xjeGMzbHpiYXNtZHNiWGMxZG9CS2JoXzNmaExQcHFRbWVyOTFvRHh4TUNMZmN0b3JScU4wdTJQN0xnTXU3RW91c3lSS3NicXh2WE5iNmhhRkNYcTJwYjc5aDZmQkY0bHVWWlA1TF9DdXlMY0hWMHlmbmlmVno1TlZkRXZQdFJLLUgyQ1l4clFUanl5dDBBcDRvZmdzWW5GZmtqNGI5bzlyYmVkY0JSdFV4aWFZaHBEQjd4SkcxSUZVNzNfM0dZUWJ2cjQzOEpfd3BvN2lEQkVnZHNaQTF3b3BGN0pKSUkxMjRiR010VFdWbzYxS19wOGlBOTRjR1hLSC1nQ0EycDk0WkNMem1XOW9HMmtEQ0kwV3RMV2NpQ3h0THdyZzFzNFJxcFhNRTZteVoxalBfeXhqdkFSZVo4TGpFRU1kMjREWG50TjV3Qy1UbzM1TnpWUEVsRXhob0pORngwN2ZuVlliQVlYemRuMlJqRXBrUVZUcVFVZlhuemtBeUlrM0JZYXNub3hMWmE0WFNJTWR5MENPdnhfa0twR0VKQWJ4NzhoQThCUXBobGR5UG5rOWQ0ZjA0Z2I4Z2tvVXQ3ODJ6eWVyT1JaamltTExVY0tOQ1lqaHpLUGE3Y2owYVdwRVZ6V2NhN2ZHbUplVEVhYnBHeXRBWnVfSmJFckQ0WWdzV01UUTc3azNzZTJHdFJHc1lyb2pRTXBqYkg4R0ZWemxmRk9CMm5qX3FLZFNhOTRnanVXSmNUeXNwTEJVUjBSMDZQdVR0eWdMV1l0RDVlUmE2Y29TUHNfa3ktS2Q0NmVZdGUxeEdzbjIzaDNlbVhJYnhzcW5rVk4zeUFlZGhhNVhla25aN2hsckpOUUU2ZGRJNnJtdVJNcnhlaXZvcXFhaUw1cWJtMnRkU3dmR0FLMG5YdmpYNnBrLWo2WFJmSDVQUi1OSThxVlZNTk1vVWVwX1g0emRFb29jS2xtbXNodElua0VCSXkzVzZDdGc5bF9PWmRrUTZYNXBtVXNrSVprSVhmQzA1UmFBZkZUXzZpV2tCbWFkY3dZUU5iNGZxQ0NyQXNfSWFxMlNFa0hXVEVhTEdNMENxcUEwMHlaRzBqNXZmNnpuaEpGYlVNZDYyc0lNMW0yczN3dUNVQS1XR3RSMV9Ld1VVaTgzT1BOUGZMcW41ZE1XUXhIMm5DQ3FudG5LZlVCWmFwTTRKTkpENFo1cjhqcC1Sd1NfOHhWX1RlQXBMMWZUaDZHZ1g1N0FWbThNbmlNVG84eks1YTVJcDZOcl9tWGZGamJkT3paTzVOM3ZPMW1nX0FSYWYwdnlqWFRMbFZtanVyQmhHWWJ6YkFsSzBSemowdDR3b1o4TE9TcF9EU0s1WGVuS0Q4ajJlbXpIUERGejNYQ2VQZm11TXZKX0lKLVBhUmtzamJ4cFJ6d0kyVXZ4SmE4LVBFSzJ6al80VVMyWUlVSWI4V3NwdWRLdG55ZGF3NTNSMmZuZEd2d1JBX0xkM19hMUNXeUlQM3VDaXB4NDYxREdEY096UmpLMjBVVHZEbFhZSjQ5UXY2UUpzMWNfU3hWV21QZHdCblRaVmluWmV6X1ZXZDRwbFN0Ml9wTGVlYWc5VWJhRmZ6aGhZeGQ0WExFN1ZYTUZCOXZkQy1uRzZHRHdzR3lfbVJvV1RNMWFXcnpiN3V4N3hpb2NJSFhYTWFZa0dCWVZqYU8zVWlmcE90UzlQMnZLbGhseUd1R0lsUndBTjZmQS1XTVhGTGtmNV9iUW5PUTBTTW92QVhYVWRucjA0R0tzYWpSbUxwT2hMUEpVR3FqMldrTThnYmVmSkNIc19pLVc1T1pWRkVBQ0g2WDhFWG55bVlxX3NkU3NXOElrX0x6Z3ItNTM4N0daVkVLSURRUWROZDJYY00wNzU5cTZ3dWRQMlBnTVVRV2xCOUVRWGFOSFBFSXNDc0hqVTQ1a2lIVWtlN0xNb0k5clhVX1VrVWl1aWZOd2dzYy0xWnpiS2dLZFQ4cnkxSGk0N3Y3WG1BbDdqQXJ6QUZMcTdMZ0FhX2JZZjN0aGhKLUY5eDZ6VDZUb0tjeU5UOEtwMGRvcWw4T1BaWFdVR2EtM0lZeFhWdDlIMFhzNHpaSFlWSVRPR3l3N3MtSm5MYzZIVm1EdG05MEtRdkcxZWdab3d1c0kzRXdjUlhDb1o1YlFqV3l6LTJYYlhBbkRFeGZnX29LSzFwaHdUd2lnQldjUUp0bUF1N0UxSjFJMmdDdGtKWHEyMWFUdTJaMDNtOWZ6dFBLN3RTbGZlVWJJckRsT2dFbUNTYzM4b0lFMnFtZEhYMG1vZmp4Q0d2UEcwd0NXVEJQX3JScjVnZkptYS1OMm1tdDhKaExiQ1B4QUprN0I4OG0ySVRfaG43UmI5Slo4Q2dZRTFpQVhHdHRlZ0ZuNV8zT2l0M0dNd2hzblJEWmJsbm9ObW5kM1BmUGlrWEJIUVhmR2NrbGwyZ29aOTBOMkFhYlFPbVRjZXhfdEd5OWdGdGlfQ29ONGw3QWxYeEtyYjFVOFZpLUxIMEVKcGI3cU8tUC1IcS1QbUtRR25tVTdMT3ptMHlFYWtDZFl5aXdGYWpJbGVVTXoyOWxOUGdtdzVXbnE2ZEJGcnlSZW9pcTBjRmZvNTNGeDVURmRLZndFVnlleWpicmdfdXJwT0Q0UzV2VjFmUGN3NlRabzM0cTlUeVpLcERuNGRXdDB0NmptcFFVaXJ5N0ROdHZwYlllMURXdHYtcU96QkZlZFhoc01abG5jSDBoX2FPY3Q0ME5zUGNxSUtlX1BsbmVVckNNenB0clllY3d1MlpFalE4SzM5SmRfcHJLeGJ3dk5HNmk3R0FTLVNNcGRfVDRaTm5YWFJweHUzUTBEY0hNeXhIWDZiblFscEhMQU50ZTRLWTFPa25tVURYbDVqRllTZVlaaDhyVDhZRk9NR3ZQQTBHN25USmVlRS0wQmxMYUJ0WWVLdGJxUGZvZVhGUko3ZnI3UTg1M0xCNkdMT2pxaklkbWZROHJZaDhxbnRyOG9UVklRV1FkT21PYnhqVnNwbXNHdFp0eVI5OV90bXJpSktNdmI4RkJqNnJQQmwzRnozdUVaend6YmdoQVpPSlh6NURyRWk3WVNCNjk3d3JTSjlkcWthTDBkS3VGYXFtYTRwcmcxM3ZlbEFqVXhJZ1ZtdW5mcFZOTG5uQVRZZjg5c1QwcTM1TDRWamJLaU5CWXY3eHh4YTRNTXJzX2VucUFBSHNjOGZ2NHpfYWRYZzVneXpSb2l4U09yTjBjcGdWckZ5a1pHTG0tNzdlWFVnaFQ2ZGFTSndPUEtidnd0UUNWcFR2dUhrenVUblJDekczM0R1RFltSzNpalRYRnhsS25KcHFmdUw1NkpIeVRaLXZQbXVnYkxzUU1rckJBU3o5b0ZmUUMtcnZwLXlnVkNESXlZTGMySi13bXB2OE5yNXhOT0tjZEdENXNHV3N4UzFLTFphVXh5WVMwYmpHQnc1RU51SzU3ZE5ETGxUenJHSTJIbGY1d2FBVXZjUUZHNC02c3lkZms5UXdndVJCakFBOVV5aVVxLU5EVXh4NXlCU0hyQjFaSEdLaEhsQ3pGWTFGc0l4WmJ2cDJNUFNScldtWUdBcGhjald6bG5xTS03Ylg1MW0wTHVGRWpmR0RqOENydTczSENaVEVTRWpvVXVkSDZwMlJqNmMtS21GbHZ5UTVjWTZ3dUFsbHd2Z1VOX28yY3A5c1ViYUlhUW1JWWloWUlBNVpkSy1yZ29JZUdfS1NCNDk5eFQyUjN4ZThTRjY2bk8zTE56Q1dHMEl1SlA5SGp4Q1JWUzFXYi1jOENnMEsxbHFCSGRVa0Jzcy1UR05iWksxV3FVWjVwVUNLRU1oVjN1U1d2Sk9vbnpiVWREQjVXMG82Yl9ETFEyUGJFLTJ4TTliazRmX2lRYWdOdko2S1pSQlhBZl9WTjlTOFFiczc4bm1iRzNNbGY2QThnM1NGanBNV0xtNVd1eWdPbXliUVlKYVMwUGF0ejRSRzdKM1RGV0ktOUNVZ01rNDhjZURmaFlqMlZhWGRwd2FBUGpKZEd3SmxYUzBPc0F3dlFoTm0tNjF5RjBDVUo5ckowWlVGS04yQ1ZldHpfdUtMeElTMG5INVFja3Y2enVlVUpYaDhWT2dDMXJ0ZDZiSzdfLWYyMEFmQ3k5aEZwNlpLdUs0OWtOLTFkOFBzQlNWcm9BLUd4Smc2TVl5bk5HNmVhVVh5dUZDTGZ2MzZHbEp3T19PVmtJcDJxdngtZVZIV2VuSUJmanFfLS11QUhGdVp0OGkyVTV4LWVxT1RmYnBZd3hJXzFFVXlIU2lxN253eU1SRDVQNVJNZXI3OTFOei1kTWRoaXpqdkFVYmdybURHSl9qN1FrV2t4U3k3RmV6eFhxOEp2SGNoem81QlJBQXd3SHlsMy1IMU1OVU1TUmcxekxFVzk0dUwzWDlERmoyS2VGRTFqQUYyd0JHRFZWN2p1dDh4SERsdGMxLWRhb3hlalZSdUlXeFhhYk5MXzl1NDFpYng4MElfSGdueXR0N25OVFdBNmtUblliNXBxX3B0QVBySWFVNFdpcmJjNmdaVVlzMXExUVg1aGJUa3k0RjZxdXBoWjRBRllXRUlBcm1JQ0FxUDRaUlJCU01hM3dCYkIxSGVmdmZrQ0poZ3hEVlFNNjZ6azlONDUwV2wxdVZsLURnX05TZEhDU3pMVWI3QlUyZEZoVllkcGFfTnM4dnhFekRoWFdmZzVpY25oNzJrN2l2TGVwdjVWOG5GN0JMQmd0dXZYMkhCNUE2M1BWYVZEZGpQaDlUYjY1bHFwd2xYbG0wOGJHSGh3NmUtMXEzUWxvTjdzTEd3WXltaTc2Z3FvdDQySlgteUZWTWtKZzRLcndNTEtZQ3NpR0F6bkIzY0FZd2NZclQ4NEpTb3J0eVYwU2dONlpzSlFyMW84NWdXOFdaSnpISWZNSE4xZkZXbldBbnVtdElDWE1uSW1ERXNhTHVPSFdsV3M1VzJiYjUtb3VoM1dTckx3UlVPd0lRVU5RbTRNNm0tVndfRFpXRi04QTN6ZjAtSDg3WnZDenNicFRiMl9NRjJXUjZmV2dsOTFCZ0RuMW5pTVZjWFBNa0cydDNVZ0pnVDVvMXAtQ04yMDk0SVdvRi1ackRZODN2cEFrUHJvRUhFZFNZQnVSV3J4M2k4dHNUdmRMRzFyVy1qS3FabjZtTkN5clJfb3lvYmxDemVKTG5ZRUdQeGVsdTFqX2dLc3RnLUQ0TGt2T2F0WGJzei01VWk5OGE2djRXTjBXY2VmQXl2OHBOM21oWXZWOTBoemQ1ZGhOc05fU0I1Y2ZQcUxWY2tKU3ZOVkYzTFRpOWZuVXJMcGRRS0xkU3RQYkd0ZDZXWjNjSWprUFBTMThvTzVsV2tuVWJ0Q0ZHRFk3ZjlwRm83akFINWxVRm9FMlVyZ054VlBJMDV6RGtUSGtRV0tkTkZPOGVmS2tSRjRrYWljenVBRFJZdTBhOHJfbjEtY05EVFBMNFNEX1N1eW03UUdZQmVsT2dxdlJSQXFxdnplUWMxQ2tuZUFEVG80cWVaRmU0eWhNLTZqQlQ0RTdPWjJTcFRiZDh5dnJ0dkI1eXVYckRwNWh2eUswbTNkYUoxZ0p2d1RFZkxWdmF4NU13cnc3bnJpSG1QUVVSTjV0MVRoT19HUHNFZjFKb3lzQ2NhUjV4aXN4V2YxcUY1TlhPNVNrdEpNMU1jeklSVk1mN1FvZ2pXX1ZfMVJybnFMUlplaWdUU3F0TW9zWTBHOXZhbktYdUNQOFNJUWJrQVFvTktBMlo3cWEzR1B3ZU5XaTNhdmIwMDNiZVlEdndmaDh2Nnc0dFRjODUtRk53WjZSVklJMTlBb2M1aUpkNE82UzZndlVqWmxMYWZ0ajFfQzBPTTdrRHNKbG1yUkNfUTh5NTBEeEc1TGlPcDFwMHY0dGtWQ25NSnI1N3JsMlVHUDVDdmU5eTBKNFV0cjF6SnBrdnFQWnRBYmpneC1LZk5BNElMOFlUTDVlLVpXMWh1a0dLTWhrcHdNZWRDbHN4WW1EaXRvWUtlXzdJRU9NbmFhTEFLbnp3X3NRbWdLSnQ0bHBXb09DeHZnZjl4RFZnX3lMaC1uRDV0RnkwdUhnX1hKUFQ5VFpUSjFjTFY1Sjc5VUxZbkY4VXhOWGpwdGlDdTFjYUVoeUI3VU05c2xhMm9Bb19zM05pNW1NaHBqT3FKcVNTd240T3lVSW5VRkJPQzdQemRpZDBKUDhoeHR3WU1ZMWluTUxHR0s1WnhPXzJSblE5dm0zV2xldVhtVTBwRmRYMmNNaU42QjJDVl94SlljREQxY25pNmVPU0x2TkliZGU2MTE3NUtVX3QzYm1VbmVJMXpDTG0tR193cThOSkFTRDhlV19Oc1UwNDA5emhSZk14S2ppdG1UajFfQmV1aFMzeDZKY3ozZWZrREJEbVBSelU4RG8wclR0VW9sSFlfQlRoVk42X1BYbE5LMFI2UHhjQl85T2lIUHdSZFExT0FucWlYM3h1QUQ4akd0WHFtVUhURWFHUVlTSFBHZzF1czNGbU5IWVVJZFBFbFE4a29RcFI2bkN5NkR4aXBjOVFrWkluREpTTGw2YmIxMEJuMWFqQ0pCUTJoVzlUcDh2a0g1Vzl1ek9seEloRHJGY1J1dldzT25acVBPUXFnU2x2S2xPMjg2RFBzRDdFUWRKcEFnclZoeFNfMEJTY1dZZGxROUpWRTNmYkR5ZGsySUV4R3JfZHJBOEdwUGtDSk9uSVhFUVU5UnlCWENiUE5fTzFveklhSnVQUU9xU1J1QXJlcC1oSFc1ZXBWMHZLR3JpNHdqdmlfQ1lLVnZpSWJiMnFFSmZZcGZBLXVLVlBZUHdpbXJFM0ZQNVRsWjBfNWt2ZGNXMXE2QThYOXRaSmxSSFBPUzAycHJKNUJuT1hNQ0xKQ0MwMnJ3RDNPX1dTcU9qXzluNFhHZFZQVzA3M0gxeURDTFIwZXpCSGw3YWpnLVd3SXg3YXljdmtsYjdqZVNmNjJsTWZUcmRWMW9JM1Vzd2RiUjdpcDQwS01NZkUtbGxJY2NtTWpOM3RtbDVDYVBVM0lfVUFsWjhaakRiVjQ5UHVHOFdleUVJYl9Sa2hvekdEajRVSGdleDZ3ZlRxa2xFZ180VmlTYkE5MGJtTlVWbjdYVjZzM2F0cjRUdW5wam1RQ3NsVDktMVZ5X1cwcXlvMEFXZ2lHZDdQTURPcWlGRjNxWjNreDNQcll5V3BucVVhWGUyMEt0ZUhjVEZyRm1LWVRzMHBad0JtbVVaRlBmLXBnR0MtV1lmbHNRMzNtNUhsVEZ1amNoODA3TFczMENrZTJqN3lCdHZQcW5JMHZDY1dSejROdTZUNnEtbTR1X0FFUEoyZzZXYk05c3o1V0ROZFFLdUZFVGlLeU1KZGhreXN6Y3FDdTlYNWc0d2gtbGx1WWhxV2d5Vmhyc29wR3dtdzY4akpFaTl1SWRRblYwYWMzbTdPOGRGaVZBYllQU1pFYjRRX21CTEFueEtyRWFWUW1JM09ZeUhGeEVFTlN1UFBXc2hvZ2llaHMtaW5UcU1JbDg1YzdnVHNsM05UMFhteVY3V1paRGp4dnExRkZQS1pyc29ocTlVODMyU0MzTTNLbE84OTRzNmFyTVhwYlIzMElEZnV3bWZTUnJhTWxuc1RTWXNLS19RR3Y3clh0aTRDb1RmbzRXRFAyVzRqSUQ3TlY0STBob3JOZU8yLUJpeTNMSnZwVy04VFFxSV9rMVlmMndxMURxSC02M01NUjlKWGhyT0pfMHBaa0FLOTlUd3FvN1J1SDhmeGc3S1l6S0dJUnRPV3VCdTRWdUhkRHlPN2RnQTZUVld2OEFQRTNLajRyQjZDdzZwVkFWZ2RxcHR1Z0p2ajRWazQ5dTBiUXQyekhmSTJLWDduU01aSkxBMnpWZVZyT1N0c1JNWkozQTZocWo0M0JVbVNtaVNZazFtZUc2TnlBRTdDOG5NRVN4WGViWHVPcDRfcE9XWGhuaGw5bnhfYmJXMDRiWVloZlJVSllUUS1Jb2xPUV9IVkkyakxMdVRJOGlOcmJ5bU1VNFo2bkdiQU82UXVXQjlBenVqemxqQzF1cWpfR2ZyY1lDVzBYSFItWDE5b21idkhpZzI4bUZidFp4ZkZ1MVY4THB3d0NCa2hhSXppaG5qMTNQR0FzVVJBY240UVptdTRPX2lseGlQeEo5YjBxNWU5aWxTU0tWR19FTU54RHpUVXlPT0REUjFES2RtdVpETUgyWnhpM0NwWW5YY1BMMTUxSUpuSVlpd0N0cnFsSFFqZHJrY3BPcmxnM203eHNMTTllZ2VyMktnRjdIMlViRllWQ242U29PcTVCWlJfVDNtUTB1dXIzdWlMSlJIa01YTVBRUk1hdGpTYWxqNGk2blAzUWZTa0NaNW9IVVNrYko1NEVXbnJlbTZmUlpRaDNMTTZnV1pTakc4QzFQbk1pN2FxN3NXU284T09CNHMzODl6V1BITTBzUmJlSlBZTmFiZ0UxRkZMZnY1d3pEZC1mSkFvMTVmc3E4OGMwNE9KSGZzcHJlU0pmWGc4Q3dkc0lhRjJTZzNkQzlTTHk1TGExZ1dibVVTeVdyOUJuUE1kZ21OWjd0YkVXcGFMTmxOUkUzRTEtQzRhamxhYTd4UEpSTzVCSzFtcE1QYVROaTRjS1JpWnZkV1RaRVFzaDRuV1NJVXp0Rmc0cElLRlJmYTl1cDZDaFhFUDItOGhxVWhVWjZpbDR2aVFZeG5XVWNEQ0tPb3BlaTlkUzdWaFlHUFlHNzFJNHhNbnZHV0Mwb3NEVzV2eWRXQTh2OXZlZFZ4SV9iaEJETV9YN3c3VHdIOTd5VlJUNURVM1lONlFwQjdzMlA2aUxQSVkzc0ZBTnFhYUlHZG5UbE42OG5pYkhxenJ3ZzM3ZnI3cDN5TEtLUjFHNXVWTmdhcjhCWUltaTBfbkVEbjFUTmNiOXppeUg0clhBLjdBWXgzUWJHU3ZPNU91VHVCSEdUNkE\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dd587ad3-d3ee-437a-9983-29b702f54cb4", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { - "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0-preview", + "Method" : "POST", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/backup?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:43 GMT", - "content-length" : "799", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:47 GMT", + "content-length" : "13480", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -383,49 +397,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "76f703a2-b008-42c6-968e-963e6d63e484", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1520449604,\"scheduledPurgeDate\":1528225604,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "608f04cf-aa19-42f4-91d3-d0f58c75e739", + "Body" : "{\"value\":\"JkF6dXJlS2V5VmF1bHRLZXlCYWNrdXBWMS5taWNyb3NvZnQuY29tZXlKcmFXUWlPaUkwTXpnMVlqQTNZaTFrTlRRM0xUUXlaVFV0WVdVNVpTMDJNVEJrWXpNNVpHWmhaamdpTENKaGJHY2lPaUpTVTBFdFQwRkZVQ0lzSW1WdVl5STZJa0V4TWpoRFFrTXRTRk15TlRZaWZRLkk0UUE3NWU2OW5kWlpqbWp5N3g5SGxnVmRiQWpveDRPX0lTMi1lbEJZa1FWTlZmb1BIcFZDWmhncUlrZVJLcjNoN0hQVGYycDItVV9raVVKNHdGaFdLdFRRRko0Z2x1Z2prTXBPcUFPZ2d6NUFRR2lGNmpKX2JyWml4Vjk5UndsZ2hLc1B5T0tiaC1tSGFmTXcyZEhRTkVKRjhTUmtzN242YThCdTF1TEpiZ1EyMnpwMHNaRVdQT05tZnFubWhXX0NTLVpYM29MM0Jvd09qc1JoVDZTbmpfRVJkdl9ub3lJRTRPak1BVFRxbm83TGJDaEc1MlhuNVRTTnFvZlhYdWhoTnNvdlNfa3p2WGZhSG1RUFVUYXBuWUtSQnB2aHo2WUFzR0ZqMzZMQXBwYklES2c5UDdFNm9wMTgyajIxZ08tNGV2V3B1UGlvQ0x0NHhzeTk0Qk5VZy5BUnItcmNVMERjMjc3dFZTOTI3d2FRLlRQNXFJZ3pGLW0xRGt1a0NuZEJ2Vk1NODFQaW9yYW5WRVR5cHByTmQ3cmFNalNXVExVaTdTcDUwRTdnaklubUs0TlhCVGotWXJUNDdYLWU4NVNOLVlYTGktWGNjNl9TcXE2WHlXdlVZejNxcWxsd2VHcUxfN0loOHFzR3VhNXFfaGczYl9BUlRoWGtlWUttSVcyNzNnWE9jREtBTWdsc2FXbTM4dzg3aE1CYXdTVEdSOUdkMERmb0Q2bmhUaHp3ZVFHZGljellDMTlrOUJkR0dYZnJIUGwzSHR0UVAtTmlZY3JfYmdzNU5ncW9tdlNIUmZKTE1OR0ZHZGVNbjhsUTdFbS1NajBYYlZ2Y1JBWWUtdm91RENBR3lxOThPWmJHcU8tZlhEQ0U3NkVPUV81MG5xWVBmbHlJcElOUklZRzJiZkphZG1JTjJPbzNjbDdLWmlqT1hXM0xpNmVES1Y1WDhTY1BBN3BQMnJyUTdNa0lIRkw2TllpWTZ4SjhuQnBUMnNvNzNMUklJcmk1ZkFDX3pTYVlsY2tSZmlGeG1BMGE1c3ZLUkdUT0xRNVZ0allPQjdQcEo3Vlo3WHNPSk5LUUMySF9jM1RkOE5HV3FDcVM3amdhc0dsWFlpZHFQX29tcmpEVDF0Z2tPeU9uelp3cTlyTUJ5cVh6NkhlZ0xEOVlia3J3QVZGSHI0Z01vNkZIZUpJZTNXV1RKa3cxU1RKX0Nxd29GY2NSekUtMS1tSzFaa3BKcjNYU1NsUE1KSTJITlNGbHIxLXdyVW9sTnNSTHNFUjlrUWd6NWxrcVFyYzk4U0c4NzZpZUF0OXE5SW5qVWE0MXNsRjFFTTJOU1I1ZmxYUHJoVjlqXzRqZl82cDE4RVBQMFlTamJRcTlSTWpPOXNQMnBvWW90WVlYaWQwVWdZQjdQMVNncHBSU2J6bmtMRFZ3RGFlYkhfR04xSnNmWlhNQmN6MTBkSXU5VTY4MlVVcmE3WVJBY1A3NGl2TjhsVTVueVM0R2hsX0VlNVVDYmYxUGM3RmJWeXV3UnZGTHVfLW4zMi1EM0FlQWt0b3lxV3ZmQS1NMldLZ1JuRHdFOU8tX1Z3ZmhFcWpTN3UxZmhEVXBpZmRGak5JX3pQaFdzb0FTWmlFT0hpMjFhSUR5OUVIOExQNGhjZ0t6ZEFoWXZ1QlNQeHJ2LWphT2t4ZEY4ek5ud2Jma09jcW1wTWZndFM4QmNVaU1aaktCcTlLS1RsbHI1VFR4UkllT0txenhvUnVGTFhhVWNHbm52QmJTdlFjVzF2LTlLZ1JDeTN5YlV5Ny1RcTl6N2h1SlVsTnBqRVh3ZGxUTktTSzlGLUQ0VXBxbEpkOS0yRzBvWWpEOEdqWE95azRKNjZreTdjN2tOQzhXOGkxZXBTaW1tcmd1a2hldHVfREtuT1JqaWVsRTduU0FHNXVobHBDOTJUQ052VUw2M19mY19YZWpfV0lYcjFCWUt0elhuZUVOLUoydXFYdGRUVUVIOGs2VTEwRVBEejNlSTlPakpHYk5xaHRvODQ2TzZZdHlCejN6WGtoblBTSTU3c3M0bnVraEkxVi1jN3BpZzQzaWZYWF80elh0R3VfV3pIcEdjV0pSN01RNDVSUTZzazhpa3JfRjVmaXZmMkd5Qm45R0Fmb2hfRkNtTERLQUN3TURBT1czV1VMMk9sU3RXQjhjc1EwMkV0RkNOd1hfUnQzYTJaUWpaT1BXU0JZWWpIbTJmQnRyQkxSQU9PLVlUTkw2aVRkOVBVTTFmWXVkS3BVMzZRNTA2djU5NUpNa09SZFNMSy1senRJRlhqYnJXSDJHcXZmT0V3eVp2VDdYdE10RWhfbDhVSDZzRmo3Q2laak40QzRmYmpMNVlFckcyejZ1S1kxcjdCUW0xRF9nUHNBNkM4dEJEVGdKOFJkX3ZfdGo1U3Y0VzVLclpqemQ1U0xyVkxKbTFxTV9lMU1lc1JMYnFoNWhJTUgzQ0ZZSG90bEpla0FnUUY1aGcyQzhhZkpoSmZhaERVaVJldWxZQ3Y0ZlBuc2gwY0Y0RlZQNFZjOGFpeXRMXzdVT2NNTFVwWTFPdWM5QzQ4SUZ6WHVzeVcwaDNaMkFCR1J4SXMwZlpGUzlqUllrUlc2U1U2dVZBeWwyOEZGQi1Wb0ZnTVpxcUFxa2kxWWMybHFSdmcydzh0LUZHUmtrOWR6bHJxamwwWmZkcW9wb1UxVGVETE94a3VMdDZTbWlYZlRPTVcxU09NcmZsZ2lQaXlGWHZ2SmxKaXBpbmk5QjZraVFQOG80Nk9EOFQxcDVEU0RhZURtM2swMWJiT1BpTzJFcm1hYUU4Z2FrZTNJd3FfY0xVbEp2TGV5YXhwWkdyZUFqQ256MW1fQkpQT0JmZENSeTZHeHRYaGVDQ0JCSy1kVXMzdUpkVkZFNUNQVGpmOUVnMXNqWEtKbl91RTVJNUQ3VGpmSlNzQnhCRWN2QW1nYmd0ZTMwWlFibTNyNUFUUzVMbTg5RDZ2a3dQSi04Y0NSR2F0bXlRRUlBNHVnaVZXQWpVU0RYZ00xRTFKMC1DT2FPQ1hsWUNZaUN5NWRjX1lSeXM4Ul8yWm9rUGV5Q0pxMW1DLXVZVFZwV1hoM1lva214RTZJRDBaZ29PX2l6UzRNc2t5OVFLSl9vdTdFay14cUcwMjEtYnFyWlZaV0NDMGdILVVKQkdPaXFEbk5VWGIxdEZnNUM0cWthV05GOGNzdkk4NE5MajVfQjZlTHpwYmdfOFBWSzczM3I0ZHVvbFBpZ1hZUC1oelRtUmlMMG10M2xhOVdJSFl4Vl9uTFBGeV9scVFKaHJneVBFak9zYXlzWE5GcUpWZkNKbW1ycW9fTVpUelpTOXVGYkNuR185NmJmeU53c01reGVrRTcyc1YtR2drMHA0VHg4dk5XR1Z5eUxJcUZweGRDeEQ4UjdpaFRNS2lGOGFuZDdYU0NTZVNZSzlFdVdhLTFxRWMtaV9DLUxBemhQeGJNbE1xNkFLY3pUbDhGeVBlRW9TUjk5ZVB4RHNZa2M5Y3NSeGM0R0x2ejQxdVlsREdhZkJGR19Qc2h0aksxSVRXSzNrWFJZdDlkUzBnZG82TXFaTVo1REd2bWhnQ19PVlZTdG5xeUtJcUduZElJa3AycmlSQkVnc0JlQWtyM0lXejVqQ0x5NG9TcDItSnZFRUVDNGZzeHRWQWM0WXcxbTZkZjlKdk43eU4wX0JtY3I4RXVZZnBzQnc2U0NvR21lWmhsRTU3UjQ2Y3p1RHBrcW1ySTRUV28zWUhRdjRaUDgwb0J0V2ZzaHgzZmN0Q0wzTm9CWUFodGlJTG5HWEZzRDZFbEhYMkduR2E4dHRERnlSRVBjNHJXTXVJZ0gwanJKVUZwc3hrRk9kc2NpNzM0WC1ob0c2LW5UU2tqc3BXRGRJS3R3TkVpRk9mU3BsQUozLWxXMmY3Rld4NFNFMVhOZ2o1aWJ0Q3AxUWFtRWIxeTVZNXBvUXBQTU03R3NhYlNjVzB2djNQSU9Bd094ZktZYzZjVWRxbGQzMWJWNW96SDNXSERYQkM1ei1qVHBlSVZUdlBkYjdhVklTalpQc1RHXzhLQ1pGaW5aYlhjX212VnB5Q2tvd1o5bGM1SFRKMmZYTFYtLTVXWG1UNEhLall5dzJMb24tVDhfcHBMbEpYQldrOHNnUkhFMGFhc2d4S3cxeGNKNXpRM0xscTllT0hsT2QxdllNYWNaZy03aUZGV0lJbURYVjJZNU1YcTNQSVBtR2dmWGx5SmpsTDRudWVwYVFHeU95VFo5WHZwRG9JX2tDY2pxVWxwcUFpUkdvbkE4R0J4dUhYTEEwVmtXdWpvSW05TVNWYl8yRzdzQ1BlanRjM0VrYkNyNkZzYnZxbjNoWmNMYkV2R0c5ZmZVd0VsRm1ob3U3a1J6Tmt5VVoxWHJzeTlfalp5d0FpX1pyckQxNklvaGl2R2JFSzlFLVdEZUExcDQ3TXhkMTIySkxzNWRnN1g3Sjd5eVl5Qm80bTN3cU9ESVFETHJMajAyWlU5aENYbm5MNnJmbTczX05MVnhuRE5WclptS2ZpQUtIMV9oVDlSaTVTQmQ4bW5MZDRzMkt0M1VVYnRHNkV1R1l4Qjk5VXRReTF3YWV1dnFnLXFtUWU5cllQampCM1Raek9wZXFLUDZqNm5WOUxQeFRFa18yNl94NVRTcklZNDdfNUxyU3h4MXgyRzA2MXliOTZwMXlmOGFfQ2ZOaEVqNVNOQ2RzWU9sZUh3dEhLYktQQjV1Vld2T2hnLVk2MlF2d0laU1EtLTQwaFZnZV8yTUJDY25yVFhieU9xVEtieWxiYUxobzZXT0d6cklMUnVZNzlKbFVUV014V3pjaHB3dmJ0NkVRTGpWeXlrQ3ltWDVRRENKMjlZWWhaQ29RdEtCeVFiN0xoTzdyZ1FJMEotMmwwWEpWSm5kYjFMMFh1eC1aMVd4YWdpenhOTlNURmZHWmJqc3dtWUVuNkg5Q2YwbEpFU1otdVloTjEyRnZaNGtxckd4UkRWLUd1X1hDV2E1YmVGLUtQRHE4RFNMRGtUYi1CUVBmRTlxSk91QUIzbVluanlXWGJFRFRjNkQ4cEVPdG9QVXowbUFDV0lUcXlqT1JsN1FCbUtSNlI2WW9VZ2VhaU5hSXJTNkxWcUwxczAybzJWbGZjLUo1ZFhYVjVyY2Y3eHNtMG5JS3lZR3l6Z05lM1FoRlZnVDJ3bmVWeENpN044VExsNnNGdjVCMXFKVmw2ZHhvdE1oQ2lUekFHQjMyM3VsbzJtbWRmM3FBZDBuR1FEa3FSLXJGa2JaQUJRZ2d0a3I1REhORTNFelRxSWlZZVU3NFNLbDhySThEenF5ZjNKV21takxLMDFxdDFPZ1BlekJRT1Zoa09RYnBfdnNKRXhfOUxuRnA1Q1lacldwNmZLeFpsRENETlBEcUd3LWprTjE3bWpvX3dKWDZOVjJ4UFkyTDBBbDN4YXpJekFMZWdDQjM3dXUwRnRDQlZhMHpSUmcwU2VDQXBNbkN1OF9aQXQzM3BxWU1jV2h4ME0zZHdLdVI0ajBETmxudTVUcEJzTlQ4Yk05TFM3THl1LUZwYmRUZExPeUE4TDJDWkM2T0lkNnRkVFhjckRXZE9CalA2R19xbnZZUjlQVGdkc3NXd1ZjV0R0RDlfWHRIangzS19EZ2RyZGs3NXB0cjJtWHBnOWh0aGdEVFRnZkF1RlZmbjg2T1I2UkcxMm0yaW1oWURJUEFzRkh1OF9LcEd5Q0YwUjVGVERYSk1iZ2pJRHNKSXd5Q0N1WDVCMV9xX1UxRlhvbEN0bHRoOFdNNDAxSVk0Y3lBZkd2V2tOMmFCYUJsNUxYdnRpZEpoWDUyTWpLOXphc1JSMVdES3BFVHR2c3AtcnhIdFpKblBneVRoUmpvbkFSZ2padVZMdXJPTUo4eUxqNmNVajdFYjFlMGVqYWRvT2RmS1J2QkYycHZHZFZGcGFGa2dFWmVJenhDMW9aMTZyS2d6VjhiWlVobWlVNXkyVXRxRXltZXdMQUNVaG5sbkphOVM4RDZjZjRvX24zc1Bpb0tobmU1ZFJfbGt2MzFwUTlmWWtFcm9CM193OUJyMFplOWlhb2FPS1RuSXpwTWRjaDhYX3NETGV6akp0RGZVMTFRcTRqWC1idzNqRGhrS3RXeXlRYl9FVlZGSHVVdzVGS2ZHcC01eFVSbVlCaTZCS0xQTC1hQUFiSEdseGJoOG4xN1Z0UE51Zkc4bWZMQXJ4WU5fdnowemFlaW5GZUJLQlk0OTRablJUdmJDLUp0bXFKbGJaeWgwVFVtZVZJWUtVblNuMm95Ym0zclkwOTVRZHBtSEtUN3pNbkF4ZHM0aXRaS3FCYk9QTC10UEdZWDJKeXY1NGN0dnp2aHh6NlZHZV9ScElUQWhhdmY3WTVNeHp4aVBSOTVPSVJvMVR3SXdpdlBWdkZHTExKYWtoVWlnNGJ3M1lBS00weWtZQ3Zkc2lGUTFNbFpFTUowZHVSX0EtNEF3WWRodmpVa2p5dUlVWUdvQlZjOGpldURNR1JtZ182cW1pelFPRjl0LVZpSklmaGNQZjJGU1VLRC1QaGxvc1lkMmtRS3F5RFpnTkllQjQ5WnFHejZ1MXU3OHkxTU1XcU9Rcl9pdkd6SEdQY0NYekViajU4T2V1Q2lGZ3h4UGljTERTSTEwdGFUMXNEaDJnU2xEMzBTMFF0UlpmMjdTZEdROHl0UkZ1MjU0SzhzVkRXZmY1SFJyMTFCdmNtdzBsWUR4bTZteWtuenBzbjY4TW0zMFZBNGNRMHZLWHNsRlJmV2NKYTZBeEZVYVJfNGtEdlJUYWZlZnhjdkt6ZGMySWFFTWltNFdtZXM5aWFTS2s4YlRaUTE5cUVLMlYzNVpjMUhIYm1nTDNFS3VRV19abGZOc0JEc0hrNWx0WDhUekRRWVBNeUxtUzlKX1RYVlFvb3dWTTI5V1ZXeXNhbFk4ZjZ0cWhydHU5YjJPV3dDT1dQMXRNRmd4VjUxc1NLZ3EyTTlOdDNSRHRzTURSNUpma1JZd1F2TExTMnhCZGpUdk9EeXpWVmJsVlFXWS02dDRtb24teTNQTkItYk5FLThEWnpsZDRXUHVyNXFEVjFmTzVzZ0pvd0trMEJsa05xWVBfZ2dFZFZQS1Z5RVYxSF9JT1FCRk1LU0gwMmpZT243Q3FXTHE2aGJuTVhqNjZGSG5ETUgyRnJtYUJINmM1REg3dFdKZTFRbU9JZ1V5VXhHNkFTZ1NUSjV0clE5dmtGZmJHazA3QlFFczhSU2F3TGFxV0JEZkoyS0FEdVlsNXprVXZza0pfV0Npa3lJb0ZSSmlkMHg1WWJfSzlEUGJsLVU0SkllOFNJM0d2REFrRGZJUWppN2xHd1RxNW9qUFpaNmZYdG9tM09nc05SOURFbk82RFJpdVRNUEdGaDRPVktNWkw1dGhfVi1pdmZoejFYc3RZZ2V0NU1rNV9NaVJiSGI4cDlwS2o5dERGWmNSSDlOZTdSaXdCY3NjQXV5XzhiM2daWjBySlRBMDNTV252TkRYVmNzS1N6UGFBYmdNMndveThRY1FOQjBRZXpGMzVUQVg2RnlXTVpBNFJlcy1wR19GaDZIRW5OdFROdTBBOGNQZ3FITDV3RTR6Q3JiNTIzdDUxTmh6bTdzLTB5V251LWdVUnJIM0JWYlVHMmt3MXozZ1JvT0VhM3ktZXo4Nm94eUxEd3N3UlhSdDZGdC1kNXVWTjBqLVZndHMwQkItY29lMWJqeGw2aDRTTFB2SzlZRUN5dXBRdFdfNEJJWUlnam96b2ZRR25SQ05PZHoyVmY5OFRxM0xpNXZNX096T0xsdU1TRTgxTTdURHZvMUVFT0ZmZURKcUxaWUdhVFJOcjE5N1lONWVfZ1BSenpaVm41RmZ6Y3RzNGZxTlhDak1nNFZMVzNSUVdFN0FOSU1UNFBUX1lYSzNyVkl1T25oaFAxZS1rVXZMZ0EyZndkU2xFOFY0YnF5aU1uOGZNcHljMDQwaWZtbEJfYTR3MDJXV1VVcjE0N1VqSkgyWkNRc0pkVThnQlVRcDgtdVUzRW9wVy1tOVhMZVptbUk1aERfcXAtRDJ5cUxETnZFVU9MTEJ2RkVVQjA1SDdJbElEMWd1TTBucWpGeHpfUWk1M05XY2p5Rk1IVHVYUGcxalQzZ3BqRTRfREZnNmdFY2tZWmpTTEg4UE5PWHk4bmlqUDd1bDlXbTJLTm93RWtNVV9YbThlZVRXX2w3aWp6QjVjQlF0RkY2cEtVSFpXTVNJWjdqQTVQbzdlOVpCQl9SQjRZdTVxLURVOVQ3LXFadWZMV3dkUWRaUnh0c0NkVkdUU0tYM1AwMU9iQnlJcExQODNoc3pibmNlWEtpWlRXQmlhNHZLd3ZPNnUta0ZkdWFHWXl0N2NhZkRIeTFqci1FM1J4OWFnSFlEdzVTRGQtS2Jydk5MS2ltZy1YLWQ4cmNHYzBNNzNsN0lSeXg3UFpoaDY5UVRXTW1peGNRV0xxZTNWZWlYMkV5LWZmZk5kcDNSSFMxMEw2OG01VGRJcEJPQzVSYjFwbUVqZldrLWVXY2JoWk1Sb2E1WVMtV19haTBhdnZWenNiYmpDVFB2MlVPbUR0Ujh5THJxRnRfVTlob3gzWnB2c1BDM01OMHMwRHBfN194T0wyX2dGeGd1NWFpUmJwT1N4UnktTTg3dmtvd0NtdzBOdmc5SjJnWHlYa0RCVE1xcUIyT1FWOFVQeV8zOUdxUWhuUW5fckx5UnlPeWV4RmFhVktaNVZFUzJFeWNoY2g5bjdXTzdQMWxCY2pqZXQ0WEFiN3kyNV9SOWZfcm8yZ3ZUa2dlODdzSTlVM0FtYktBbG5Db18yMFNJM2VXSmprTEhzdHU2QS1UWlhmdXNFUVpSNE9PNlBITl81TWQtOXB3ckpvajlmb1FucTlRaFlkVEJCckF3VEQzbEs0ZHFzM2dTOWJYUnU1YWtPSW9tUzdqOElrLXhpa2FrSkw5N0o5Z2JFQVBKc0hvRHBjdVNybzZOcE9reTVCdFRjU0toRjJtX2FaT2lQN0ZIeDc4MXNONmxlNGI0akIwWnlRUVR2WHhFYnNQLW5IUUJicm1JM0NYOGwxNHc2VGJjc1VHY2s0MmVpdVhYODMyYkVvcEVCVHhPRUU4cXMxd0hPOENUWmJmdFZDdXdIX0pzSjlNWXpDNFMzdlpkVlNGSGxTQzloX3dLbC1PcmQtWUZ2QWRZX1EtRElXd0dBNS04MFdQb0xXYTA4WUw5U1ptZmlFbHN5REtpWDhTN1pnQXo1cnVfdEJfcXZQeTdGbWVPbEJUNU0yMmpmcVpzTU9xcnhEN3ZYbXFvWHdoQ2RuSGhuTWt1eG1MSWRhM0VLaTU1RVg3U2dxZXI2V05nRmc3WEV4aVNiSjFrNnY0SlJtblV2Z1k3T25BYkFtS2JldXZSUVFPYmpoWXd6TUF5X0RvZDJRaGFrMk1zbXFOUlIwR2hyU1U5WDZKVWRKTjk4bkFZSF9TajRKODdUQXVaYVZ5VVR1UnJOU3g1TXdueWxpQmNNMElJcWx0aUxlZWV0NElzOTBhTng0WG5JTG05R1pWdDRxSUpqNnY3Z2hweHVWZGZLSGY4RmFreVJPMGVWNkE0bHYwdTdRSXZsQUtFUlpUUVVIUWpLel8wWWs3S2tibHYwaVVIdXJ5R1pHTVNrVl9BN2hobWhnY181dm5tYkk5VTRCU2k1U1VDbFdjclpaeTJQWEZvN2lrcXB0ZEJLZFFsQWlzeGhlRVF0eDlHeUlLeUhJUHhjUlpxdlpWZUtPRjBlMEJ2RVVMVWdIM296M2tpWklaQjNsejUzVlY1d0FpVV9fb1dSY2ZBcl83aGhPZXhwMHFKZG43ZjI0eXhlU0NOOFduaGsxZVVuU1VuY0FWT0UwZmQ3VVVPbG9hRGpSLWVpZzg0SUdFTjl0REdKaXpXamRIUklfSjctVUlWUnJuckhnREFaZlRuRGdXYzVFRWtFRW1zVFc5dnNXbVJVMkV1YTBJYkJiUXRQbjJWRTNLeU9JSmlVZGVvWEpnR3J5Zndndi0ybmRyNjlVQzRBeVVBa2VVMTFZR0E0VGVlT1V5aUlCRXlpWHJaclRpUVB4a01uMEo1VDZmNi1semR6anhFeWdYUmxGSnBHZFlRczhfZVVSZTBFQTgxU1g4MjMxQmFSMnllSnY0bFlDYUZOVmlqUWo4Ykh0aGl2UjhEb1gyYmcySnU5R1d3QkFDRjdwNGtBQ0otQWdBSlR3c3NvMkctOVlOeWZmdjBPWXNJSVZNbWs5bUVpWkdEVHVEcFRPWi1XSEJhbEM4Y1VHSGZnenpFRVQ3Z2s2cHpGRFdOUnJfYVFWaF9FcWJfSFBidVJLTzdZY3pJbFBCSVdTamwxSzl3QTdzOWtVN3hNTFpyRWNJNDNsVXRnZFAtXzkwUFJVOEVWNGtEUElEUTJQbF9rWlJTVnVPNzV1cjZTbTBMNVIxQ3lvS3QtZGp3V2FsR3RQTjJhT0VETE9xbEZXdlJCeEg5VG5ndnVoRFJPLWdmdVUxaDNCV0phYzRodEQtdUpaSTJpRHcxaHJ2T0Z2M2FUbDJfNzNOZXZ0Um9zYTZYMXpFdTFvRkxtdGdiTHpfVVNfZnhuMm9LdnNMZmlIYWhacDg4ei14dS10ckdiUjg5UzVhR2FPWlF5NUVqNUJUbDcxZUlTNEk2VG51TzNzZ3RsLXFYOHQyNDNGdHpmalkwMTV4Y1hTQUhZck1mSEJ5b1NXMjduZkN5b2xCSGdhd3J5eDZvdGE0dUhaQkcwTWduN1lGbk5kRWs4T3JNY0I5M0RxOWpSYkdBYlZiN3NEckhPeGpvYVJPNzF5eExCX3o5ZWtsUWNmT2w1aTZVVTczOEhDUnQ3RjdSUEdzcWpxNkRBUjk2blVydVFzUlJ4VHdybk1ZNGhuVjkySi1WTEdJZUV0UnhvUUZVcXhvYXRTc1h5WDFybEVRaWNOZW5DMnB0ZXlRMVJUNU9FdnFqLXF0VF9xTmZubTM4VnFlNy1OcWJ5MjdvUmNXUDA0TnNIUXd2anpzd0ZSYjltR2xKUElYd3YxODRrXzVFZlpmVWFwUjRXYlFZN2ZTa2xSUjZwdVhnYzQ4QUhScVJTWkxYM0ZjX1ZmUEFCQzNFX0J2Y1dSYUE3dUdCUnN6MEhXeHBSaWc2T3RkQ2NRRFBHNjduUHlfSVFxTVAwVHdna2dsLU5CeDQ4eUFhNkpqRlRxdFFaeE44Y3UzR0JUUnd0ZVhBOWNXalFJQUN2OW9XRS1ZMkpKR0ZTZ0gzb3UzcTVfWGZlNFRQZVpQRVU0b1BvRXN0eHdEYWI0UlZBZmVtd1BIS0dKVFQybUIxTzZvdWk4aWI2ZTJxU3VERnRabnVYWWZyLXBsNHZaQ0xnN2FFRGdUVTdYT3N5Ni0wcnROUUE4VHpSWi1KM3J0eFpTLUpERUNKT2RuMjNMUDFJYkQxVWs2THg2OE10WUZHSzNqek1qREVTWTBubThuNHBOR0ZQMWtIVDA2RmVZbWxXVWhvcHdyWURVU0cwMDVLdW1BUkQ0amt4LWRNeU5YVVJQeFdqc1kxdFlRTEs5NXd2ODU1Z1BUMHhGRmpta19SazFHVVJtemdzYnVhRHpCZ2xhY2p5LVNObGxUU2Z6QThwVG1OVEFoYkNkRkwzaDdXWTFmVFRFdy1WN1Rmd2N5a2dEb29IQUdLNHNXTFJOalZiZGNKR0FWdlpBZDV1MHdQZkk0Wk04Z3dhVlFnOVBlQ0VzSDgyY0ZhQk1BRGVTUFMxS094ZWQtZmxuVkhpdG9nbDZUZmJ3MENXNTdZLXZkNVJNY3J1bzNEbkl6dVl1UnVVTWhEbk1sRUZuWVBFR25QdENaM2pwcGJLRGNtSkZiYVhDemtRMXJTM2kzeXRva2xfcVdHdVF4MWxWQ2QzN1lvdUMtZmxOU3EwdmVCTU9Cd0VGZU4xSVNaR0JqbVh0SU5HNGdWM1p1WXFpYkFTalhUQXlkT3N5OEctRmY4U2N0ajBXTUFNTlJzd2Vhc051Q0lheFl1WmUtZ1g4Y3lZQWJoVE9PNFpsNXotejRDRFF0SHJXTFNXTkJSWkYxRm1UVnNGLUdaWExzUTNxSWpQMmNKcmdxS2twMHI4YVVRVVZWbFFOdFZsZ2liT3lFS1VnOXU1QVU1c2U2SWM1em14aXdzeTlhVzhOcDJ5aEJrRW9ua3FFMnQwTko4ek5wMHFqb3ljcEZwU0Q2X3RLVC1PdFdDeVF5ckpQaVo0OTZlMlFwdl9nYXdoUWpXUkdfQWlkYWQtT0o2eEFyS00zRExyZndYTGt2T0VWWUJRX2FlenFQUFZHVkJBWWtTbExuUE5KNGJEQlZfS3JZRFRsM2o3LXdHWGJPNUZjREgzTV9WNkR4REc0cTZnU29vUHZQR3BmTGJpbHhpQVZuTk82OFpUWGlXa0Z0dHhJbXlsM2REZXM2WktvVjdrMXhJc19SUEF4RDh5SVlxYnBUTXdGM1pDQ0dFTlplcVdWbE5rQ1lnWkpHaVh4QUhYTTh3bm9JQ2lMMmtEN2d2WjM1VmdXMW1BaXN4ZjBJd0FzZnFLWWxhcEV5RWcxTWJvQ0hCQU81cmhhWmppcXdsZFpTTHgtejNOd2U0UzFINktEOUZNYVpOYWV0UlJsdnd2Q3YxOXNFUzNhNWMwZFBFQjRRaXBVSU9qZksyY0xwV0J1UkFrLWd1aml1QmM4dDhVcVlvMWVZanB6bm1wbGI5RWxzWkxIS3BJazcyczlPYTJnTldObXhUVmdNdG51SEVCUURPMHZqZHJaeHd6TVZicTBYZTczYWFiaUs0VEhmVGgzZmxHbGFHcjRVLVlJdlNMRl9ER2JOWlRmZWJlZzZNbm5mc0ZxYmJuOThKVk16anBTVzRYNklrdEhYbHYza1JpYXUwcW8yX1lqWUlNZXZsZTRRRHdzN1JZTU5MSHhxYlFaNENvSjZSQ0ZlYm9mak11MXA1WE1jUUt3d3RMTDFySUFFaWZURkFrWGotbHZkRGtzTEQxTi1OZlYxRzJqd1d0MHdjRUxxN3R2bWNmbUNVbTljY3Bpel9tdEZBeGc3d1gzdXRacTBZZXdsR0M3S1AzeVhCOXpVaThjV0dldkcwMlZxUUhjWGRRVnN6RFVBUmRUaVdLOEpmVnVoaWhxOUJ4Q2ZSWG5PY0Z2Z1NTa2NuQzBYSjNLZ0RXNG5WQS5rVm9iRlZDdEdXejd5dXVyQl9aTjJn\"}" } }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:43 GMT", - "content-length" : "73", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:32:49 GMT", + "content-length" : "799", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", - "StatusCode" : "404", + "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d24d526b-ef5d-436e-acba-7de1af48ac2c", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: mykey\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "57095ee1-fc1a-4db1-a05e-fa40ce8612a0", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1529955169,\"scheduledPurgeDate\":1537731169,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:54 GMT", + "date" : "Mon, 25 Jun 2018 19:32:50 GMT", "content-length" : "73", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -435,23 +451,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0aa11c1b-2745-4e2f-91df-f76b2812f1cb", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "59308436-f8b5-490e-977b-8b2a8014d08e", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: mykey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:05 GMT", + "date" : "Mon, 25 Jun 2018 19:33:02 GMT", "content-length" : "799", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -461,22 +478,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "db7b72c1-f76c-4647-afb9-967e3e19b951", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1520449604,\"scheduledPurgeDate\":1528225604,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9ce3e469-3bf1-4668-bbf0-927016923650", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1529955169,\"scheduledPurgeDate\":1537731169,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:05 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:33:05 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -485,23 +503,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "88eb325a-94b1-4d9e-95d9-2599aa7a3653", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ba3e67a5-dc5b-426e-9728-c4cb9e09221f", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/restore?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/restore?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:24 GMT", + "date" : "Mon, 25 Jun 2018 19:33:28 GMT", "content-length" : "662", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -511,23 +530,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "2c3ccfa8-384e-49c0-abcf-d3444868a6e1", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b31fca5a-57ae-4a6a-9222-4ca4b137d1eb", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/encrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/encrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:25 GMT", + "date" : "Mon, 25 Jun 2018 19:33:33 GMT", "content-length" : "453", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -537,23 +557,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4113a28e-a123-4669-8f79-cd4574279884", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"value\":\"Twlll3I2fkJZbcQNamhTC_8mIDEh_HEQIWrIWS7KXZ00IjMmRVJ1ELrApv6TGcX8UCsgktXy3reH0ts8Eh851UfEA_0UXRbcKFS__kMlwpPzFMDyo018qeyR-39VFn-CrnOpc5Z5xGYVRLU6tdgB5-UxOVzLC-kiCnYGYVlY4tbL-xNDQj-j73bsbA9hQDcjrH6KaaKgdHbXDBIoZt8pNUs9Yg2rNpx5nUGS-Jdr5EXnTNq6D2o7CHfNu8wbuw_PMutlUITKFs7nguxrYVXknDvHYB1T7pnKBk-u8WiY5v_M96IejhSpFBY7F0DWh2KqSvPkDe0QItRPgVWBwTpmXQ\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "967c56c9-10be-4857-b01e-f92c27523252", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"value\":\"erYmYOm0ajwQ5aPjd4ABINeQzlnNcgwZ-7NxlnHJ-YFiJTeF5iDRAmSfgrpwllDs_-P9hAKCOOrMXA4jcUrkl-31dANx8lhc-d5dwICBCsR503fnZVqo-uAWRTYNK480skK_KQ16bO9CBlwXDIfdWZ67t6gzA6-gEmA__M-1LKeD-qAmaJhfiyBZhTds9fQdYlGtbz1RJNo2WyMIzVNmBRdVmWs-W2bivmWvp6A6ZBcq9MOdf_x_pnnU4lzcIlxiBS6qcNqRyHb0i9-7zvIahErfDMRzkt1Hm84etBlWSePM5HWwHWPIVMfyvrx0nN7nWBkRXlpUG3VhfPcoRrK1HQ\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/decrypt?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/decrypt?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:25 GMT", + "date" : "Mon, 25 Jun 2018 19:33:34 GMT", "content-length" : "245", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -563,23 +584,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e413d3e8-7c72-4514-a385-3a96d75d57d2", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"value\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8d038330-0313-4c84-8375-44fe487e5a5a", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"value\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/wrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/wrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:25 GMT", + "date" : "Mon, 25 Jun 2018 19:33:34 GMT", "content-length" : "453", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -589,23 +611,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "52576e33-1c84-4cdc-b336-0b9203805438", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"value\":\"xQydnnkm0jcuNSX1l34w7gHg0TCZT71YgGTyVAeh8_1iF05rELCNyUymW2p0ig3_5z1w3En6r2-K6BKSB0MYL2TCAtl3ngpEIGf2cCBIIJY6oKC8dgja72ad27fJTSGwvFzaUPV4dnwzquX1G8_bHo_AhOKzllY1NNXPfr4E_GO57V6oekZUn76Yv2AX3ve26T1Dnlur6F_chXIcSQdUmWt88GInyhvzzV8PJf7P56cLQvtOhwqnQQ34qMoPpeQtAMDBftBkX2Wx_8YlpzylBglqOdyaoXxtG7DPaXbFqugalO_atc2hSBWyHpEgjCatGl39ZJPpinknfGxXadM9BA\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "34df3d36-5b86-4046-a3aa-3f7bee3cf047", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"value\":\"QDIhPnQAntVyheWbDC7XR3L81dZYznSM_s91jhO0lFZG4nLdA0Si0czdpw9ZD66V8ohdTQtAKaVhA6cjfloD23ARBHOALdjH8c35WizbfbHrAMbBeEq4OrKFjnErclGjtUZQybLRnBe-mcAH8jjMyJltEaJHHxM2lB6sCD-Kwza7BkWLhCQF5jQbxJ1SZ-Hbs8S-Z9WgHxz9rFkm8JuziZ_obFYotqnScPejMeBm7AteumbJExv25_Zdb5lCT6qC2S6JzKquDBEK0X5oRmzhWHcdUf_MYmg11vcu1AWq5NJctBSdMZjETDy7ehgFPHkGDZ-27QKTp0XFUAbvdK1p_w\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/unwrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/unwrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:25 GMT", + "date" : "Mon, 25 Jun 2018 19:33:36 GMT", "content-length" : "245", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -615,23 +638,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "50386dea-e863-45a5-9869-cf112778e6e9", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"value\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dec501cf-86b9-4ffc-80d4-d73dfcdeffba", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"value\":\"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/sign?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/sign?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:25 GMT", + "date" : "Mon, 25 Jun 2018 19:33:37 GMT", "content-length" : "453", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -641,23 +665,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "07aad031-48e9-40fd-a48c-c237389240a8", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"value\":\"KKmRl1ImTu-DAhl2UkFWkVFkmV7bNWVqJhLjwQvtJGLy-8GcgqJqnXZJRXtPcWru84VZjo07lwQMPBXE-T1Ptzy21Q-D0wcqxND2IiX5XfMkZgNswwKo9tyhSfgI95MKzCj71-GYWeDNJbwdohOroru0Q6Ecm4Gtmb6cVWDfuqTY0pi4nkaiy24BseHqXNMtoll93TcLhkD6sy5DyQKMEjxHqE5AMP48jQM5wurla6cxCD_qcGTeHhJ26rVrzzu-dhJKGfbhlTLQTCoLZSeJLr6cB5nmhbLxVKo4nTnFH_St9Cmv8yZHlj87qvode7Gf6a2QzIAISyQOW7JcWPYaqw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "819b6ae7-712e-4899-ab81-01eec55e09db", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"value\":\"XTv9CvECml4QuN27XTG2nvmQtL9xRDSnI7hLC62ivMiiot96QLoT6_Hb1k9cHOeYcndgHPQapb-Xkomp1CpaJhrBSyH8DS-dnYd7j8-SY6vVljcUOQ3hucokvRc0TW2feCVpH3yVXhn3XXT3H4RJ2c8yPcSUFWhr_FQLjAeDqmngoGYKMdO_-_T4Pq_WUyioKwxjopavpJQACvl76qxVwaqv9gicvSzw4CWcM9Gfk20SKyhUnsji76U9pnvDHTZ-GZI1rH1HXopcHWt46gAd36jLmUtTfKq4o7l61PChKUeHx6JglwflE_djABjWmIUyO6Gy5bl8XzBLZ74iWWcE0w\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be/verify?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7/verify?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:26 GMT", + "date" : "Mon, 25 Jun 2018 19:33:42 GMT", "content-length" : "14", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -667,23 +692,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ac9d3254-99b5-4cd8-8e62-1207798d93a9", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a5e43463-bd3b-4256-be0a-da48c39cae3b", "Body" : "{\"value\":true}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:26 GMT", + "date" : "Mon, 25 Jun 2018 19:33:43 GMT", "content-length" : "799", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -693,23 +719,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "96d2af50-6562-4460-950f-f4a3a71cfa47", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1520449647,\"scheduledPurgeDate\":1528225647,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a5ea7ef8-7632-4928-9ded-60fb3f95ec86", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1529955223,\"scheduledPurgeDate\":1537731223,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:26 GMT", + "date" : "Mon, 25 Jun 2018 19:33:43 GMT", "content-length" : "73", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -719,23 +746,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "32655fa2-ebca-4437-bf8c-f78260f0d5ca", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4126f8d7-7321-4770-a96d-9cedb5275a63", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: mykey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:37 GMT", + "date" : "Mon, 25 Jun 2018 19:33:55 GMT", "content-length" : "73", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -745,23 +773,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e9e55006-19f3-45aa-b28e-073438a281f9", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "36fd6da7-f74d-4438-92b1-639f8b6c4eaa", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: mykey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:47 GMT", + "date" : "Mon, 25 Jun 2018 19:34:07 GMT", "content-length" : "799", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -771,22 +800,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4d00b4ca-21a5-456d-9c32-3666117c55f5", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1520449647,\"scheduledPurgeDate\":1528225647,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/f72593537115418582c1026e3725d7be\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"yKkzBxDzT9UeQzdF-Ch4_5psycuVYPANvrojtauBhycaRQM3lsfpKVfP8v9DwHZDxmOqMWrnrBRd6PYjmAlx1KJXxcFPwLWo2G_pRiu5I2rrd0P0SbJv5tawaCyWX761s282m_acujecWzzCG1tsjJ7iNvexs5s6tcow3JACUtp6tJ8w1KhA70UovQQFjXAGjcJk8gharSvOGP0k_6MlhctZuiqOEjkFN-I7reZImmAytJ9uIZutAFV1uWS6OfJ6VaookIyKimFz6Ll3sS4Vr8GNex075rW6PsY1x1nc2Xx3HHLBSyVBxVQEWZK98fu93qBBV0eXdIaf_PjJ-KFgAw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520449600,\"updated\":1520449601,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9dd24a78-2491-4e6c-b7e6-34357397e198", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey\",\"deletedDate\":1529955223,\"scheduledPurgeDate\":1537731223,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey/3e460debb7fe40e5b54d4e08343a3ba7\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"iB_ttu57Y6X92UP_lga-3CRL_Gi4kTiaWla7hssnksNIs8oCv4IJAldkU7igm0QrX74ewVjLHoGwVcRVLjEtiQR9SmohEGz2oy00pGhyv3RzyMU7vGtYyxu-JPqtUY--8Edf1rfPrplrRcIO8kBW4Y4hGSQRi_V031jYK7jTvu0b_p2KRRq85xhiLQzCAucvttyGUVT3MXtlABPUSfzXGGt2WoSQgQJEMvUldg8HNtWE6w0HZuqN6iSlho3QQhewuVnr__NKbtMTaVli2FIJiI7nyHNoh7JROZDaMQNKHntWeFPwsAwfCYWV8V1sCR_u3MK04Ki9-43cR2iaFn9z5Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955141,\"updated\":1529955144,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:07:47 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:34:08 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -795,23 +825,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a77effc4-d8a0-42a5-9a10-58fb5f907e43", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "12f98a13-a38f-43b6-b12d-149491cb86eb", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/mykey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:08:07 GMT", + "date" : "Mon, 25 Jun 2018 19:34:31 GMT", "content-length" : "65", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -821,10 +852,11 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9e7796f9-2bb3-4693-b390-65fbcb5fb15c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "422333ff-9c77-4bbf-b450-2d3da99a04ba", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Key not found: mykey\"}}" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listCertificateVersionsForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listCertificateVersionsForCertificateOperationsTest.json index 0baee6d..9002fb4 100644 --- a/azure-keyvault/target/test-classes/session-records/listCertificateVersionsForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listCertificateVersionsForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:33 GMT", + "date" : "Mon, 25 Jun 2018 20:42:11 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0684fd80-5798-4737-9767-e5e26501e5c3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "eff8e1fa-cd72-45c1-803d-3552feac6c99", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:34 GMT", + "date" : "Mon, 25 Jun 2018 20:42:14 GMT", "content-length" : "1882", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f1e91a09-73da-4ac3-933c-4b968b3f8109", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/5059dca100164d02ae2d4b8ee4394a13\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/5059dca100164d02ae2d4b8ee4394a13\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/5059dca100164d02ae2d4b8ee4394a13\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464833,\"updated\":1520464833,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464833}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1b83255d-5418-4a3f-ab5a-ffd04a97a6f7", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/a85065d141eb43fab3281b2a097cb916\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/a85065d141eb43fab3281b2a097cb916\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/a85065d141eb43fab3281b2a097cb916\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959334,\"updated\":1529959334,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959334}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:34 GMT", + "date" : "Mon, 25 Jun 2018 20:42:17 GMT", "content-length" : "1882", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d261cbbb-2630-4168-ad7c-7bede6039c2e", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/09e5ac0c44394d71a6f6ab4a5b990bdc\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/09e5ac0c44394d71a6f6ab4a5b990bdc\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/09e5ac0c44394d71a6f6ab4a5b990bdc\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464834,\"updated\":1520464834,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464834}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3cb5718c-3ff3-4c68-9972-5f096bad8bd5", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/2716a4cf0ca24847bceff841ea15c2c3\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/2716a4cf0ca24847bceff841ea15c2c3\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/2716a4cf0ca24847bceff841ea15c2c3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959337,\"updated\":1529959337,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959337}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:35 GMT", + "date" : "Mon, 25 Jun 2018 20:42:18 GMT", "content-length" : "1882", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9c26d7a8-19e0-4f36-baf4-c11707b1f40e", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fdf31f92f41c4194b615b6d924dbaa6a\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/fdf31f92f41c4194b615b6d924dbaa6a\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/fdf31f92f41c4194b615b6d924dbaa6a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464835,\"updated\":1520464835,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464835}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8ed20a87-144c-4cf2-bb53-a4460f3839b9", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/4e8c436beb3749d58cd814df978e2358\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/4e8c436beb3749d58cd814df978e2358\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/4e8c436beb3749d58cd814df978e2358\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959339,\"updated\":1529959339,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959339}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:36 GMT", + "date" : "Mon, 25 Jun 2018 20:42:19 GMT", "content-length" : "1882", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9c43ee9c-f79a-4170-a95f-3009d9fdb4c5", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464836,\"updated\":1520464836,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464836}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f39236ad-585e-4674-901e-86ce9332f8ee", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959340,\"updated\":1529959340,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959340}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?maxresults=3&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?maxresults=3&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:36 GMT", - "content-length" : "1249", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:42:21 GMT", + "content-length" : "1241", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4184e483-de77-4ce0-a9e2-6a566980510c", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464836,\"updated\":1520464836}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/09e5ac0c44394d71a6f6ab4a5b990bdc\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464834,\"updated\":1520464834}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/5059dca100164d02ae2d4b8ee4394a13\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464833,\"updated\":1520464833}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/certificates/listCertificateVersions/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNjQhTURBd01EYzNJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVlpGVWxOSlQwNVRMMVpGVWxOSlQwNVRMelkwTkVNeU1qZzNRa1F3TURRMVFUazROa0ZDUlRkRU5qaEJRMFEyTXpSQklUQXdNREF5T0NFeU1ERTRMVEF6TFRBM1ZESXhPakkxT2pJNExqUTVNekl5TlROYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "189a4943-ae93-4671-8b33-00e3bc9d88a5", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/2716a4cf0ca24847bceff841ea15c2c3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959337,\"updated\":1529959337}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/4e8c436beb3749d58cd814df978e2358\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959339,\"updated\":1529959339}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/a85065d141eb43fab3281b2a097cb916\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959334,\"updated\":1529959334}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/certificates/listCertificateVersions/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNjQhTURBd01EYzNJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVlpGVWxOSlQwNVRMMVpGVWxOSlQwNVRMMFpCUkRWRFFrTkdNVEkwTXpRMk9UUTRPRVk0TnpBMU1qWkNNa0kwT0VZeUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNjQhTURBd01EYzNJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVlpGVWxOSlQwNVRMMVpGVWxOSlQwNVRMelkwTkVNeU1qZzNRa1F3TURRMVFUazROa0ZDUlRkRU5qaEJRMFEyTXpSQklUQXdNREF5T0NFeU1ERTRMVEF6TFRBM1ZESXhPakkxT2pJNExqUTVNekl5TlROYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExNjQhTURBd01EYzNJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVlpGVWxOSlQwNVRMMVpGVWxOSlQwNVRMMFpCUkRWRFFrTkdNVEkwTXpRMk9UUTRPRVk0TnpBMU1qWkNNa0kwT0VZeUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:36 GMT", + "date" : "Mon, 25 Jun 2018 20:42:22 GMT", "content-length" : "295", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "8a3d3e66-78dc-415a-a01b-3a90556d9fbd", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fdf31f92f41c4194b615b6d924dbaa6a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464835,\"updated\":1520464835}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7741ff7e-67e7-4aca-8306-b1ab7d020bc1", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959340,\"updated\":1529959340}}],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/versions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:36 GMT", + "date" : "Mon, 25 Jun 2018 20:42:23 GMT", "content-length" : "1099", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "392043be-140b-4e8d-ac9b-5bad803041c7", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464836,\"updated\":1520464836}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/09e5ac0c44394d71a6f6ab4a5b990bdc\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464834,\"updated\":1520464834}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/5059dca100164d02ae2d4b8ee4394a13\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464833,\"updated\":1520464833}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fdf31f92f41c4194b615b6d924dbaa6a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464835,\"updated\":1520464835}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2fd54aed-e996-4d0f-b941-159b415fefe4", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/2716a4cf0ca24847bceff841ea15c2c3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959337,\"updated\":1529959337}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/4e8c436beb3749d58cd814df978e2358\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959339,\"updated\":1529959339}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/a85065d141eb43fab3281b2a097cb916\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959334,\"updated\":1529959334}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959340,\"updated\":1529959340}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:37 GMT", + "date" : "Mon, 25 Jun 2018 20:42:25 GMT", "content-length" : "2045", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7b08714a-4383-416a-8224-1addbd20384e", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions\",\"deletedDate\":1520464837,\"scheduledPurgeDate\":1528240837,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464836,\"updated\":1520464836,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464836}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5fffcf77-3c08-47ec-9cfd-7ec280017783", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions\",\"deletedDate\":1529959346,\"scheduledPurgeDate\":1537735346,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959340,\"updated\":1529959340,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959340}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:37 GMT", + "date" : "Mon, 25 Jun 2018 20:42:27 GMT", "content-length" : "107", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,49 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "59ab87fc-31a6-4a21-a8d1-7216b428d3b3", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "06953c6c-e9ca-4142-a5e0-2ce38f16998b", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificateVersions\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:47 GMT", - "content-length" : "107", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "79756e21-1694-490e-891b-7dfca4660cd9", - "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificateVersions\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:58 GMT", + "date" : "Mon, 25 Jun 2018 20:42:43 GMT", "content-length" : "2045", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,22 +289,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "eeb58111-639e-49cf-ba07-005ff02d4691", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions\",\"deletedDate\":1520464837,\"scheduledPurgeDate\":1528240837,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/0909c2c83f884b8cac0837e6ca921808\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464836,\"updated\":1520464836,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464833,\"updated\":1520464836}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e15c55e9-f8a7-4f3e-ae66-af7e363df646", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions\",\"deletedDate\":1529959346,\"scheduledPurgeDate\":1537735346,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificateVersions/fad5cbcf1243469488f870526b2b48f2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959340,\"updated\":1529959340,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificateVersions/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959334,\"updated\":1529959340}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificateVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:20:58 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:42:44 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -329,10 +314,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "54480394-a396-49ca-bf49-400561560270", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9156820c-1028-412a-b705-f04eeb01a125", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listCertificatesForCertificateOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listCertificatesForCertificateOperationsTest.json index 85fdc18..4e1386d 100644 --- a/azure-keyvault/target/test-classes/session-records/listCertificatesForCertificateOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listCertificatesForCertificateOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:45 GMT", + "date" : "Mon, 25 Jun 2018 20:37:43 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4cabdb6a-c44a-4f98-aff9-ec8d12265a8e", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f0792e7f-ae7f-411a-ad0c-602ea8690a37", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:46 GMT", + "date" : "Mon, 25 Jun 2018 20:37:44 GMT", "content-length" : "1854", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ec85578d-c7ea-4dca-9456-ea1a5f2219fd", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464606,\"updated\":1520464606,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464606,\"updated\":1520464606}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3c7457d5-59e9-4a0d-a8e5-c2d1259b1476", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959064,\"updated\":1529959064,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959064,\"updated\":1529959064}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:46 GMT", + "date" : "Mon, 25 Jun 2018 20:37:46 GMT", "content-length" : "1854", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7fe35baa-9d0c-45c1-9d52-4ab295e6e477", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "923b96fa-9d42-4a5d-881c-f022ccb17c55", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959066,\"updated\":1529959066,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959066,\"updated\":1529959066}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:47 GMT", + "date" : "Mon, 25 Jun 2018 20:37:52 GMT", "content-length" : "1854", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9042dacd-6a16-49e3-9aae-6d204bda51f8", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/519666e02949457fb4321be4e7081882\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/519666e02949457fb4321be4e7081882\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/519666e02949457fb4321be4e7081882\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b93e866f-cb77-4af1-9700-cdbea343fb26", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/e40473726096485885a03c4187f32ca0\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/e40473726096485885a03c4187f32ca0\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/e40473726096485885a03c4187f32ca0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959072,\"updated\":1529959072,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959072,\"updated\":1529959072}}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/import?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/import?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:47 GMT", + "date" : "Mon, 25 Jun 2018 20:37:56 GMT", "content-length" : "1854", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c049c095-d539-4a44-9c04-bf4efc974cfb", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464608,\"updated\":1520464608,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464608,\"updated\":1520464608}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ef38b007-d226-4f6f-b152-6b32b4ae543e", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959076,\"updated\":1529959076,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959076,\"updated\":1529959076}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?maxresults=3&includePending=false&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?maxresults=3&includePending=false&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:49 GMT", - "content-length" : "1021", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:37:57 GMT", + "content-length" : "1013", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bafd24c4-1e1e-4e62-9360-f15c646daf39", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464606,\"updated\":1520464606}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/certificates?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDghTURBd01ETTFJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVEl2VUU5TVNVTlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "82da5088-cc16-421e-bd0b-efa90d6c8ad6", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959064,\"updated\":1529959064}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959066,\"updated\":1529959066}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959072,\"updated\":1529959072}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/certificates?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDghTURBd01ETTFJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVEl2VUU5TVNVTlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDghTURBd01ETTFJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVEl2VUU5TVNVTlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDghTURBd01ETTFJV05sY25ScFptbGpZWFJsTDB4SlUxUkRSVkpVU1VaSlEwRlVSVEl2VUU5TVNVTlpJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:49 GMT", + "date" : "Mon, 25 Jun 2018 20:37:58 GMT", "content-length" : "255", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "299bcf5e-1bf2-4bbd-8825-9d26c910ff22", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464608,\"updated\":1520464608}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9a5384aa-0060-484f-a41b-1f8cd88be526", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959076,\"updated\":1529959076}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:49 GMT", + "date" : "Mon, 25 Jun 2018 20:37:59 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "77fd49b4-a144-472a-8e3d-ec5f1d6003dd", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1\",\"deletedDate\":1520464609,\"scheduledPurgeDate\":1528240609,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5e7d0cef-2aa3-4ce1-a32e-6db3e9cf7eb4", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1\",\"deletedDate\":1529959079,\"scheduledPurgeDate\":1537735079,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959066,\"updated\":1529959066,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959066,\"updated\":1529959066}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:49 GMT", + "date" : "Mon, 25 Jun 2018 20:38:00 GMT", "content-length" : "100", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,49 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f73a1198-bfde-4b76-a09f-3a3dbf9c58da", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f02d758d-9c80-498b-bd32-47d560521936", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate1\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:16:59 GMT", - "content-length" : "100", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a95ba466-8b0e-4c66-86e3-215c90152ae0", - "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate1\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:09 GMT", + "date" : "Mon, 25 Jun 2018 20:38:13 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,22 +262,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "da14cb55-c613-44a8-b632-12da7060aae1", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1\",\"deletedDate\":1520464609,\"scheduledPurgeDate\":1528240609,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/658b1f2427b5423dbc0ecc33a9d15ee7\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e54e83a2-2e7a-4b3b-86d4-5e742b94c1ef", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1\",\"deletedDate\":1529959079,\"scheduledPurgeDate\":1537735079,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1/bf0a8c214ff34fc3902c767249a969b8\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959066,\"updated\":1529959066,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate1/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959066,\"updated\":1529959066}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:09 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:38:15 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -303,23 +287,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fd17aab1-c629-4c9f-b513-5783175ccf23", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "92f99041-da48-4d3f-84a9-f8bae3cc8219", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:20 GMT", + "date" : "Mon, 25 Jun 2018 20:38:28 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -329,49 +314,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7b9207f5-93ae-401d-9e8f-3fb85d12d0bd", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2\",\"deletedDate\":1520464640,\"scheduledPurgeDate\":1528240640,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/519666e02949457fb4321be4e7081882\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/519666e02949457fb4321be4e7081882\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/519666e02949457fb4321be4e7081882\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:20 GMT", - "content-length" : "100", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fd099c38-3454-4809-9c1d-19852884ffcd", - "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate2\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "be41c4f7-78aa-4b88-8356-1a0c1dbb8e85", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2\",\"deletedDate\":1529959108,\"scheduledPurgeDate\":1537735108,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/e40473726096485885a03c4187f32ca0\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/e40473726096485885a03c4187f32ca0\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/e40473726096485885a03c4187f32ca0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959072,\"updated\":1529959072,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959072,\"updated\":1529959072}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:31 GMT", + "date" : "Mon, 25 Jun 2018 20:38:29 GMT", "content-length" : "100", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -381,23 +341,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9d2ed2ad-f24f-486e-9fed-3858c681b029", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f970252f-72f7-485f-869a-76ec0d3eb18a", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate2\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:41 GMT", + "date" : "Mon, 25 Jun 2018 20:38:40 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -407,22 +368,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "66c36d96-a23e-4a20-863b-99dcb18518d3", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2\",\"deletedDate\":1520464640,\"scheduledPurgeDate\":1528240640,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/519666e02949457fb4321be4e7081882\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/519666e02949457fb4321be4e7081882\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/519666e02949457fb4321be4e7081882\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464607,\"updated\":1520464607,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464607,\"updated\":1520464607}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d165f6f0-31a9-425c-b62d-b19e91b44203", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2\",\"deletedDate\":1529959108,\"scheduledPurgeDate\":1537735108,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/e40473726096485885a03c4187f32ca0\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate2/e40473726096485885a03c4187f32ca0\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2/e40473726096485885a03c4187f32ca0\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959072,\"updated\":1529959072,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate2/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959072,\"updated\":1529959072}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:41 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:38:40 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -431,23 +393,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "edd2be92-69bf-4c39-b0f5-739cdf4be230", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "14c1afb1-be4e-4a53-8df3-e11350078dcd", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:38:54 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -457,23 +420,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ae5d8b4b-ed7c-469b-abff-4e3df4667d69", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3\",\"deletedDate\":1520464672,\"scheduledPurgeDate\":1528240672,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464608,\"updated\":1520464608,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464608,\"updated\":1520464608}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "48ea0908-c760-4f4b-b4ba-2d14d430374a", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3\",\"deletedDate\":1529959134,\"scheduledPurgeDate\":1537735134,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959076,\"updated\":1529959076,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959076,\"updated\":1529959076}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:17:52 GMT", + "date" : "Mon, 25 Jun 2018 20:38:55 GMT", "content-length" : "100", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -483,23 +447,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "51c33df7-211d-4afd-a95c-fc06a68b8c46", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "31ce2318-5673-4af7-a0b4-3e32315fa7b1", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate3\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:03 GMT", + "date" : "Mon, 25 Jun 2018 20:39:07 GMT", "content-length" : "100", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -509,23 +474,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ea0a0947-9698-47ef-bb56-9e74cd3f6953", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3e3085cc-54c0-4d1b-9e62-4d308983180e", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate3\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:13 GMT", + "date" : "Mon, 25 Jun 2018 20:39:19 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -535,22 +501,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "059173b4-2d95-4b2d-9352-bab81fc505f9", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3\",\"deletedDate\":1520464672,\"scheduledPurgeDate\":1528240672,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/54d2d142780f41e8bb786fe148fe7a8e\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464608,\"updated\":1520464608,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464608,\"updated\":1520464608}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "51b01711-a3a6-4533-ba32-84f6292f6f34", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3\",\"deletedDate\":1529959134,\"scheduledPurgeDate\":1537735134,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3/41d744311ea04826a5a65bbdb52e742a\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959076,\"updated\":1529959076,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate3/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959076,\"updated\":1529959076}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:13 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:39:21 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -559,23 +526,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ab7fe65b-2081-4601-9407-6f940608b35e", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7fce4ebe-9eb4-48d7-a504-4ca23f02016a", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:24 GMT", + "date" : "Mon, 25 Jun 2018 20:39:33 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -585,49 +553,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "67ad6b85-14cb-468c-b09c-dbde22efaa2d", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0\",\"deletedDate\":1520464704,\"scheduledPurgeDate\":1528240704,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464606,\"updated\":1520464606,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464606,\"updated\":1520464606}}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:24 GMT", - "content-length" : "100", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "75b789d5-6aaf-49ea-91b4-f9b6f44280c2", - "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate0\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "fd091de4-9f6a-4c4c-8b85-e575e16b235d", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0\",\"deletedDate\":1529959174,\"scheduledPurgeDate\":1537735174,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959064,\"updated\":1529959064,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959064,\"updated\":1529959064}}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:34 GMT", + "date" : "Mon, 25 Jun 2018 20:39:33 GMT", "content-length" : "100", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -637,23 +580,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cb5ac298-c32c-47d9-8107-793f33fa8673", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3afe0156-f4cd-4e20-a95e-b5122e660ccf", "Body" : "{\"error\":{\"code\":\"CertificateNotFound\",\"message\":\"Deleted Certificate not found: listCertificate0\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:45 GMT", + "date" : "Mon, 25 Jun 2018 20:39:45 GMT", "content-length" : "2010", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -663,22 +607,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0861c73c-95e1-4a04-b13a-346750d8add8", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0\",\"deletedDate\":1520464704,\"scheduledPurgeDate\":1528240704,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/9e2fafb1295441b38486d6dc31bba606\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520464606,\"updated\":1520464606,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1520464606,\"updated\":1520464606}}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4623496f-dc05-404c-a053-54d2204b5b61", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0\",\"deletedDate\":1529959174,\"scheduledPurgeDate\":1537735174,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"sid\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0/145c1f4d5b6140be8c4b5a8e0329f5ab\",\"x5t\":\"fLi3U52HunIVNXubkEnf8tP6Wbo\",\"cer\":\"MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE=\",\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1529959064,\"updated\":1529959064,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"policy\":{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/certificates/listCertificate0/policy\",\"key_props\":{\"exportable\":true,\"kty\":\"RSA\",\"key_size\":2048,\"reuse_key\":false},\"secret_props\":{\"contentType\":\"application/x-pkcs12\"},\"x509_props\":{\"subject\":\"CN=KeyVaultTest\",\"ekus\":[],\"key_usage\":[],\"validity_months\":297,\"basic_constraints\":{\"ca\":false}},\"lifetime_actions\":[{\"trigger\":{\"lifetime_percentage\":80},\"action\":{\"action_type\":\"EmailContacts\"}}],\"issuer\":{\"name\":\"Unknown\"},\"attributes\":{\"enabled\":true,\"created\":1529959064,\"updated\":1529959064}}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedcertificates/listCertificate0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 23:18:46 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:39:47 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -687,10 +632,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "74ead0e1-8e48-42aa-9208-d08c086abd78", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "eab030ff-a5e0-45dd-904a-df1bef3ab1c4", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listKeyVersionsForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listKeyVersionsForKeyOperationsTest.json index 27a3e8c..c65425f 100644 --- a/azure-keyvault/target/test-classes/session-records/listKeyVersionsForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listKeyVersionsForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:33 GMT", + "date" : "Mon, 25 Jun 2018 19:53:03 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fe463c99-c912-4c97-a37e-a287c2eec220", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9acb74b7-2f44-4866-a8c5-a5c955e458a4", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:33 GMT", + "date" : "Mon, 25 Jun 2018 19:53:07 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "eb7634f7-eed1-4f5f-aade-af6d2a025ba5", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/5bf4a43fd7d94d2a8a97d2c11695dcae\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"wjQJbULVokLcKG7vC7rgvbYIrlTmwThO4srMf7Y5s5f5Qwo6ICXL7JJyFYY_FkCG81F01yZixoOH58OLTn_BIwVwPUmO2d9OP_YEVqu7zbfMiJJrAVMOU0NOAzSoiiyioVPe7Zvc--sD45Wye-TGHRRe6Ns7Sxg4ySv1d3rhfLT0Uue5-HZzX8f91noqADcXcK7symK0lu0_N5T-Tz2qm0jxyuZajNOQmqGnSFSjXP0pv2oobbe9MOsn4YTDUiT18N16Am4JTp7wtuGPcyIyr3vDCpajm6pymZ3ZT3DnR9EnnMYe77RW5TOwLgxTXmLkdJXhIh1L_QLQ8XfcVxWBUw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d82133b9-e745-433b-874f-7d3024a29e2f", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/51374aa5d790497ab1fcae270b647402\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tVn-_yOWjHT8Mmc9XmNBPsEDVYz4X4Yu3741T5ZAauxwixnC-1PLFM2cgrR3pi4MwuPeiM8tMxuqpQRGEvSE18q8iD9CAJ9bw5UbHQo1GO3nmjKa8EzzG_BJS1Jk7sypHkrSgO-ofsJpKCZrWdHwAzzV_BdJl8-TY3heyir_wgr1IMsSeD6PKd5q7KhLGb7AibhlHMuszrexnP_UTuz7vJesNV4-s3PXEtY9Kl2YR8xh3vN36Nzl6zGsljTsLP9AQNsiEQqjiP5ylwC1dacBO_FkAC-WGaSkGVo9lku1az1Y8SxpACvGJpXRo6ZNsmb3AmHnvfZ-Bo4ux8JwRrXC7w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956387,\"updated\":1529956387,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:34 GMT", + "date" : "Mon, 25 Jun 2018 19:53:09 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cfc01d4c-5c7f-42e6-89f4-1c4b3bbb19d8", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1df63c4693704233a6d0e1010ca3cea8\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"zNW4_zdHmXyUfJSGHmhJ0zWc_bL22S3Ek2P4ybJ5DpYtSJ-pC_3rtq-QCsQV1EuxeTk-ltHG-qJWYXP3NYIBXYgoGI6sh4uDFvTvCJ8k66Xbbm00UmkpAsagvqpKQ_YCIVQYskxZcr8HxKO5WKm2ReJ-c4tIt8F5P2kBqQZ21MSkoMAQ9HmF5BlYgJrMXspjxo-8ALvIm_jJkX4liZBBmTdTumpEenwPgxNCgkUaNH4lFjTGqvcE1ETuFQsVlW84P_aBn7DQ8npyE1MWfdZ7t-IjnnN7uGk2jj0iiYhvQLnIby0reWMzsf6wAxKRZaSZ495iO_aHQqMcGCV2mt3FJQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e81b2a6b-803a-4993-813f-b3fa9f9465b5", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1f08e3afd3bf40e79109746d07dad50c\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"5DM2bMSoTOKkxjE2cINalxMTk4Vb03N1oNVO-CGUT69PORW6N65-3ZXcS97XuS4pdYE-Zh491a6pVPKmD3qQWpDEeQQvgr0DTxJXImbb9zMrNGw4s_yKj8Kehg0Kqq5g0kgP8ME0KOVK3T_oqKLXq6voawevAj8hRJ2c3NR_bQT7Tqs6d-wa2P3EwMP2m0jVr1iBqU5XxMdqBnBx_uJFQCVoEEIT7ycXfy8l9QoDKGyN0n_7P4GWKBzEJCsoV9_iSZrxFnzM3_bX73fd8IfwFFXFLMdqRwSR9XZvjv2YNC531RD9C9bdlzfhnEmoWPV5hF10pH2O0qZXzpTTK_JWlQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956389,\"updated\":1529956389,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:34 GMT", + "date" : "Mon, 25 Jun 2018 19:53:10 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3aefab4d-b011-4fcc-80ba-08f8507dbec9", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/6938d1b4ac364ff59aee999b643bcc03\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tyhFBa1mtcsiB1b9j4KypYsQ5pLuxm3k6aSxT4SB3pSbv-BGdGXZDi1DawSs6Uhp5NaJ4adcSg536tyE8oIgH2qOsD9XPEY1f9Wo2bytT5NwZE6LX_r66ZcrPJC07fXRYTPi55rFkFHsbrfATwItFtVBC2cmo8wN1-aTj0N9vHYR__FqSRVbSI_9YrnhHSpw08ulOZrx0lRH9wgEc5ZOhpWi3EXMHq7U_jqPiWzuZVFXbD_N5hjIkbYjshNiIr9qRevsYPI9PCa6lP_9NUUvT_iywsCD4PFaPAGCF19kIvrwSfsPAdpyM9GW3X2YrQy2D3UtWV_G9P6zSLifFLvG_w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "72aafe9a-c1d2-4545-9871-a79523d9effa", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/003904806cd74f9fbcb2e7bd03a8a1e8\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"rZS4PFPiUL3BZO58BFInyYbGfrRl-2amrEi69uuaP53Ujbd28zEL5yo8MReTSVp14xg51kzF4jWyr5USKYdh5LYn7PvEvmKpHjvOpg1pjvKJSm1bgdGLvUEc7nqS58DmnO7R0AdbDehiJa1jdihlJvodZtC05P9iK4oNq86EE-FbOckIvk-zGqFf-ucWaZUIVJ_nY1Rq4Foj3U7Khk1opoA8lDVPkRZgx2nWpGmiKqqZWsDkfynqz6v2deR-mjpyybBHan7UN6VvAZa6y0z8ARnSmMoxfzo2_CblWZ29mzP35XpuWlxeiyI4_SsNGp_dHqQYYJ3saOzRa-3Qex2cwQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956391,\"updated\":1529956391,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:34 GMT", + "date" : "Mon, 25 Jun 2018 19:53:12 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "48a0754e-84a7-42cc-988c-a8a9c9539ded", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/615d8b7870ed4557951dc5436092fc53\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"xyXiGP_KuZiLfDxcM-jJ_DJ2jhLWYRhn7qVAQ96jk_MV8bWKAUrLMOve25Y81oStiCExSJZTuV8HZ3sgIt-6_rHyZEvDA_mTGaBDQ19NvFvcSqicejUx6UTdPQwkmcfaddWc8_N0wW6zygMYvtce6a9T8_dVfFnFZWq-5dRW39YO301Y4P3J1NKULDegTH3E-OUfXxaASSS0FCTG4-kRKDF2lNEGhgaIOVsuuhdJV8KtVUIim4yyabEEeEuZZXTjQsejgttmn1YfSsfC_nQCtsFB5jUnHGGYVjMwE1ig7ihpAMCkr8Wnfg4r9HfNvVFMhDJ4wqzH2aCpyAE5THNOGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c0d05795-37dc-4d32-91ef-d8d116f2c7df", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/26f227e491cc4c77938975b7c6d0e890\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"h1m4X_hODwyKVjQcPZ_LdsH9xQbwKszXWxN5yVWfmHylCwNCNkvVWxBdlmHXaLl4nf7g1ZlVBK4zyy9agcAXFL9JItksEqkiSeNVUfwP3NCrq2xLn-BXv1NL4dz-1o47OWS4j8-6nPPBoMqolqDSQkGdw02S3AzUoy9XQcCgmvdYNLTiDLlQ8csRhTA6X74SUDygdf9_rsGcOmnsyrOC7MGt2K77DD2r_xb4xXSL7-_leG8hWRHZ8irpXAdZSNsjIat2EtxI9d-3Eut91C1EUloFrH_eYnNHndjaVnLpb36b8BmwgMcM6IPTW3C3JJLWu8KiAAi6JJoVQsVf6UQwlw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956392,\"updated\":1529956392,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?maxresults=4&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?maxresults=4&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:35 GMT", - "content-length" : "1222", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:53:15 GMT", + "content-length" : "1214", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "23379f6b-4cb2-470e-9ab7-e4045620f28d", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1df63c4693704233a6d0e1010ca3cea8\",\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/5bf4a43fd7d94d2a8a97d2c11695dcae\",\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/615d8b7870ed4557951dc5436092fc53\",\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/6938d1b4ac364ff59aee999b643bcc03\",\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys/javaKey/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjAhTURBd01EUTBJV3RsZVM5S1FWWkJTMFZaTHpjMk9FTkJOVGd3TmpZek5UUkVPVFE0UkRFeU4wWTFNa0pDT0VaR01qRTNJVEF3TURBeU9DRXlNREU0TFRBekxUQTRWREU0T2pFMk9qVTFMalkzTVRVeE9UQmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=4\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ac1fc657-b065-4928-8136-4fa7ad106b7b", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/003904806cd74f9fbcb2e7bd03a8a1e8\",\"attributes\":{\"enabled\":true,\"created\":1529956391,\"updated\":1529956391,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1f08e3afd3bf40e79109746d07dad50c\",\"attributes\":{\"enabled\":true,\"created\":1529956389,\"updated\":1529956389,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/26f227e491cc4c77938975b7c6d0e890\",\"attributes\":{\"enabled\":true,\"created\":1529956392,\"updated\":1529956392,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/51374aa5d790497ab1fcae270b647402\",\"attributes\":{\"enabled\":true,\"created\":1529956387,\"updated\":1529956387,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys/javaKey/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjAhTURBd01EUTBJV3RsZVM5S1FWWkJTMFZaTHpaQk16WTJSVEZGTWpZNE1UUkROa000UkVKRE5qWTJOVE15TkRFMlFqbEZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=4\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjAhTURBd01EUTBJV3RsZVM5S1FWWkJTMFZaTHpjMk9FTkJOVGd3TmpZek5UUkVPVFE0UkRFeU4wWTFNa0pDT0VaR01qRTNJVEF3TURBeU9DRXlNREU0TFRBekxUQTRWREU0T2pFMk9qVTFMalkzTVRVeE9UQmFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=4", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMjAhTURBd01EUTBJV3RsZVM5S1FWWkJTMFZaTHpaQk16WTJSVEZGTWpZNE1UUkROa000UkVKRE5qWTJOVE15TkRFMlFqbEZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=4", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:35 GMT", + "date" : "Mon, 25 Jun 2018 19:53:17 GMT", "content-length" : "242", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "af608440-5a57-4fc0-a903-ac2e6b71206f", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268\",\"attributes\":{\"enabled\":true,\"created\":1520539712,\"updated\":1520539712,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c34154bb-4bb7-494a-bc40-289ac480d091", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020\",\"attributes\":{\"enabled\":true,\"created\":1529956372,\"updated\":1529956372,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/versions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:35 GMT", + "date" : "Mon, 25 Jun 2018 19:53:19 GMT", "content-length" : "1102", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e9c1d2c2-2280-47a3-9dd5-c17854d3e13d", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1df63c4693704233a6d0e1010ca3cea8\",\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/5bf4a43fd7d94d2a8a97d2c11695dcae\",\"attributes\":{\"enabled\":true,\"created\":1520539714,\"updated\":1520539714,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/615d8b7870ed4557951dc5436092fc53\",\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/6938d1b4ac364ff59aee999b643bcc03\",\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268\",\"attributes\":{\"enabled\":true,\"created\":1520539712,\"updated\":1520539712,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8479f427-a1cf-41f1-9658-78383aceb583", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/003904806cd74f9fbcb2e7bd03a8a1e8\",\"attributes\":{\"enabled\":true,\"created\":1529956391,\"updated\":1529956391,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/1f08e3afd3bf40e79109746d07dad50c\",\"attributes\":{\"enabled\":true,\"created\":1529956389,\"updated\":1529956389,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/26f227e491cc4c77938975b7c6d0e890\",\"attributes\":{\"enabled\":true,\"created\":1529956392,\"updated\":1529956392,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/51374aa5d790497ab1fcae270b647402\",\"attributes\":{\"enabled\":true,\"created\":1529956387,\"updated\":1529956387,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020\",\"attributes\":{\"enabled\":true,\"created\":1529956372,\"updated\":1529956372,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:35 GMT", + "date" : "Mon, 25 Jun 2018 19:53:22 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "53ca8e77-5b98-4769-9027-cb4759740110", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539716,\"scheduledPurgeDate\":1528315716,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/615d8b7870ed4557951dc5436092fc53\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"xyXiGP_KuZiLfDxcM-jJ_DJ2jhLWYRhn7qVAQ96jk_MV8bWKAUrLMOve25Y81oStiCExSJZTuV8HZ3sgIt-6_rHyZEvDA_mTGaBDQ19NvFvcSqicejUx6UTdPQwkmcfaddWc8_N0wW6zygMYvtce6a9T8_dVfFnFZWq-5dRW39YO301Y4P3J1NKULDegTH3E-OUfXxaASSS0FCTG4-kRKDF2lNEGhgaIOVsuuhdJV8KtVUIim4yyabEEeEuZZXTjQsejgttmn1YfSsfC_nQCtsFB5jUnHGGYVjMwE1ig7ihpAMCkr8Wnfg4r9HfNvVFMhDJ4wqzH2aCpyAE5THNOGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "502a3ec2-a94d-48a3-aa53-fd42677927b0", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956402,\"scheduledPurgeDate\":1537732402,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/26f227e491cc4c77938975b7c6d0e890\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"h1m4X_hODwyKVjQcPZ_LdsH9xQbwKszXWxN5yVWfmHylCwNCNkvVWxBdlmHXaLl4nf7g1ZlVBK4zyy9agcAXFL9JItksEqkiSeNVUfwP3NCrq2xLn-BXv1NL4dz-1o47OWS4j8-6nPPBoMqolqDSQkGdw02S3AzUoy9XQcCgmvdYNLTiDLlQ8csRhTA6X74SUDygdf9_rsGcOmnsyrOC7MGt2K77DD2r_xb4xXSL7-_leG8hWRHZ8irpXAdZSNsjIat2EtxI9d-3Eut91C1EUloFrH_eYnNHndjaVnLpb36b8BmwgMcM6IPTW3C3JJLWu8KiAAi6JJoVQsVf6UQwlw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956392,\"updated\":1529956392,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:36 GMT", + "date" : "Mon, 25 Jun 2018 19:53:24 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7b94b07c-eac3-4862-bdff-e54b491b87fd", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "64e465db-0f2a-43fb-a28e-240d477960f0", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:47 GMT", + "date" : "Mon, 25 Jun 2018 19:53:35 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,22 +289,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9e542a7d-a676-44eb-b2af-142a74f1d99b", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539716,\"scheduledPurgeDate\":1528315716,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/615d8b7870ed4557951dc5436092fc53\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"xyXiGP_KuZiLfDxcM-jJ_DJ2jhLWYRhn7qVAQ96jk_MV8bWKAUrLMOve25Y81oStiCExSJZTuV8HZ3sgIt-6_rHyZEvDA_mTGaBDQ19NvFvcSqicejUx6UTdPQwkmcfaddWc8_N0wW6zygMYvtce6a9T8_dVfFnFZWq-5dRW39YO301Y4P3J1NKULDegTH3E-OUfXxaASSS0FCTG4-kRKDF2lNEGhgaIOVsuuhdJV8KtVUIim4yyabEEeEuZZXTjQsejgttmn1YfSsfC_nQCtsFB5jUnHGGYVjMwE1ig7ihpAMCkr8Wnfg4r9HfNvVFMhDJ4wqzH2aCpyAE5THNOGQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539715,\"updated\":1520539715,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "30f4b2b8-ab3f-4b08-a662-ae629bfaf8ac", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956402,\"scheduledPurgeDate\":1537732402,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/26f227e491cc4c77938975b7c6d0e890\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"h1m4X_hODwyKVjQcPZ_LdsH9xQbwKszXWxN5yVWfmHylCwNCNkvVWxBdlmHXaLl4nf7g1ZlVBK4zyy9agcAXFL9JItksEqkiSeNVUfwP3NCrq2xLn-BXv1NL4dz-1o47OWS4j8-6nPPBoMqolqDSQkGdw02S3AzUoy9XQcCgmvdYNLTiDLlQ8csRhTA6X74SUDygdf9_rsGcOmnsyrOC7MGt2K77DD2r_xb4xXSL7-_leG8hWRHZ8irpXAdZSNsjIat2EtxI9d-3Eut91C1EUloFrH_eYnNHndjaVnLpb36b8BmwgMcM6IPTW3C3JJLWu8KiAAi6JJoVQsVf6UQwlw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956392,\"updated\":1529956392,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:47 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:53:36 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -303,10 +314,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ca2f2d03-e623-469d-ac7a-51a01dab7680", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "89dbcd68-1ee5-445e-9205-e703c211c6b6", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listKeysForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listKeysForKeyOperationsTest.json index 60f04fa..9103634 100644 --- a/azure-keyvault/target/test-classes/session-records/listKeysForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listKeysForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:30 GMT", + "date" : "Mon, 25 Jun 2018 19:45:12 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0a001efe-79fe-4349-a9b5-dcc6fd81704c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "00e9d961-ff1b-4b4a-9c4e-047c214536b2", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:30 GMT", + "date" : "Mon, 25 Jun 2018 19:45:13 GMT", "content-length" : "665", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cf7dea2c-381c-47dc-9676-349012ef858a", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/8ff45eeb5b724c5ba7829e3961649b92\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uwZTLp2MkPH4Sn1FlHolkrbjR5ufM7yqggYKBdsTSqDoDZjyjdUj4ed_8k64q8X9aEgVi-94pXMuJ4XNWAfcKvsqONNsIBkhP2uhQOuk1CLovVbZ153jAM5Ab1ENwXgNZxr_aSJoFjatjK2Xibgb9BHUI2r_NAq1YJMZFQdi8e1LpISCp_I9kujN0Eh0VfPxAuNrPXOLV1mqm7MiNa1M1uL_UuZ5zEA9zjuuuT1i7tCG42rZmVUoLkGeJyBTPGmuCwlxj4p5SxBQheC-MIGOkQ6ynwTI5QezIXsLckCGyBt-RKkzI3o9smGD0ZmLWQzuj0buOcpPK_JNSMOJQRRnsw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539410,\"updated\":1520539410,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2e83ccbf-1d8a-4b4c-9f1b-f1d34c0e5492", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/a2ca8d3a34754bcfac4482a6e93a2c89\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"ua_AoKdqySiDmuhDzKLEG_rjn93eATGx_iMA4VvUoIhW1fh-BiJdl842pyYcPJ5WhvSMP-hokvUwN9nNbD87SgXKjlfMsDPeZE1R5B3c8lmiNaANt3I5hjiK-KINvFvmkGn_Ck0ta4OOxryqIB9RKpO2Ovodpf628YlynDJeIZnrWRcIC--ImvP5OVUnS2G38DeONa3oaCIGxnDFJnTZq8WSwLWEBd-EhOUB0WdRqrsWMl0algCBazGdU094AsoptYdtVv8AxZjTSXAO1gX0Ug3wVGGvckG5EgO-XeMH3L1lbT1WRnuhWpUPXbjdARoc95f_OLh-xrOVH6AQ8t6mvw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955914,\"updated\":1529955914,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:30 GMT", + "date" : "Mon, 25 Jun 2018 19:45:14 GMT", "content-length" : "665", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "922d7a0a-c21e-4201-98a3-282b20fbcaca", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/77bf62c6fe364bb1b17865306fc6343b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jwjr_29snJXJl_rv1FTBklzTzQbGMbb4IgbuVlQwG2J7BBuoa_7qwHmI2d9-avdkE3yYSBXUmGdfvEKXDSPi-JbLNfYChravw4BpBWS3DlFp6QWGx4XPL7ArasoqOBdx15De2ucRAboufNq6t4cJ9ZFypLjOzWG6EKHDNqYNYq3Htacw97mZO5U3nez0aylcXwqSIR42nIBVEDebRPP5S8xpOp1QDCeVDSdxwnH_S_iv6Z7eF9Ub_58mUU0SZlE4bWCu3LJBHQWly9Gsy_0ASKwcSSNE9jxDKS2BJyWnonXfawzDealBJEUoAWGSKKw4OhYtELxJiNv-9HRon_56lQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "874555a7-208d-4110-9149-9cf2abebb8a7", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/4df00d400ab2401385ceb5a232ad4811\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jC3MGXY_VawDhysKwB0cgbt4dYWK8URxwcpsmHnYDpds_b8QY_DcnTtIVPt_yIqIvFBA8T_D4RhX3Iisk1tK_tIF4mpF89Uv62VstOpvQ_UkDsEcGD3bZ5Ovkek_zKaM6bBJT3KHHQSoMsVx6d2waGQUdnO-MtFwNcZqkQYw6JWSrCbecR6QfFSqC3y2avqkRxbEhNqWB27cY970Ts3CSc2VbuYTpouk_VcnKYp3eAK8iAAwVjbm1Sl5ocXLspzLsvPtrpxK_5wyCDbHMUQERTIr8jjA2_9ZFNxwUtckM9fj7hv4S4qfmm6HaOY1IVDDg2tiwvS5ixPX4cIXm4bU6Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955915,\"updated\":1529955915,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:31 GMT", + "date" : "Mon, 25 Jun 2018 19:45:16 GMT", "content-length" : "665", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "78510071-9961-48ee-a205-ba6536b1a413", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/e7115054531641c8bfc681bb64d541fb\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tVUGo1OWaGDYvRbPMmfcg2xYEF_QcI7KXUnjKbK0tQjDh6IV634DAclf5d9vZwtskM-a0Ea8NSBcbTzXSnfBx9AKtLTTEgevNwBOtSXmAOByB4i1r6ojGjI27BiYmt1lXcqo3IjfILHlArixlnCsb4-Sdptd4ZJn8n_EMYj9JTxvtG6B2S7dmoN2bmvNQewgmq6TPKPUxjWJxE98MNBnDX5Q1Zan02emnEku4HBmRCgijsdqfVzvrC8u6yHbrMYpIWIxSicKLj4N_gZu4eXpmXogCCNrwpJVGZVqwhUaKJm2NwuQhrmEPolP2FV7_J8FgtbLVylJiWcbV6pebfAgCQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e4f61451-a26b-4224-a5d8-2f00c7108198", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/fed263ac4f9f46f1a013605e439e9c95\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vxiLUvR99uXF2PBRhz1DIxZtGZm1UeIb2hhybQcCjq8RSIh1y0v154mOjfZDtUGG8zC9gpuqIosQBYThuzffaJ9uPgDBYFnqXdv7KmRNLRyIM2XSpsfHdfpVPnYH98TFYXKn90qYGJdFN_b0oJmJ54Kamenr5srF7lrtVmoFZWTK_7QEY_OKVTpZYUoDID0hbs48ISfqNE-UBJi2U8cLGDn7QD2nwDtADE49i2h7HF2QuOcEf8uATwq1VN4eWTrPQfVBid9tGYc5mlDr9x3a7u8DxzMYSJq-0XKgcwnkAmAFNxHIpkUrVZq8Gq6Y_g6sFN11rbxvES2JIX1jYiZfqQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955917,\"updated\":1529955917,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:31 GMT", + "date" : "Mon, 25 Jun 2018 19:45:20 GMT", "content-length" : "665", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "85a54331-de7e-4187-8b39-9ca139b1b87c", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/a6cd265ac5a5419ea54f95f1785dead9\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"4NrxdkWWoqinWpYcymvzfAtR6kQE_EtI4MxnHMLZH2R-o9xRey_rB2BuBLm01C40PKm7hKVB_yUHwGnw-pnFTGZO0YmeItBjhBfysynYV3Tn-dqMGpVXu1KtKMaxQTXbU8TW0Tr_5C_Gfm6QOc5aN3FNUCPLTS07CWGohpV4KYHW4K3YXfVav3W4plaGbSZVDBd-bnPyPmF6XL8qon_pd-vJo4-GQ3weIUT3tHUz6KLd5Dobda7PXZ5mc-9vNspP4wxNvBdhD9ZQoko3K8Yk9fUTf6ykiMm6kn72jZvylnBCxB_Z5-bgPYD2VrMh9fPM5neDKccM6y7Xtvhx_Zcetw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539412,\"updated\":1520539412,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6710e60b-4a18-437f-a7d8-bf33f9239f3b", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/f2eeb783813846a892ea08ddb15d9b4f\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"2Og5QpSCcphZ5NuiO8hTPcdrsxOXvin3Pwvq7agQdRK1_oWC2dY9rDMdX7nOO_8a-m6V-E1xmuir3v4hvLkF8eVvN1VusFIUmAnMXOUUMeAybyx9GIplXte8yyJqLMBcGyS13X_0rA6JSFdH8o-8ksoSqqz5A0elLQeY1iVCaCn96I0xPCXJvveETTg64k8bI2njv5_E4IvYWfZfc_3dHUgqidWS4SI46QywQACEoxApDcnz824rbZZX1LhYST55x1KdhN53RfFVEIzG6u6m26UFmJFEF6DTOCcZ-vVQZ8STnz4Dg9rQVQN6xnnjng-09DDJ5FS-kxKveAxs6NZtZQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955921,\"updated\":1529955921,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?maxresults=3&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?maxresults=3&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:31 GMT", - "content-length" : "302", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:21 GMT", + "content-length" : "294", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1e1e69e0-7691-48e1-b361-328ba2ccc978", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "97b16305-0ec2-453a-86a7-6cc7a209584b", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlEVWtWQlZFVlVSVk5VU2tGV1FWQkZUU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:32 GMT", - "content-length" : "286", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:23 GMT", + "content-length" : "294", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "23b1d395-4038-406c-a5e3-f2954d4520fb", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElXdGxlUzlLUVZaQlMwVlpJVEF3TURBeU9DRXlNREU0TFRBekxUQTRWREU0T2pBNU9qVXlMakE0T0RFMU56bGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bce81807-780a-4d1e-9b52-4d6f442b1f77", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlLUVZaQlJWaFVSVTVUU1U5T1MwVlpNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeElXdGxlUzlLUVZaQlMwVlpJVEF3TURBeU9DRXlNREU0TFRBekxUQTRWREU0T2pBNU9qVXlMakE0T0RFMU56bGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElXdGxlUzlLUVZaQlJWaFVSVTVUU1U5T1MwVlpNU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:32 GMT", - "content-length" : "833", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:25 GMT", + "content-length" : "825", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7f598596-9261-47f3-bbcd-babff53b5909", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey\",\"attributes\":{\"enabled\":true,\"created\":1520539409,\"updated\":1520539409,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0\",\"attributes\":{\"enabled\":true,\"created\":1520539410,\"updated\":1520539410,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1\",\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeUlXdGxlUzlLUVZaQlMwVlpNaUV3TURBd01qZ2hNakF4T0Mwd015MHdPRlF4T0RveE1Ub3pNUzR3TnpZME1qQTBXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "621e2f6a-33ed-4b84-a75f-b8b74a0ef6b5", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey\",\"attributes\":{\"enabled\":true,\"created\":1529955901,\"updated\":1529955901,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0\",\"attributes\":{\"enabled\":true,\"created\":1529955914,\"updated\":1529955914,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1\",\"attributes\":{\"enabled\":true,\"created\":1529955915,\"updated\":1529955915,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeUlXdGxlUzlLUVZaQlMwVlpNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeUlXdGxlUzlLUVZaQlMwVlpNaUV3TURBd01qZ2hNakF4T0Mwd015MHdPRlF4T0RveE1Ub3pNUzR3TnpZME1qQTBXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3NiFNREF3TURFeUlXdGxlUzlLUVZaQlMwVlpNaUV3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:32 GMT", - "content-length" : "667", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:27 GMT", + "content-length" : "659", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "35d65881-9cf8-4886-acbc-7d524b555af1", - "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2\",\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3\",\"attributes\":{\"enabled\":true,\"created\":1520539412,\"updated\":1520539412,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b5426136-ba16-4a16-9236-8054b30d35c0", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2\",\"attributes\":{\"enabled\":true,\"created\":1529955917,\"updated\":1529955917,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3\",\"attributes\":{\"enabled\":true,\"created\":1529955921,\"updated\":1529955921,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVXhJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:33 GMT", - "content-length" : "313", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:28 GMT", + "content-length" : "305", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3da3112b-e51c-4e10-9e0e-57f747309f17", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVldSVkpUU1U5T1V5RXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8ffb4f19-a650-4440-9c0c-ad71f4d82cb6", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVldSVkpUU1U5T1V5RXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVldSVkpUU1U5T1V5RXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lXdGxlUzlNU1ZOVVEwVlNWRWxHU1VOQlZFVldSVkpUU1U5T1V5RXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:33 GMT", - "content-length" : "297", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:32 GMT", + "content-length" : "456", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "986a0781-3814-4f35-9b38-356e35fd4260", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElXdGxlUzlWVUVSQlZFVkRSVkpVU2tGV1FTRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "020c27b7-afe6-44cb-9126-4801598f7dcc", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2\",\"attributes\":{\"enabled\":true,\"created\":1528498195,\"updated\":1528498195,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lXdGxlUzlRVTFOTFJWa2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElXdGxlUzlWVUVSQlZFVkRSVkpVU2tGV1FTRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lXdGxlUzlRVTFOTFJWa2hNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:33 GMT", - "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:45:34 GMT", + "content-length" : "208", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,23 +316,132 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5dd9b663-1127-4e9c-9a9d-1a38d51fdec6", - "Body" : "{\"value\":[],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "41791ae9-3e26-463d-956d-dc34c6059bc3", + "Body" : "{\"value\":[{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey\",\"attributes\":{\"enabled\":true,\"created\":1528324427,\"updated\":1528324427,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:33 GMT", + "date" : "Mon, 25 Jun 2018 19:45:36 GMT", + "content-length" : "801", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "200", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "91db84d6-b4aa-4698-bc36-6708c9b37924", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey\",\"deletedDate\":1529955936,\"scheduledPurgeDate\":1537731936,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey/4afd2d81a8414c569054b7945534e053\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1528324427,\"updated\":1528324427,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:45:40 GMT", + "content-length" : "74", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c32bde51-8134-4d3b-a7c1-9259b58187e6", + "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: psskey\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:45:52 GMT", + "content-length" : "74", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "70bfcef4-7618-4912-82ec-bdcd5812a366", + "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: psskey\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:46:04 GMT", + "content-length" : "801", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "200", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a4b2c4a9-eb21-44ec-9f37-2bf252e2d522", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey\",\"deletedDate\":1529955936,\"scheduledPurgeDate\":1537731936,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey/4afd2d81a8414c569054b7945534e053\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1528324427,\"updated\":1528324427,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + } + }, { + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:46:05 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -331,23 +451,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ba58ba03-075f-4e2d-90df-9c5a947b7156", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1520539414,\"scheduledPurgeDate\":1528315414,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/a6cd265ac5a5419ea54f95f1785dead9\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"4NrxdkWWoqinWpYcymvzfAtR6kQE_EtI4MxnHMLZH2R-o9xRey_rB2BuBLm01C40PKm7hKVB_yUHwGnw-pnFTGZO0YmeItBjhBfysynYV3Tn-dqMGpVXu1KtKMaxQTXbU8TW0Tr_5C_Gfm6QOc5aN3FNUCPLTS07CWGohpV4KYHW4K3YXfVav3W4plaGbSZVDBd-bnPyPmF6XL8qon_pd-vJo4-GQ3weIUT3tHUz6KLd5Dobda7PXZ5mc-9vNspP4wxNvBdhD9ZQoko3K8Yk9fUTf6ykiMm6kn72jZvylnBCxB_Z5-bgPYD2VrMh9fPM5neDKccM6y7Xtvhx_Zcetw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539412,\"updated\":1520539412,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "496d7312-22dc-4099-8a0e-b5b247d80780", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1529955965,\"scheduledPurgeDate\":1537731965,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/f2eeb783813846a892ea08ddb15d9b4f\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"2Og5QpSCcphZ5NuiO8hTPcdrsxOXvin3Pwvq7agQdRK1_oWC2dY9rDMdX7nOO_8a-m6V-E1xmuir3v4hvLkF8eVvN1VusFIUmAnMXOUUMeAybyx9GIplXte8yyJqLMBcGyS13X_0rA6JSFdH8o-8ksoSqqz5A0elLQeY1iVCaCn96I0xPCXJvveETTg64k8bI2njv5_E4IvYWfZfc_3dHUgqidWS4SI46QywQACEoxApDcnz824rbZZX1LhYST55x1KdhN53RfFVEIzG6u6m26UFmJFEF6DTOCcZ-vVQZ8STnz4Dg9rQVQN6xnnjng-09DDJ5FS-kxKveAxs6NZtZQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955921,\"updated\":1529955921,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:34 GMT", + "date" : "Mon, 25 Jun 2018 19:46:07 GMT", "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -357,23 +478,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e1148392-1458-401b-a1e5-0881bdf6ca11", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2f80e2b5-0e5e-473b-bf61-6017bc2f8ccc", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey3\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:44 GMT", + "date" : "Mon, 25 Jun 2018 19:46:19 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -383,23 +505,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "30910674-685c-440b-86db-efaac9e343cf", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1520539414,\"scheduledPurgeDate\":1528315414,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/a6cd265ac5a5419ea54f95f1785dead9\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"4NrxdkWWoqinWpYcymvzfAtR6kQE_EtI4MxnHMLZH2R-o9xRey_rB2BuBLm01C40PKm7hKVB_yUHwGnw-pnFTGZO0YmeItBjhBfysynYV3Tn-dqMGpVXu1KtKMaxQTXbU8TW0Tr_5C_Gfm6QOc5aN3FNUCPLTS07CWGohpV4KYHW4K3YXfVav3W4plaGbSZVDBd-bnPyPmF6XL8qon_pd-vJo4-GQ3weIUT3tHUz6KLd5Dobda7PXZ5mc-9vNspP4wxNvBdhD9ZQoko3K8Yk9fUTf6ykiMm6kn72jZvylnBCxB_Z5-bgPYD2VrMh9fPM5neDKccM6y7Xtvhx_Zcetw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539412,\"updated\":1520539412,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8014cb84-809d-4c19-8a66-fc238b4bcce4", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1529955965,\"scheduledPurgeDate\":1537731965,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3/f2eeb783813846a892ea08ddb15d9b4f\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"2Og5QpSCcphZ5NuiO8hTPcdrsxOXvin3Pwvq7agQdRK1_oWC2dY9rDMdX7nOO_8a-m6V-E1xmuir3v4hvLkF8eVvN1VusFIUmAnMXOUUMeAybyx9GIplXte8yyJqLMBcGyS13X_0rA6JSFdH8o-8ksoSqqz5A0elLQeY1iVCaCn96I0xPCXJvveETTg64k8bI2njv5_E4IvYWfZfc_3dHUgqidWS4SI46QywQACEoxApDcnz824rbZZX1LhYST55x1KdhN53RfFVEIzG6u6m26UFmJFEF6DTOCcZ-vVQZ8STnz4Dg9rQVQN6xnnjng-09DDJ5FS-kxKveAxs6NZtZQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955921,\"updated\":1529955921,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:45 GMT", + "date" : "Mon, 25 Jun 2018 19:46:22 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -409,23 +532,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "1f8dbaa8-becd-458b-be54-0ca3aed83e0c", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1520539425,\"scheduledPurgeDate\":1528315425,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/e7115054531641c8bfc681bb64d541fb\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tVUGo1OWaGDYvRbPMmfcg2xYEF_QcI7KXUnjKbK0tQjDh6IV634DAclf5d9vZwtskM-a0Ea8NSBcbTzXSnfBx9AKtLTTEgevNwBOtSXmAOByB4i1r6ojGjI27BiYmt1lXcqo3IjfILHlArixlnCsb4-Sdptd4ZJn8n_EMYj9JTxvtG6B2S7dmoN2bmvNQewgmq6TPKPUxjWJxE98MNBnDX5Q1Zan02emnEku4HBmRCgijsdqfVzvrC8u6yHbrMYpIWIxSicKLj4N_gZu4eXpmXogCCNrwpJVGZVqwhUaKJm2NwuQhrmEPolP2FV7_J8FgtbLVylJiWcbV6pebfAgCQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b020fb71-4421-4b21-a7d9-dac8bfb8b307", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1529955983,\"scheduledPurgeDate\":1537731983,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/fed263ac4f9f46f1a013605e439e9c95\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vxiLUvR99uXF2PBRhz1DIxZtGZm1UeIb2hhybQcCjq8RSIh1y0v154mOjfZDtUGG8zC9gpuqIosQBYThuzffaJ9uPgDBYFnqXdv7KmRNLRyIM2XSpsfHdfpVPnYH98TFYXKn90qYGJdFN_b0oJmJ54Kamenr5srF7lrtVmoFZWTK_7QEY_OKVTpZYUoDID0hbs48ISfqNE-UBJi2U8cLGDn7QD2nwDtADE49i2h7HF2QuOcEf8uATwq1VN4eWTrPQfVBid9tGYc5mlDr9x3a7u8DxzMYSJq-0XKgcwnkAmAFNxHIpkUrVZq8Gq6Y_g6sFN11rbxvES2JIX1jYiZfqQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955917,\"updated\":1529955917,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:45 GMT", + "date" : "Mon, 25 Jun 2018 19:46:24 GMT", "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -435,23 +559,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "059f4101-9402-40da-9ad4-ff0df92104a4", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4cb7be57-4534-4791-816b-243e973a503f", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey2\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:03:54 GMT", + "date" : "Mon, 25 Jun 2018 19:46:36 GMT", "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -461,23 +586,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "834a967a-22b2-4c96-826f-210f74b3d47f", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7b0edd5b-4e5c-4dca-94d3-bc2e87e5f02f", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey2\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:05 GMT", + "date" : "Mon, 25 Jun 2018 19:46:49 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -487,23 +613,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d99bd148-7273-4754-9787-672fb55823b6", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1520539425,\"scheduledPurgeDate\":1528315425,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/e7115054531641c8bfc681bb64d541fb\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"tVUGo1OWaGDYvRbPMmfcg2xYEF_QcI7KXUnjKbK0tQjDh6IV634DAclf5d9vZwtskM-a0Ea8NSBcbTzXSnfBx9AKtLTTEgevNwBOtSXmAOByB4i1r6ojGjI27BiYmt1lXcqo3IjfILHlArixlnCsb4-Sdptd4ZJn8n_EMYj9JTxvtG6B2S7dmoN2bmvNQewgmq6TPKPUxjWJxE98MNBnDX5Q1Zan02emnEku4HBmRCgijsdqfVzvrC8u6yHbrMYpIWIxSicKLj4N_gZu4eXpmXogCCNrwpJVGZVqwhUaKJm2NwuQhrmEPolP2FV7_J8FgtbLVylJiWcbV6pebfAgCQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "905a1fb9-6a24-4640-b37d-f7cedda78aec", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1529955983,\"scheduledPurgeDate\":1537731983,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2/fed263ac4f9f46f1a013605e439e9c95\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"vxiLUvR99uXF2PBRhz1DIxZtGZm1UeIb2hhybQcCjq8RSIh1y0v154mOjfZDtUGG8zC9gpuqIosQBYThuzffaJ9uPgDBYFnqXdv7KmRNLRyIM2XSpsfHdfpVPnYH98TFYXKn90qYGJdFN_b0oJmJ54Kamenr5srF7lrtVmoFZWTK_7QEY_OKVTpZYUoDID0hbs48ISfqNE-UBJi2U8cLGDn7QD2nwDtADE49i2h7HF2QuOcEf8uATwq1VN4eWTrPQfVBid9tGYc5mlDr9x3a7u8DxzMYSJq-0XKgcwnkAmAFNxHIpkUrVZq8Gq6Y_g6sFN11rbxvES2JIX1jYiZfqQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955917,\"updated\":1529955917,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:05 GMT", + "date" : "Mon, 25 Jun 2018 19:46:51 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -513,23 +640,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bf6d09ac-2b4c-4a7c-bc83-b9aa09b78987", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539446,\"scheduledPurgeDate\":1528315446,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539409,\"updated\":1520539409,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b3bd2660-2085-4e3b-afa0-50e5c84f7558", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956011,\"scheduledPurgeDate\":1537732011,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955901,\"updated\":1529955901,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:05 GMT", + "date" : "Mon, 25 Jun 2018 19:46:52 GMT", "content-length" : "75", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -539,23 +667,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "25b0c3e1-de99-41f8-96bf-210c95bf8dde", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "dc6be061-e837-4270-887b-ec0c0627c466", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:15 GMT", + "date" : "Mon, 25 Jun 2018 19:47:03 GMT", "content-length" : "803", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -565,23 +694,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "279eb6f3-eddd-48a8-8dee-ea940ef6fc06", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539446,\"scheduledPurgeDate\":1528315446,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/ca70659367d84f4d8f62c4281869a54b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539409,\"updated\":1520539409,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "79fc36cb-4101-47d6-846e-7c29d3d99dab", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956011,\"scheduledPurgeDate\":1537732011,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/336e2905d0cd43ce9e10dfe3db55fc45\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955901,\"updated\":1529955901,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:16 GMT", + "date" : "Mon, 25 Jun 2018 19:47:06 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -591,23 +721,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f606b5e5-dacd-4491-8826-1b225635f50c", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1520539456,\"scheduledPurgeDate\":1528315456,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/77bf62c6fe364bb1b17865306fc6343b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jwjr_29snJXJl_rv1FTBklzTzQbGMbb4IgbuVlQwG2J7BBuoa_7qwHmI2d9-avdkE3yYSBXUmGdfvEKXDSPi-JbLNfYChravw4BpBWS3DlFp6QWGx4XPL7ArasoqOBdx15De2ucRAboufNq6t4cJ9ZFypLjOzWG6EKHDNqYNYq3Htacw97mZO5U3nez0aylcXwqSIR42nIBVEDebRPP5S8xpOp1QDCeVDSdxwnH_S_iv6Z7eF9Ub_58mUU0SZlE4bWCu3LJBHQWly9Gsy_0ASKwcSSNE9jxDKS2BJyWnonXfawzDealBJEUoAWGSKKw4OhYtELxJiNv-9HRon_56lQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "55c81627-5e07-43fc-b3a8-172742c4632d", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1529956026,\"scheduledPurgeDate\":1537732026,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/4df00d400ab2401385ceb5a232ad4811\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jC3MGXY_VawDhysKwB0cgbt4dYWK8URxwcpsmHnYDpds_b8QY_DcnTtIVPt_yIqIvFBA8T_D4RhX3Iisk1tK_tIF4mpF89Uv62VstOpvQ_UkDsEcGD3bZ5Ovkek_zKaM6bBJT3KHHQSoMsVx6d2waGQUdnO-MtFwNcZqkQYw6JWSrCbecR6QfFSqC3y2avqkRxbEhNqWB27cY970Ts3CSc2VbuYTpouk_VcnKYp3eAK8iAAwVjbm1Sl5ocXLspzLsvPtrpxK_5wyCDbHMUQERTIr8jjA2_9ZFNxwUtckM9fj7hv4S4qfmm6HaOY1IVDDg2tiwvS5ixPX4cIXm4bU6Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955915,\"updated\":1529955915,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:16 GMT", + "date" : "Mon, 25 Jun 2018 19:47:08 GMT", "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -617,49 +748,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "01a235c5-ade2-4c31-a6a5-1af918887943", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e63f7643-4971-4c39-88c5-15b291f7a267", "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey1\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:26 GMT", - "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:18 GMT", + "content-length" : "805", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", - "StatusCode" : "404", + "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f434c6cc-254c-46cd-a800-bde2d8644db5", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey1\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "bdfa8ad4-945f-4741-8139-2c5f30b5ea74", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1529956026,\"scheduledPurgeDate\":1537732026,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/4df00d400ab2401385ceb5a232ad4811\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jC3MGXY_VawDhysKwB0cgbt4dYWK8URxwcpsmHnYDpds_b8QY_DcnTtIVPt_yIqIvFBA8T_D4RhX3Iisk1tK_tIF4mpF89Uv62VstOpvQ_UkDsEcGD3bZ5Ovkek_zKaM6bBJT3KHHQSoMsVx6d2waGQUdnO-MtFwNcZqkQYw6JWSrCbecR6QfFSqC3y2avqkRxbEhNqWB27cY970Ts3CSc2VbuYTpouk_VcnKYp3eAK8iAAwVjbm1Sl5ocXLspzLsvPtrpxK_5wyCDbHMUQERTIr8jjA2_9ZFNxwUtckM9fj7hv4S4qfmm6HaOY1IVDDg2tiwvS5ixPX4cIXm4bU6Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955915,\"updated\":1529955915,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0-preview", + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:38 GMT", + "date" : "Mon, 25 Jun 2018 19:47:20 GMT", "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -669,101 +802,105 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bab3abe0-9029-4810-9f3e-68ce3f1c6993", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1520539456,\"scheduledPurgeDate\":1528315456,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1/77bf62c6fe364bb1b17865306fc6343b\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"jwjr_29snJXJl_rv1FTBklzTzQbGMbb4IgbuVlQwG2J7BBuoa_7qwHmI2d9-avdkE3yYSBXUmGdfvEKXDSPi-JbLNfYChravw4BpBWS3DlFp6QWGx4XPL7ArasoqOBdx15De2ucRAboufNq6t4cJ9ZFypLjOzWG6EKHDNqYNYq3Htacw97mZO5U3nez0aylcXwqSIR42nIBVEDebRPP5S8xpOp1QDCeVDSdxwnH_S_iv6Z7eF9Ub_58mUU0SZlE4bWCu3LJBHQWly9Gsy_0ASKwcSSNE9jxDKS2BJyWnonXfawzDealBJEUoAWGSKKw4OhYtELxJiNv-9HRon_56lQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e839784b-9867-4121-92f3-b8fe1c470e20", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1529956040,\"scheduledPurgeDate\":1537732040,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/a2ca8d3a34754bcfac4482a6e93a2c89\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"ua_AoKdqySiDmuhDzKLEG_rjn93eATGx_iMA4VvUoIhW1fh-BiJdl842pyYcPJ5WhvSMP-hokvUwN9nNbD87SgXKjlfMsDPeZE1R5B3c8lmiNaANt3I5hjiK-KINvFvmkGn_Ck0ta4OOxryqIB9RKpO2Ovodpf628YlynDJeIZnrWRcIC--ImvP5OVUnS2G38DeONa3oaCIGxnDFJnTZq8WSwLWEBd-EhOUB0WdRqrsWMl0algCBazGdU094AsoptYdtVv8AxZjTSXAO1gX0Ug3wVGGvckG5EgO-XeMH3L1lbT1WRnuhWpUPXbjdARoc95f_OLh-xrOVH6AQ8t6mvw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955914,\"updated\":1529955914,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { - "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0?api-version=7.0-preview", + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:38 GMT", - "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:23 GMT", + "content-length" : "76", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", - "StatusCode" : "200", + "StatusCode" : "404", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e3ad6ea3-058e-4697-b6ea-ef85fd870fe0", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1520539478,\"scheduledPurgeDate\":1528315478,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/8ff45eeb5b724c5ba7829e3961649b92\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uwZTLp2MkPH4Sn1FlHolkrbjR5ufM7yqggYKBdsTSqDoDZjyjdUj4ed_8k64q8X9aEgVi-94pXMuJ4XNWAfcKvsqONNsIBkhP2uhQOuk1CLovVbZ153jAM5Ab1ENwXgNZxr_aSJoFjatjK2Xibgb9BHUI2r_NAq1YJMZFQdi8e1LpISCp_I9kujN0Eh0VfPxAuNrPXOLV1mqm7MiNa1M1uL_UuZ5zEA9zjuuuT1i7tCG42rZmVUoLkGeJyBTPGmuCwlxj4p5SxBQheC-MIGOkQ6ynwTI5QezIXsLckCGyBt-RKkzI3o9smGD0ZmLWQzuj0buOcpPK_JNSMOJQRRnsw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539410,\"updated\":1520539410,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f03b6084-e94f-475f-ac1e-3562377f206c", + "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey0\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:38 GMT", - "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:36 GMT", + "content-length" : "805", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", - "StatusCode" : "404", + "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ae0ef430-d40c-410f-b375-fd43bbf52be2", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey0\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b894f0aa-dfd1-48be-850a-2b1fc7d4e8a5", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1529956040,\"scheduledPurgeDate\":1537732040,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/a2ca8d3a34754bcfac4482a6e93a2c89\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"ua_AoKdqySiDmuhDzKLEG_rjn93eATGx_iMA4VvUoIhW1fh-BiJdl842pyYcPJ5WhvSMP-hokvUwN9nNbD87SgXKjlfMsDPeZE1R5B3c8lmiNaANt3I5hjiK-KINvFvmkGn_Ck0ta4OOxryqIB9RKpO2Ovodpf628YlynDJeIZnrWRcIC--ImvP5OVUnS2G38DeONa3oaCIGxnDFJnTZq8WSwLWEBd-EhOUB0WdRqrsWMl0algCBazGdU094AsoptYdtVv8AxZjTSXAO1gX0Ug3wVGGvckG5EgO-XeMH3L1lbT1WRnuhWpUPXbjdARoc95f_OLh-xrOVH6AQ8t6mvw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955914,\"updated\":1529955914,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0-preview", + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:48 GMT", - "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:38 GMT", + "content-length" : "807", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", - "StatusCode" : "404", + "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d13f66e4-630e-4ea2-bdec-280c32dbb79a", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey0\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "123340bd-b924-4fae-9778-95b4b56165c9", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2\",\"deletedDate\":1529956058,\"scheduledPurgeDate\":1537732058,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2/47041a5e3b994e4b9db708d6352408d0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1528498195,\"updated\":1528498195,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:04:58 GMT", - "content-length" : "76", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:38 GMT", + "content-length" : "77", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -773,23 +910,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "33bc3d13-33bf-4431-a329-f8a0ec253b93", - "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: javaKey0\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d86c3bfe-1403-4013-8d3a-7eec7b69c180", + "Body" : "{\"error\":{\"code\":\"KeyNotFound\",\"message\":\"Deleted Key not found: otherkey2\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:05:08 GMT", - "content-length" : "805", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:49 GMT", + "content-length" : "807", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -799,23 +937,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "77568839-d7e6-4270-a445-218f8a198457", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1520539478,\"scheduledPurgeDate\":1528315478,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0/8ff45eeb5b724c5ba7829e3961649b92\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"uwZTLp2MkPH4Sn1FlHolkrbjR5ufM7yqggYKBdsTSqDoDZjyjdUj4ed_8k64q8X9aEgVi-94pXMuJ4XNWAfcKvsqONNsIBkhP2uhQOuk1CLovVbZ153jAM5Ab1ENwXgNZxr_aSJoFjatjK2Xibgb9BHUI2r_NAq1YJMZFQdi8e1LpISCp_I9kujN0Eh0VfPxAuNrPXOLV1mqm7MiNa1M1uL_UuZ5zEA9zjuuuT1i7tCG42rZmVUoLkGeJyBTPGmuCwlxj4p5SxBQheC-MIGOkQ6ynwTI5QezIXsLckCGyBt-RKkzI3o9smGD0ZmLWQzuj0buOcpPK_JNSMOJQRRnsw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539410,\"updated\":1520539410,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3729a2d0-d600-4ddc-9702-da075acff800", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2\",\"deletedDate\":1529956058,\"scheduledPurgeDate\":1537732058,\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2/47041a5e3b994e4b9db708d6352408d0\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1528498195,\"updated\":1528498195,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:05:08 GMT", - "content-length" : "1968", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:53 GMT", + "content-length" : "1960", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -825,23 +964,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0c2196f3-5677-4644-a9a9-d529b08ec55d", - "Body" : "{\"value\":[{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1520539446,\"scheduledPurgeDate\":1528315446,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey\",\"attributes\":{\"enabled\":true,\"created\":1520539409,\"updated\":1520539409,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1520539478,\"scheduledPurgeDate\":1528315478,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0\",\"attributes\":{\"enabled\":true,\"created\":1520539410,\"updated\":1520539410,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1520539456,\"scheduledPurgeDate\":1528315456,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1\",\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1520539425,\"scheduledPurgeDate\":1528315425,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2\",\"attributes\":{\"enabled\":true,\"created\":1520539411,\"updated\":1520539411,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1520539414,\"scheduledPurgeDate\":1528315414,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3\",\"attributes\":{\"enabled\":true,\"created\":1520539412,\"updated\":1520539412,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/deletedkeys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzIhTURBd01EVXpJV3RsZVM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4THpBd01USTROa0ZDUVVJelJUUkROVFZCT0VaQ1FVSTNOVVF3TURaRlJqTkNJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "18aa00d7-e70c-468e-ad94-f48ee92eaeeb", + "Body" : "{\"value\":[{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey\",\"deletedDate\":1529956011,\"scheduledPurgeDate\":1537732011,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey\",\"attributes\":{\"enabled\":true,\"created\":1529955901,\"updated\":1529955901,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0\",\"deletedDate\":1529956040,\"scheduledPurgeDate\":1537732040,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey0\",\"attributes\":{\"enabled\":true,\"created\":1529955914,\"updated\":1529955914,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1\",\"deletedDate\":1529956026,\"scheduledPurgeDate\":1537732026,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey1\",\"attributes\":{\"enabled\":true,\"created\":1529955915,\"updated\":1529955915,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2\",\"deletedDate\":1529955983,\"scheduledPurgeDate\":1537731983,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey2\",\"attributes\":{\"enabled\":true,\"created\":1529955917,\"updated\":1529955917,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3\",\"deletedDate\":1529955965,\"scheduledPurgeDate\":1537731965,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey3\",\"attributes\":{\"enabled\":true,\"created\":1529955921,\"updated\":1529955921,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzIhTURBd01EVXpJV3RsZVM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4THpBd01USTROa0ZDUVVJelJUUkROVFZCT0VaQ1FVSTNOVVF3TURaRlJqTkNJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzIhTURBd01EVXpJV3RsZVM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4THpBd01USTROa0ZDUVVJelJUUkROVFZCT0VaQ1FVSTNOVVF3TURaRlJqTkNJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzIhTURBd01EVXpJV3RsZVM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4THpBd01USTROa0ZDUVVJelJUUkROVFZCT0VaQ1FVSTNOVVF3TURaRlJqTkNJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:05:10 GMT", - "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:47:55 GMT", + "content-length" : "671", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -851,22 +991,73 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "97f0cf15-fe18-4277-8e65-197d86da8e7a", + "Body" : "{\"value\":[{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2\",\"deletedDate\":1529956058,\"scheduledPurgeDate\":1537732058,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/otherkey2\",\"attributes\":{\"enabled\":true,\"created\":1528498195,\"updated\":1528498195,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey\",\"deletedDate\":1529955936,\"scheduledPurgeDate\":1537731936,\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/psskey\",\"attributes\":{\"enabled\":true,\"created\":1528324427,\"updated\":1528324427,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + } + }, { + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:47:56 GMT", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "204", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1be5ffd8-958d-40bf-9347-ec0b2becb327", + "Body" : "" + } + }, { + "Method" : "DELETE", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 19:48:40 GMT", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "204", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "cb9dc4dd-e395-4ec1-9988-4e06933d7732", - "Body" : "{\"value\":[],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3b0e224d-4954-494e-bc3f-e02563a91b86", + "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:05:10 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:49:21 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -875,22 +1066,23 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "66eb6f82-5cc4-497b-9421-c5db41d62d9c", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2dc3a062-d8c8-40b0-b5c6-94051a98e086", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:05:50 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:50:03 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -899,22 +1091,23 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b1e1b942-9083-40fe-ada0-09819fe519ad", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1673f2ed-a351-42f0-b7e2-7b6faf624c6c", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:06:30 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:50:44 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -923,22 +1116,23 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b71fbbbb-7cad-4bde-b3e3-64e97c41d05b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "74452134-e090-4b61-b7fc-080f587be6a8", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/otherkey2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:07:10 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:51:27 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -947,22 +1141,23 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "2f9e5175-e8a1-453a-ab87-7079244653e2", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9063a352-98ee-4061-ad71-aebfac69d7e3", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/javaKey3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedkeys/psskey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:07:50 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:52:10 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -971,10 +1166,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "69d9ed27-1245-4c18-b489-595b811fbc86", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "06671cf4-5358-4422-a5fc-1b6e8b3ec191", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listSecretVersionsForSecretOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listSecretVersionsForSecretOperationsTest.json index c98d187..cb2280b 100644 --- a/azure-keyvault/target/test-classes/session-records/listSecretVersionsForSecretOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listSecretVersionsForSecretOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:34 GMT", + "date" : "Mon, 25 Jun 2018 20:06:08 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3799259a-a6de-4855-a0f0-976f7f22dea5", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2c75824c-371f-41e8-8e9a-5ec01cf40195", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:34 GMT", + "date" : "Mon, 25 Jun 2018 20:06:15 GMT", "content-length" : "283", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "344aa329-bd0f-4b35-bce1-62cbb6f58a24", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/2bc763686e9443e782f3679363166840\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2c458d79-6a32-4ede-b731-addbc052b5d2", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/41754735bad946d692a24dcadbf12db0\",\"attributes\":{\"enabled\":true,\"created\":1529957175,\"updated\":1529957175,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:34 GMT", + "date" : "Mon, 25 Jun 2018 20:06:16 GMT", "content-length" : "283", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d771a188-143a-483a-bc07-9dfe51881ada", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/8cc93a20ea6641058ddb8a1af2bd0182\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4c56ef30-a14e-47a4-a7ed-b1ed0b764569", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/bcae35f5a9f1438cbc64bcd2bc77548e\",\"attributes\":{\"enabled\":true,\"created\":1529957177,\"updated\":1529957177,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:35 GMT", + "date" : "Mon, 25 Jun 2018 20:06:20 GMT", "content-length" : "283", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b5b450a0-830b-4b16-9a93-04dde616292f", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/95a82b1ccd9f488f9d93e6a1cf8aaefc\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ef7a0d7e-20e9-4d1a-a6b6-6bc2efb966bd", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/719fe46020d447a9a0e0541c97adc73b\",\"attributes\":{\"enabled\":true,\"created\":1529957181,\"updated\":1529957181,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:35 GMT", + "date" : "Mon, 25 Jun 2018 20:06:23 GMT", "content-length" : "283", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c61e30f9-a861-4542-88c8-3e0131b79c0d", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/dec33b0b90ca47a3bc5e685922624826\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "96c66816-0089-42ca-8df7-d43aa30475e1", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/013abcff50844ef9ab448331a98d7b31\",\"attributes\":{\"enabled\":true,\"created\":1529957183,\"updated\":1529957183,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?maxresults=3&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?maxresults=3&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:35 GMT", - "content-length" : "1082", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:06:23 GMT", + "content-length" : "1074", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ddabe402-60bc-49a2-b1b7-c493cdf6ed2b", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/2bc763686e9443e782f3679363166840\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/8cc93a20ea6641058ddb8a1af2bd0182\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/95a82b1ccd9f488f9d93e6a1cf8aaefc\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets/javaSecretVersions/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJWE5sWTNKbGRDOUtRVlpCVTBWRFVrVlVWa1ZTVTBsUFRsTXZSRVZETXpOQ01FSTVNRU5CTkRkQk0wSkROVVUyT0RVNU1qSTJNalE0TWpZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5965ad6c-f5ab-467e-a663-a89892f5905e", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/013abcff50844ef9ab448331a98d7b31\",\"attributes\":{\"enabled\":true,\"created\":1529957183,\"updated\":1529957183,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/41754735bad946d692a24dcadbf12db0\",\"attributes\":{\"enabled\":true,\"created\":1529957175,\"updated\":1529957175,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/719fe46020d447a9a0e0541c97adc73b\",\"attributes\":{\"enabled\":true,\"created\":1529957181,\"updated\":1529957181,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets/javaSecretVersions/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJWE5sWTNKbGRDOUtRVlpCVTBWRFVrVlVWa1ZTVTBsUFRsTXZRa05CUlRNMVJqVkJPVVl4TkRNNFEwSkROalJDUTBReVFrTTNOelUwT0VVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJWE5sWTNKbGRDOUtRVlpCVTBWRFVrVlVWa1ZTVTBsUFRsTXZSRVZETXpOQ01FSTVNRU5CTkRkQk0wSkROVVUyT0RVNU1qSTJNalE0TWpZaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMzYhTURBd01EVTRJWE5sWTNKbGRDOUtRVlpCVTBWRFVrVlVWa1ZTVTBsUFRsTXZRa05CUlRNMVJqVkJPVVl4TkRNNFEwSkROalJDUTBReVFrTTNOelUwT0VVaE1EQXdNREk0SVRrNU9Ua3RNVEl0TXpGVU1qTTZOVGs2TlRrdU9UazVPVGs1T1ZvaCIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:35 GMT", + "date" : "Mon, 25 Jun 2018 20:06:24 GMT", "content-length" : "255", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e8dd51d1-904b-43ee-b2e1-df615df852ed", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/dec33b0b90ca47a3bc5e685922624826\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "08493c54-f278-4c63-879d-9f52a3030027", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/bcae35f5a9f1438cbc64bcd2bc77548e\",\"attributes\":{\"enabled\":true,\"created\":1529957177,\"updated\":1529957177,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/versions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:35 GMT", + "date" : "Mon, 25 Jun 2018 20:06:25 GMT", "content-length" : "939", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fd01bbd6-b4f6-450e-8541-bf7fa602f43d", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/2bc763686e9443e782f3679363166840\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/8cc93a20ea6641058ddb8a1af2bd0182\",\"attributes\":{\"enabled\":true,\"created\":1520540254,\"updated\":1520540254,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/95a82b1ccd9f488f9d93e6a1cf8aaefc\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/dec33b0b90ca47a3bc5e685922624826\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "63aa7584-6c4c-47c6-90ae-dae8d9246e98", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/013abcff50844ef9ab448331a98d7b31\",\"attributes\":{\"enabled\":true,\"created\":1529957183,\"updated\":1529957183,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/41754735bad946d692a24dcadbf12db0\",\"attributes\":{\"enabled\":true,\"created\":1529957175,\"updated\":1529957175,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/719fe46020d447a9a0e0541c97adc73b\",\"attributes\":{\"enabled\":true,\"created\":1529957181,\"updated\":1529957181,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/bcae35f5a9f1438cbc64bcd2bc77548e\",\"attributes\":{\"enabled\":true,\"created\":1529957177,\"updated\":1529957177,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:36 GMT", + "date" : "Mon, 25 Jun 2018 20:06:29 GMT", "content-length" : "380", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6fbdf1cb-5345-485f-bba1-c8cf0b4948dd", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions\",\"deletedDate\":1520540256,\"scheduledPurgeDate\":1528316256,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/dec33b0b90ca47a3bc5e685922624826\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0d8db9a8-2e74-4b8e-9cdc-9b268f57ba71", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions\",\"deletedDate\":1529957189,\"scheduledPurgeDate\":1537733189,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/013abcff50844ef9ab448331a98d7b31\",\"attributes\":{\"enabled\":true,\"created\":1529957183,\"updated\":1529957183,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:36 GMT", + "date" : "Mon, 25 Jun 2018 20:06:30 GMT", "content-length" : "92", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5dd7ef16-6c52-4ae7-adcb-feeecba42c64", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cd84ad83-16ec-4d76-a80b-ea39d2096100", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecretVersions\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:46 GMT", + "date" : "Mon, 25 Jun 2018 20:06:43 GMT", "content-length" : "92", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "39f90cc3-f24b-4924-92d8-99dd55dbcb41", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8390da34-ca9f-4f8d-92af-f4e9a20dde70", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecretVersions\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:56 GMT", + "date" : "Mon, 25 Jun 2018 20:06:54 GMT", "content-length" : "380", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,22 +316,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "42d426f1-3134-4b77-b8d6-04b35a862618", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions\",\"deletedDate\":1520540256,\"scheduledPurgeDate\":1528316256,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/dec33b0b90ca47a3bc5e685922624826\",\"attributes\":{\"enabled\":true,\"created\":1520540255,\"updated\":1520540255,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "20249486-a0f1-44f9-afcb-dd453301bb9d", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions\",\"deletedDate\":1529957189,\"scheduledPurgeDate\":1537733189,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecretVersions/013abcff50844ef9ab448331a98d7b31\",\"attributes\":{\"enabled\":true,\"created\":1529957183,\"updated\":1529957183,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecretVersions?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:57 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:06:58 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -329,10 +341,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "51dac1b3-78fc-4223-9447-e2e387c33cf7", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a7ff180c-44c7-41ee-84f3-71ea4e503386", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/listSecretsForSecretOperationsTest.json b/azure-keyvault/target/test-classes/session-records/listSecretsForSecretOperationsTest.json index 57f17f1..a93b011 100644 --- a/azure-keyvault/target/test-classes/session-records/listSecretsForSecretOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/listSecretsForSecretOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:33 GMT", + "date" : "Mon, 25 Jun 2018 20:01:55 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "17ce8f3c-a853-4a90-918c-940bb5da6ea9", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "08230279-4bbe-4d9c-a2e3-3a9c87ca933e", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:34 GMT", + "date" : "Mon, 25 Jun 2018 20:01:57 GMT", "content-length" : "276", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f6fb26b1-ad61-4243-a4bb-df6f7bf35b61", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/1bdd6493d4a7441b9e13062c383399c9\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2de5ae03-59a4-41dd-b6a9-990a9f6282db", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/b9fa9684b35e498ea811aba712a9270d\",\"attributes\":{\"enabled\":true,\"created\":1529956918,\"updated\":1529956918,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:34 GMT", + "date" : "Mon, 25 Jun 2018 20:01:58 GMT", "content-length" : "276", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ef36e8b9-6a36-40e1-b567-0262ce163d9c", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/764f150a3413423eabe8454b79215f11\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c558d525-20f5-4b27-a8ce-2c21e5b6556d", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/f45e3ca2460949f79da26820be247a0a\",\"attributes\":{\"enabled\":true,\"created\":1529956919,\"updated\":1529956919,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:34 GMT", + "date" : "Mon, 25 Jun 2018 20:02:05 GMT", "content-length" : "276", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6455571a-1e8f-4ea6-b8ca-5882ebd5436c", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/26357c94e4e046e4b3dde17f75e9131c\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ae76dc6a-aa55-457d-962d-ac3f0f619f94", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/60048f9c48d04a92a166330759660b1c\",\"attributes\":{\"enabled\":true,\"created\":1529956925,\"updated\":1529956925,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:34 GMT", + "date" : "Mon, 25 Jun 2018 20:02:07 GMT", "content-length" : "276", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "0aada569-e282-420d-9830-cbcecff1a011", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/ed437268ca2045e59b740bae14b0a34f\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "17fa6dda-5677-4a37-87cc-f6b236f8dd14", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/5a500ee4fe2846b5b4b53e39564b46e2\",\"attributes\":{\"enabled\":true,\"created\":1529956927,\"updated\":1529956927,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?maxresults=3&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?maxresults=3&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:34 GMT", - "content-length" : "311", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:10 GMT", + "content-length" : "303", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "56dad450-96f3-4de8-911a-797a3b6375c6", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f7df6478-e1f2-4fb6-9d13-7111cac4fa79", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:35 GMT", - "content-length" : "300", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:14 GMT", + "content-length" : "308", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c3a7857d-d46d-43b8-90d5-7e5c03883d3f", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFeU1ERTNMVEV5TFRBM1ZEQXdPak01T2pFMkxqRTNOall3TURoYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a23cef17-c86f-4927-90ce-737c9cbf9f28", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5S1FWWkJSVmhVUlU1VFNVOU9VMFZEVWtWVU1TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFeU1ERTNMVEV5TFRBM1ZEQXdPak01T2pFMkxqRTNOall3TURoYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5S1FWWkJSVmhVUlU1VFNVOU9VMFZEVWtWVU1TRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:35 GMT", - "content-length" : "944", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:16 GMT", + "content-length" : "936", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "aecb1e45-91e5-4a51-b61a-1d61b9f172e6", - "Body" : "{\"value\":[{\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret\",\"attributes\":{\"enabled\":true,\"nbf\":947361094,\"exp\":2525284294,\"created\":1520538694,\"updated\":1520538694,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElYTmxZM0psZEM5S1FWWkJVMFZEVWtWVU1pRXdNREF3TWpnaE1qQXhPQzB3TXkwd09GUXhPVG8wT1RveU5DNHhOelEzT0RZMFdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0f13f2cc-ec4e-4f17-bc6b-afca73812974", + "Body" : "{\"value\":[{\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret\",\"attributes\":{\"enabled\":true,\"nbf\":946857004,\"exp\":2524780204,\"created\":1525301405,\"updated\":1525301405,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0\",\"attributes\":{\"enabled\":true,\"created\":1529956918,\"updated\":1529956918,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1\",\"attributes\":{\"enabled\":true,\"created\":1529956919,\"updated\":1529956919,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElYTmxZM0psZEM5S1FWWkJVMFZEVWtWVU1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElYTmxZM0psZEM5S1FWWkJVMFZEVWtWVU1pRXdNREF3TWpnaE1qQXhPQzB3TXkwd09GUXhPVG8wT1RveU5DNHhOelEzT0RZMFdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFNElYTmxZM0psZEM5S1FWWkJVMFZEVWtWVU1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:36 GMT", - "content-length" : "686", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:17 GMT", + "content-length" : "678", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "81ed9bb4-84ba-4b29-beda-657b2357f243", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "50d7383e-4341-4f40-b2fe-1188da8f7368", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2\",\"attributes\":{\"enabled\":true,\"created\":1529956925,\"updated\":1529956925,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3\",\"attributes\":{\"enabled\":true,\"created\":1529956927,\"updated\":1529956927,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:36 GMT", - "content-length" : "323", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:19 GMT", + "content-length" : "315", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ea5238c0-fc94-4af7-8dbd-4881892cf458", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJWE5sWTNKbGRDOU1TVk5VUTBWU1ZFbEdTVU5CVkVWV1JWSlRTVTlPVXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5c1d1926-90f3-429f-bad9-6c38c3421308", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJWE5sWTNKbGRDOU1TVk5VUTBWU1ZFbEdTVU5CVkVWV1JWSlRTVTlPVXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJWE5sWTNKbGRDOU1TVk5VUTBWU1ZFbEdTVU5CVkVWV1JWSlRTVTlPVXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDAhTURBd01ETXdJWE5sWTNKbGRDOU1TVk5VUTBWU1ZFbEdTVU5CVkVWV1JWSlRTVTlPVXlFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:36 GMT", - "content-length" : "305", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:22 GMT", + "content-length" : "297", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,23 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "36e0f4e9-e8f7-4fb2-94a0-7fb7f8f91c4c", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElYTmxZM0psZEM5VlVFUkJWRVZEUlZKVVNrRldRU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d60a5d98-b735-4091-9f6a-240b366ee978", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElYTmxZM0psZEM5VlVFUkJWRVZEUlZKVVNrRldRU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElYTmxZM0psZEM5VlVFUkJWRVZEUlZKVVNrRldRU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJeElYTmxZM0psZEM5VlVFUkJWRVZEUlZKVVNrRldRU0V3TURBd01qZ2hPVGs1T1MweE1pMHpNVlF5TXpvMU9UbzFPUzQ1T1RrNU9UazVXaUUtIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=3", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:36 GMT", + "date" : "Mon, 25 Jun 2018 20:02:23 GMT", "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -305,23 +316,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "126e2e04-d934-4e8c-ab7f-592fa2b5f2ef", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "74ac1d2d-fb78-4aa4-b46d-d3bfbc8c637b", "Body" : "{\"value\":[],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:37 GMT", + "date" : "Mon, 25 Jun 2018 20:02:25 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -331,23 +343,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5d814de9-a476-420e-806d-aa1985f9c343", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0\",\"deletedDate\":1520540077,\"scheduledPurgeDate\":1528316077,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/1bdd6493d4a7441b9e13062c383399c9\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6713dcbb-3ccf-40da-bb2c-5daaa32907c0", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0\",\"deletedDate\":1529956945,\"scheduledPurgeDate\":1537732945,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/b9fa9684b35e498ea811aba712a9270d\",\"attributes\":{\"enabled\":true,\"created\":1529956918,\"updated\":1529956918,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:37 GMT", + "date" : "Mon, 25 Jun 2018 20:02:25 GMT", "content-length" : "85", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -357,23 +370,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "8eb15d38-5389-469c-a4a8-031db2f3e228", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "2344b631-0cb1-4576-b96c-b45795f8d5ab", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret0\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:47 GMT", + "date" : "Mon, 25 Jun 2018 20:02:36 GMT", "content-length" : "85", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -383,23 +397,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "73e30cff-cd91-4287-94b2-a858a7a72a33", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "607763b1-f185-4c76-82d7-9f9d884a9c91", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret0\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:58 GMT", + "date" : "Mon, 25 Jun 2018 20:02:53 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -409,22 +424,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "685353a6-11ec-420b-abe7-378071c6844e", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0\",\"deletedDate\":1520540077,\"scheduledPurgeDate\":1528316077,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/1bdd6493d4a7441b9e13062c383399c9\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "88a61cfb-0772-403f-850d-c8de2356bc38", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0\",\"deletedDate\":1529956945,\"scheduledPurgeDate\":1537732945,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret0/b9fa9684b35e498ea811aba712a9270d\",\"attributes\":{\"enabled\":true,\"created\":1529956918,\"updated\":1529956918,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret0?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:14:58 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:02:55 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -433,23 +449,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b5bec9be-4a85-4d4f-9691-8928bb511d5b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e6e1a021-3675-4c59-8522-d48357fbaa0b", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:19 GMT", + "date" : "Mon, 25 Jun 2018 20:03:17 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -459,23 +476,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "6b9d6d8b-e0c5-47ab-8de5-3cc3e75b3a0f", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1\",\"deletedDate\":1520540119,\"scheduledPurgeDate\":1528316119,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/764f150a3413423eabe8454b79215f11\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "896ea44f-1b01-456d-8866-3f947d034f11", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1\",\"deletedDate\":1529956998,\"scheduledPurgeDate\":1537732998,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/f45e3ca2460949f79da26820be247a0a\",\"attributes\":{\"enabled\":true,\"created\":1529956919,\"updated\":1529956919,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:19 GMT", + "date" : "Mon, 25 Jun 2018 20:03:21 GMT", "content-length" : "85", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -485,49 +503,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c97f4eb0-f1ad-45f4-bc47-2cdcecfc23a5", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a590223c-9d1e-42a8-9f61-241cc271a1d6", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret1\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:29 GMT", - "content-length" : "85", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "68d90634-e38f-40a0-9b80-f0c4f7e03bf7", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret1\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:39 GMT", + "date" : "Mon, 25 Jun 2018 20:03:33 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -537,22 +530,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f17a8353-741f-4f03-9793-cc9369161692", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1\",\"deletedDate\":1520540119,\"scheduledPurgeDate\":1528316119,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/764f150a3413423eabe8454b79215f11\",\"attributes\":{\"enabled\":true,\"created\":1520540074,\"updated\":1520540074,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "1640e457-c662-49ad-88d4-58ad6ab83dba", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1\",\"deletedDate\":1529956998,\"scheduledPurgeDate\":1537732998,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret1/f45e3ca2460949f79da26820be247a0a\",\"attributes\":{\"enabled\":true,\"created\":1529956919,\"updated\":1529956919,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret1?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:39 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:03:34 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -561,23 +555,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3b00c25b-7f9c-46c6-84ce-34973736e2a5", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5bd6dde7-b54a-4341-b2f2-30e946556c51", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:15:59 GMT", + "date" : "Mon, 25 Jun 2018 20:03:56 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -587,23 +582,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a083230c-6d6a-4b26-9fda-64b50fc710e2", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2\",\"deletedDate\":1520540160,\"scheduledPurgeDate\":1528316160,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/26357c94e4e046e4b3dde17f75e9131c\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "86880c00-0f90-4b67-8edc-9d9dbc227a56", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2\",\"deletedDate\":1529957037,\"scheduledPurgeDate\":1537733037,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/60048f9c48d04a92a166330759660b1c\",\"attributes\":{\"enabled\":true,\"created\":1529956925,\"updated\":1529956925,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:01 GMT", + "date" : "Mon, 25 Jun 2018 20:03:59 GMT", "content-length" : "85", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -613,23 +609,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "816c7712-8218-4ff7-833b-07495ed658f1", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ca7ac3d5-89a4-43a4-b852-4588dc4c7cb6", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret2\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:11 GMT", + "date" : "Mon, 25 Jun 2018 20:04:12 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -639,22 +636,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "96774702-b032-4f42-a16f-8c1cfb4d02aa", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2\",\"deletedDate\":1520540160,\"scheduledPurgeDate\":1528316160,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/26357c94e4e046e4b3dde17f75e9131c\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e6d41612-ee3c-41a7-9056-98fe4cffcb9d", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2\",\"deletedDate\":1529957037,\"scheduledPurgeDate\":1537733037,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret2/60048f9c48d04a92a166330759660b1c\",\"attributes\":{\"enabled\":true,\"created\":1529956925,\"updated\":1529956925,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret2?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:11 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:04:14 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -663,23 +661,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "61bddf45-0e71-4bdf-8153-0f28d9a342ce", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f542e052-523f-4761-b1ed-d093cabfb10c", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:31 GMT", + "date" : "Mon, 25 Jun 2018 20:04:35 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -689,23 +688,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "755f59d6-6c9d-43c6-a32d-7866033ac224", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3\",\"deletedDate\":1529957076,\"scheduledPurgeDate\":1537733076,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/5a500ee4fe2846b5b4b53e39564b46e2\",\"attributes\":{\"enabled\":true,\"created\":1529956927,\"updated\":1529956927,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 20:04:37 GMT", + "content-length" : "85", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "5a40ab4d-83f2-4ae1-a68a-051f1409fbca", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3\",\"deletedDate\":1520540191,\"scheduledPurgeDate\":1528316191,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/ed437268ca2045e59b740bae14b0a34f\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "84330d52-3023-4b8c-8c68-8c28276a0f7f", + "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret3\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:31 GMT", + "date" : "Mon, 25 Jun 2018 20:04:47 GMT", "content-length" : "85", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -715,23 +742,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "acbb2324-050f-4f82-98f4-6a3d2ba09ef4", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "562aba07-c551-4799-ba44-08c3a8842da2", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret3\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:41 GMT", + "date" : "Mon, 25 Jun 2018 20:04:58 GMT", "content-length" : "366", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -741,22 +769,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "a4cbcb72-fe02-4473-8575-8de66630db85", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3\",\"deletedDate\":1520540191,\"scheduledPurgeDate\":1528316191,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/ed437268ca2045e59b740bae14b0a34f\",\"attributes\":{\"enabled\":true,\"created\":1520540075,\"updated\":1520540075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d4bb3297-adc1-4548-9a0d-2e3112fba615", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3\",\"deletedDate\":1529957076,\"scheduledPurgeDate\":1537733076,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret3/5a500ee4fe2846b5b4b53e39564b46e2\",\"attributes\":{\"enabled\":true,\"created\":1529956927,\"updated\":1529956927,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret3?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:16:41 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:04:59 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -765,23 +794,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c0e3a410-f8c9-4a9f-bf12-bedd66c13de4", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0c73e76e-5247-4f72-b40e-fbdcdd4522d5", "Body" : "" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:03 GMT", + "date" : "Mon, 25 Jun 2018 20:05:23 GMT", "content-length" : "446", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -791,23 +821,51 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-region" : "West US", + "cache-control" : "no-cache", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cccecda1-64aa-4fa5-b416-a8a312e747c0", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret\",\"deletedDate\":1529957124,\"scheduledPurgeDate\":1537733124,\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/713884f5253a44d1bda6bdcaa44466ca\",\"attributes\":{\"enabled\":true,\"nbf\":946857004,\"exp\":2524780204,\"created\":1525301405,\"updated\":1525301405,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + } + }, { + "Method" : "GET", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0", + "Headers" : { + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", + "Content-Type" : "application/json; charset=utf-8" + }, + "Response" : { + "date" : "Mon, 25 Jun 2018 20:05:24 GMT", + "content-length" : "84", + "server" : "Microsoft-IIS/10.0", + "expires" : "-1", + "x-aspnet-version" : "4.0.30319", + "retry-after" : "0", + "StatusCode" : "404", + "pragma" : "no-cache", + "strict-transport-security" : "max-age=31536000;includeSubDomains", + "x-content-type-options" : "nosniff", + "x-powered-by" : "ASP.NET", + "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "56ba4361-d9d9-4a59-807c-3ce34be003c9", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret\",\"deletedDate\":1520540223,\"scheduledPurgeDate\":1528316223,\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/9f3f0b1a09b44e7cbc492021e396caca\",\"attributes\":{\"enabled\":true,\"nbf\":947361094,\"exp\":2525284294,\"created\":1520538694,\"updated\":1520538694,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ee34d65a-6074-43b8-89fc-f2a9f0826e9d", + "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:03 GMT", + "date" : "Mon, 25 Jun 2018 20:05:36 GMT", "content-length" : "84", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -817,23 +875,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "450d91f8-fa59-452d-a3ee-b831f3a4ac69", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "a6435927-6142-4455-9243-5db8f2ac8a24", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: javaSecret\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:12 GMT", + "date" : "Mon, 25 Jun 2018 20:05:47 GMT", "content-length" : "446", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -843,22 +902,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ea5ca130-02dc-4d1e-9928-f11132b76f5d", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret\",\"deletedDate\":1520540223,\"scheduledPurgeDate\":1528316223,\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/9f3f0b1a09b44e7cbc492021e396caca\",\"attributes\":{\"enabled\":true,\"nbf\":947361094,\"exp\":2525284294,\"created\":1520538694,\"updated\":1520538694,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "62a49eb0-1af2-4a4b-aacb-b2da7ced46c1", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret\",\"deletedDate\":1529957124,\"scheduledPurgeDate\":1537733124,\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/713884f5253a44d1bda6bdcaa44466ca\",\"attributes\":{\"enabled\":true,\"nbf\":946857004,\"exp\":2524780204,\"created\":1525301405,\"updated\":1525301405,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:17:14 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 20:05:48 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -867,10 +927,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ca8ba993-3f35-41f8-a21f-60092813ab3a", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "52c236c5-277a-4ca8-b4b5-cd2da94104bc", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/secretAsyncForAsyncOperationsTest.json b/azure-keyvault/target/test-classes/session-records/secretAsyncForAsyncOperationsTest.json index 3c86da6..37ba78f 100644 --- a/azure-keyvault/target/test-classes/session-records/secretAsyncForAsyncOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/secretAsyncForAsyncOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:12 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "f15b90a0-d140-4e87-bc6b-69a2a137319b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7a228ca8-d5f8-4f20-841c-0c0bb83669b8", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:13 GMT", "content-length" : "236", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7e53dbe6-514a-4688-8a93-5d5653f79370", - "Body" : "{\"value\":\"password\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c904649b-7d4e-4fdc-a89e-ae73ff287126", + "Body" : "{\"value\":\"password\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955073,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:54 GMT", + "date" : "Mon, 25 Jun 2018 19:31:15 GMT", "content-length" : "217", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "85096c57-3296-4f92-9c74-0c26370ae12d", - "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "cd1eaff6-4636-47ea-a21f-439b552f4897", + "Body" : "{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:55 GMT", + "date" : "Mon, 25 Jun 2018 19:31:16 GMT", "content-length" : "236", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "28e9a05b-7bca-489f-b2d8-16f19787e06b", - "Body" : "{\"value\":\"password\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "08c6ace8-0b99-4880-8dfe-cc9d5bb7601e", + "Body" : "{\"value\":\"password\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?maxresults=2&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?maxresults=2&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:55 GMT", - "content-length" : "910", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:17 GMT", + "content-length" : "320", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "655383a8-000b-4fbd-aa1b-4f5ca137e313", - "Body" : "{\"value\":[{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/cancellationRequestedCertJava\",\"managed\":true,\"attributes\":{\"enabled\":false,\"nbf\":1519842497,\"exp\":1551379097,\"created\":1519843097,\"updated\":1519843097,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/createManualEnrollmentJava\",\"managed\":true,\"attributes\":{\"enabled\":false,\"nbf\":1519842513,\"exp\":1551379113,\"created\":1519843113,\"updated\":1519843113,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXpJWE5sWTNKbGRDOURVa1ZCVkVWVFJVeEdVMGxIVGtWRVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "006bd35a-f6ce-4bc2-9148-e47b43514652", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXpJWE5sWTNKbGRDOURVa1ZCVkVWVFJVeEdVMGxIVGtWRVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXpJWE5sWTNKbGRDOURVa1ZCVkVWVFJVeEdVMGxIVGtWRVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiExMDQhTURBd01ETXpJWE5sWTNKbGRDOURVa1ZCVkVWVFJVeEdVMGxIVGtWRVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:55 GMT", - "content-length" : "316", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:20 GMT", + "content-length" : "308", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,23 +154,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b0e39f7e-2830-477e-8a83-6d0c4e754c2c", - "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "97d0267e-7161-47a1-949d-f9f8cde2d4cb", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5NiFNREF3TURJM0lYTmxZM0psZEM5RFVrVkJWRVZVUlZOVVNrRldRVkJMUTFNeE1pRXdNREF3TWpnaE9UazVPUzB4TWkwek1WUXlNem8xT1RvMU9TNDVPVGs1T1RrNVdpRS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:55 GMT", - "content-length" : "467", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:23 GMT", + "content-length" : "292", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -175,23 +181,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "36056732-0687-45b3-9d2b-5b68dae2c3e6", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/default\",\"attributes\":{\"enabled\":true,\"created\":1518572677,\"updated\":1518572677,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lYTmxZM0psZEM5RlJVVWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5665ab08-d4db-4365-b60e-3683f51fd073", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE3MiFNREF3TURFd0lYTmxZM0psZEM5RlJVVWhNREF3TURJNElUazVPVGt0TVRJdE16RlVNak02TlRrNk5Ua3VPVGs1T1RrNU9Wb2giLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFNU9UazVMVEV5TFRNeFZESXpPalU1T2pVNUxqazVPVGs1T1RsYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:56 GMT", - "content-length" : "479", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:24 GMT", + "content-length" : "571", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -201,23 +208,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b604a5bc-5c1e-403e-851a-87001c462791", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/eee\",\"attributes\":{\"enabled\":true,\"created\":1518572548,\"updated\":1518572548,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFeU1ERTNMVEV5TFRBM1ZEQXdPak01T2pFMkxqRTNOall3TURoYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d0995cef-19da-4e81-a8d9-92c4e6ea6b50", + "Body" : "{\"value\":[{\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret\",\"attributes\":{\"enabled\":true,\"nbf\":946857004,\"exp\":2524780204,\"created\":1525301405,\"updated\":1525301405,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4NCFNREF3TURFM0lYTmxZM0psZEM5S1FWWkJVMFZEVWtWVUlUQXdNREF5T0NFeU1ERTNMVEV5TFRBM1ZEQXdPak01T2pFMkxqRTNOall3TURoYUlRLS0iLCJUYXJnZXRMb2NhdGlvbiI6MH0&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:56 GMT", - "content-length" : "776", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:26 GMT", + "content-length" : "303", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -227,23 +235,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c3dab411-6e8e-410c-ac10-84b73632e146", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret\",\"attributes\":{\"enabled\":true,\"created\":1512607155,\"updated\":1512607155,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate0\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036639,\"updated\":1520036639,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "e6151ba9-bc30-4347-922e-3eb62c94b156", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV6SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV4SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV6SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:56 GMT", - "content-length" : "868", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:31 GMT", + "content-length" : "297", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -253,23 +262,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "20886693-1c71-4985-9d79-8e622e8ec396", - "Body" : "{\"value\":[{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate1\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036640,\"updated\":1520036640,\"recoveryLevel\":\"Recoverable+Purgeable\"}},{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate2\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV6SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d232760c-7f94-4cdf-b745-6c45517f0a01", + "Body" : "{\"value\":[],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5TldVTkZVbFJKUmtsRFFWUkZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJeklYTmxZM0psZEM5TVNWTlVRMFZTVkVsR1NVTkJWRVV6SVRBd01EQXlPQ0U1T1RrNUxURXlMVE14VkRJek9qVTVPalU1TGprNU9UazVPVGxhSVEtLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5TldVTkZVbFJKUmtsRFFWUkZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:57 GMT", - "content-length" : "583", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:33 GMT", + "content-length" : "487", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -279,49 +289,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9a828171-f4d6-4b8e-a484-21357c839111", - "Body" : "{\"value\":[{\"contentType\":\"application/x-pkcs12\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/listCertificate3\",\"managed\":true,\"attributes\":{\"enabled\":true,\"nbf\":1430344421,\"exp\":2208988799,\"created\":1520036641,\"updated\":1520036641,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5TldVTkZVbFJKUmtsRFFWUkZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "3c9db8a9-ec89-4a2e-9dac-842a8bd991b1", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5VFJVeEdVMGxIVGtWRVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE4OCFNREF3TURJd0lYTmxZM0psZEM5TldVTkZVbFJKUmtsRFFWUkZJVEF3TURBeU9DRTVPVGs1TFRFeUxUTXhWREl6T2pVNU9qVTVMams1T1RrNU9UbGFJUS0tIiwiVGFyZ2V0TG9jYXRpb24iOjB9&maxresults=2", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5VFJVeEdVMGxIVGtWRVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:57 GMT", - "content-length" : "495", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "200", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "b312ffec-ae3c-4f14-b9ac-667996d310ad", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":\"https://tifchen-keyvault-fancy.vault.azure.net:443/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5VFJVeEdVMGxIVGtWRVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2\"}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets?api-version=7.0-preview&$skiptoken=eyJOZXh0TWFya2VyIjoiMiE5MiFNREF3TURJMElYTmxZM0psZEM5VFJVeEdVMGxIVGtWRVNrRldRVkJGVFNFd01EQXdNamdoT1RrNU9TMHhNaTB6TVZReU16bzFPVG8xT1M0NU9UazVPVGs1V2lFLSIsIlRhcmdldExvY2F0aW9uIjowfQ&maxresults=2", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:57 GMT", + "date" : "Mon, 25 Jun 2018 19:31:35 GMT", "content-length" : "28", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -331,23 +316,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "3dbeb831-26c6-431e-a8f0-162624d40d42", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7e667c2c-d0fb-487c-a1e2-d59ae01bc8a3", "Body" : "{\"value\":[],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/versions?maxresults=2&api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/versions?maxresults=2&api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:58 GMT", + "date" : "Mon, 25 Jun 2018 19:31:36 GMT", "content-length" : "245", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -357,23 +343,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "ea95db10-b1ef-4175-83c8-c28a08f95963", - "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "68bdc85b-c327-4b4a-b6d8-e7aace54e6f3", + "Body" : "{\"value\":[{\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:58 GMT", + "date" : "Mon, 25 Jun 2018 19:31:37 GMT", "content-length" : "360", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -383,23 +370,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c22f1b6e-c56d-4576-a9a5-d3997d503166", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret\",\"deletedDate\":1520449558,\"scheduledPurgeDate\":1528225558,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8ffa953c-549f-48bb-8d6c-d9262e086ab7", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret\",\"deletedDate\":1529955097,\"scheduledPurgeDate\":1537731097,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:58 GMT", + "date" : "Mon, 25 Jun 2018 19:31:39 GMT", "content-length" : "74", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -409,49 +397,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "435443c2-7cad-45ca-bf3d-450084f13b18", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "7890578c-6761-4007-9fb6-9320c16d797b", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Secret not found: mySecret\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0-preview", - "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", - "Content-Type" : "application/json; charset=utf-8" - }, - "Response" : { - "date" : "Wed, 07 Mar 2018 19:05:58 GMT", - "content-length" : "82", - "server" : "Microsoft-IIS/8.5", - "expires" : "-1", - "x-aspnet-version" : "4.0.30319", - "retry-after" : "0", - "StatusCode" : "404", - "pragma" : "no-cache", - "strict-transport-security" : "max-age=31536000;includeSubDomains", - "x-content-type-options" : "nosniff", - "x-powered-by" : "ASP.NET", - "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-region" : "West US", - "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "691d3b3a-e458-4f51-b930-7c1152dd0997", - "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: mySecret\"}}" - } - }, { - "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:09 GMT", + "date" : "Mon, 25 Jun 2018 19:31:44 GMT", "content-length" : "82", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -461,23 +424,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "800a4b8f-e230-4fb0-921b-abfd4e3bd002", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "d4f30e76-fe7e-41ed-b3f5-4b0d7a51469f", "Body" : "{\"error\":{\"code\":\"SecretNotFound\",\"message\":\"Deleted Secret not found: mySecret\"}}" } }, { "Method" : "GET", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:19 GMT", + "date" : "Mon, 25 Jun 2018 19:31:54 GMT", "content-length" : "360", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -487,22 +451,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d2e4370d-b0b4-4574-b074-bb99179f53c5", - "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret\",\"deletedDate\":1520449558,\"scheduledPurgeDate\":1528225558,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/c3e25a8a351140fea24c76f1ada5f15a\",\"attributes\":{\"enabled\":true,\"created\":1520449555,\"updated\":1520449555,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "549bc32d-9dff-4122-9275-bc2deeee7a85", + "Body" : "{\"recoveryId\":\"https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret\",\"deletedDate\":1529955097,\"scheduledPurgeDate\":1537731097,\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/mySecret/4c0b6145ce354d5faaba40f02d3e3cbd\",\"attributes\":{\"enabled\":true,\"created\":1529955073,\"updated\":1529955075,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/deletedsecrets/mySecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Wed, 07 Mar 2018 19:06:19 GMT", - "server" : "Microsoft-IIS/8.5", + "date" : "Mon, 25 Jun 2018 19:31:59 GMT", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -511,10 +476,11 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7fd6878d-10a7-4a53-986f-06014044bccb", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6b4d73d4-fee9-4093-9d1c-6da7c3d14046", "Body" : "" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/signVerifyOperationsForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/signVerifyOperationsForKeyOperationsTest.json index 85ee908..0886071 100644 --- a/azure-keyvault/target/test-classes/session-records/signVerifyOperationsForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/signVerifyOperationsForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:31 GMT", + "date" : "Mon, 25 Jun 2018 19:52:51 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9784bcf5-f5ce-4bfa-9160-223972cedca6", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "5540e9af-3515-4bdd-83ba-75e3b1403142", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:31 GMT", + "date" : "Mon, 25 Jun 2018 19:52:52 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "4e371207-35d4-4c5a-b86a-26d13a21cd86", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539712,\"updated\":1520539712,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ecba9497-f55b-46b5-8fd1-ed4dfc52709d", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956372,\"updated\":1529956372,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//sign?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//sign?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:32 GMT", + "date" : "Mon, 25 Jun 2018 19:52:54 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "65c15ba0-ca33-4016-985e-109825142271", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268\",\"value\":\"VycNS2AleyY425cgT02DdqHgz0r95vm0UDEsnG8uQiT7IfxflrjKM_d8PvOeV6JA6kamk6lhvFKnJqXyNmFaPcI7RcibAW-e3-9k91TEegUNl4dZpPeuy6AY5-CkafXBBTHCCOAfGuyCeNnr8jJF7teQa_Z246wgoOiGACQx37C2m9jb2x-Q3-mxo8utyi3NFu8LCJs7C9h_AlcszRJ0l9a0dP97YnNFW75GtBpfjt7frZFUGdJNeWvZXBhCzhtYN9ynN6SHIKKVfZEe-Uqc3HvY63oEGvVGcPnWeV2wY8NfQn04gji3hdKKyRH0VLSkwHJpSA7V42EDaPbaQCriQA\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "afb885d0-d130-4881-85ec-a7d862b0cc1d", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020\",\"value\":\"VycNS2AleyY425cgT02DdqHgz0r95vm0UDEsnG8uQiT7IfxflrjKM_d8PvOeV6JA6kamk6lhvFKnJqXyNmFaPcI7RcibAW-e3-9k91TEegUNl4dZpPeuy6AY5-CkafXBBTHCCOAfGuyCeNnr8jJF7teQa_Z246wgoOiGACQx37C2m9jb2x-Q3-mxo8utyi3NFu8LCJs7C9h_AlcszRJ0l9a0dP97YnNFW75GtBpfjt7frZFUGdJNeWvZXBhCzhtYN9ynN6SHIKKVfZEe-Uqc3HvY63oEGvVGcPnWeV2wY8NfQn04gji3hdKKyRH0VLSkwHJpSA7V42EDaPbaQCriQA\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//verify?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//verify?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:32 GMT", + "date" : "Mon, 25 Jun 2018 19:52:56 GMT", "content-length" : "14", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7d92d997-49cd-4ae3-af03-6346cc10137b", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "8997d15d-b73d-4265-9bf6-f304a68b7024", "Body" : "{\"value\":true}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268/sign?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020/sign?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:32 GMT", + "date" : "Mon, 25 Jun 2018 19:52:59 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "c1a9461c-348c-463d-8bf0-835ab01924ff", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268\",\"value\":\"VycNS2AleyY425cgT02DdqHgz0r95vm0UDEsnG8uQiT7IfxflrjKM_d8PvOeV6JA6kamk6lhvFKnJqXyNmFaPcI7RcibAW-e3-9k91TEegUNl4dZpPeuy6AY5-CkafXBBTHCCOAfGuyCeNnr8jJF7teQa_Z246wgoOiGACQx37C2m9jb2x-Q3-mxo8utyi3NFu8LCJs7C9h_AlcszRJ0l9a0dP97YnNFW75GtBpfjt7frZFUGdJNeWvZXBhCzhtYN9ynN6SHIKKVfZEe-Uqc3HvY63oEGvVGcPnWeV2wY8NfQn04gji3hdKKyRH0VLSkwHJpSA7V42EDaPbaQCriQA\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4dc07972-0840-43f9-9f54-0f782f1b1219", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020\",\"value\":\"VycNS2AleyY425cgT02DdqHgz0r95vm0UDEsnG8uQiT7IfxflrjKM_d8PvOeV6JA6kamk6lhvFKnJqXyNmFaPcI7RcibAW-e3-9k91TEegUNl4dZpPeuy6AY5-CkafXBBTHCCOAfGuyCeNnr8jJF7teQa_Z246wgoOiGACQx37C2m9jb2x-Q3-mxo8utyi3NFu8LCJs7C9h_AlcszRJ0l9a0dP97YnNFW75GtBpfjt7frZFUGdJNeWvZXBhCzhtYN9ynN6SHIKKVfZEe-Uqc3HvY63oEGvVGcPnWeV2wY8NfQn04gji3hdKKyRH0VLSkwHJpSA7V42EDaPbaQCriQA\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/accc35ea21684e41b0c564a035615268/verify?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/e980beac4ecf46d0be73665033846020/verify?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:08:33 GMT", + "date" : "Mon, 25 Jun 2018 19:53:03 GMT", "content-length" : "14", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,10 +154,11 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "651ef36f-432f-4da9-a291-797fe3833404", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "778a7ebc-69b2-4665-b48b-116ac31faff5", "Body" : "{\"value\":true}" } } ], diff --git a/azure-keyvault/target/test-classes/session-records/testCrudOperationsForManagedStorageAccountKey.json b/azure-keyvault/target/test-classes/session-records/testCrudOperationsForManagedStorageAccountKey.json index 3534e06..6988e5b 100644 --- a/azure-keyvault/target/test-classes/session-records/testCrudOperationsForManagedStorageAccountKey.json +++ b/azure-keyvault/target/test-classes/session-records/testCrudOperationsForManagedStorageAccountKey.json @@ -7,9 +7,9 @@ "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:57:34 GMT", + "date" : "Mon, 25 Jun 2018 19:57:03 GMT", "server" : "Microsoft-IIS/10.0", - "content-length" : "86519", + "content-length" : "87830", "expires" : "-1", "transfer-encoding" : "chunked", "vary" : "Accept-Encoding", @@ -18,26 +18,25 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "f092e23d-825a-40d8-ac1c-01c7f5b5510a", + "x-ms-correlation-request-id" : "205af036-08c5-465d-a915-29e98bdadca1", "set-cookie" : "x-ms-gateway-slice=productionb; path=/; secure; HttpOnly", "x-ms-ratelimit-remaining-tenant-reads" : "14999", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205735Z:f092e23d-825a-40d8-ac1c-01c7f5b5510a", - "x-powered-by" : "ASP.NET", + "x-ms-routing-request-id" : "WESTUS2:20180625T195703Z:205af036-08c5-465d-a915-29e98bdadca1", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-request-id" : "a5ce5a47-7761-42a1-9aa7-5930758c93e3", - "Body" : "{\"value\":[{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\",\"Microsoft.ContainerRegistry/registries/*/write\"],\"notActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2018-03-17T01:25:51.8758677Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2018-03-17T01:26:48.6387319Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/write\",\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2018-03-17T01:27:36.3941651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service and the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-01-23T23:12:00.5823195Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"API Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2016-11-18T23:56:25.4682649Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2017-01-23T23:10:34.8876776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-11-29T20:30:34.2313394Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2017-04-19T23:34:59.9511581Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Automation Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2018-03-06T02:20:41.6886187Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2018-05-10T20:12:39.6978200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Automation Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2017-04-25T01:00:45.6444999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Azure Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/registrations/products/listDetails/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2017-11-13T23:54:02.4007080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/*\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2017-07-07T06:22:36.4530284Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Backup Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/cancel/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2017-09-13T10:34:41.5049784Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2017-09-13T10:33:25.5814653Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Billing Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows read access to billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2017-09-19T17:36:32.7624564Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"BizTalk Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:55.8430061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:52.6231539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.1585846Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN profiles and their endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.7051278Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles and their endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:54.2283001Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.3934954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.9379206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic Storage Account Key Operators are allowed to list and regenerate keys on Classic Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2017-04-13T20:54:03.0505986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"Classic Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:57.4788684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"ClearDB MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:58.1393839Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything except access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-05-30T19:22:32.4538167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2018-02-21T01:36:59.6186231Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Data Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create and manage data factories, as well as child resources within them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-04-06T22:49:28.1118955Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you submit, monitor, and manage your own jobs but not create or delete Data Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2017-08-18T00:00:17.0411642Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"Data Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2018-04-30T22:44:15.1171162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"DevTest Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, restart, and shutdown your virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2017-02-02T02:38:38.2961026Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DNS zones and record sets in Azure DNS, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:40.3710365Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"DocumentDB Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.2132374Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"Intelligent Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:59.7946586Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-12-14T02:01:18.4641200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Lab Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create, manage, delete your managed labs under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2018-03-08T19:53:30.3032044Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Contributor can read all monitoring data and edit monitoring settings. Editing monitoring settings includes adding the VM extension to VMs; reading storage account keys to be able to configure collection of logs from Azure Storage; creating and configuring Automation accounts; adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2018-01-30T18:08:26.6376126Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Log Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Reader can view and search all monitoring data as well as and view monitoring settings, including viewing the configuration of Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2018-01-30T18:08:26.0438523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Logic App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:11:44.8580600Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Logic App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:14:26.9539724Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Managed Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2017-12-14T22:17:02.2740594Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Managed Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2017-12-14T22:16:00.1483256Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Monitoring Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/workloads/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2018-04-02T19:04:30.9448972Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"Monitoring Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2018-01-30T18:08:27.2626250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2016-05-31T23:14:00.3326359Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"New Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage New Relic Application Performance Management accounts and applications, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.7538043Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything, including access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:00.9179619Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"PowerApps Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The user has access to perform administrative actions on all PowerApps resources within the tenant.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/actions/admin/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:41.9912926Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/53be45b2-ad40-43ab-bc1f-2c962ac99ded\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"53be45b2-ad40-43ab-bc1f-2c962ac99ded\"},{\"properties\":{\"roleName\":\"PowerAppsReaderWithReshare\",\"type\":\"BuiltInRole\",\"description\":\"PowerAppsReadersWithReshare can use the resource and re-share it with other users, but cannot edit the resource or re-share it with edit permissions.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/*/permissions/write\",\"Microsoft.PowerApps/*/read\"],\"notActions\":[\"Microsoft.PowerApps/*/delete\",\"Microsoft.PowerApps/*/write\"]}],\"createdOn\":\"2016-03-15T00:55:03.0666416Z\",\"updatedOn\":\"2016-05-31T23:14:09.6924345Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6877c72c-edd3-4048-9b4b-cf8e514477b0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6877c72c-edd3-4048-9b4b-cf8e514477b0\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:25.4031403Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Reader and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything but will not let you delete or create a storage account or contained resource. It will also allow read/write access to all data contained in a storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2018-03-28T17:50:03.9656854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Redis Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:01.9877071Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Resource Policy Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"(Preview) Backfilled users from EA, with rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2018-01-30T18:08:27.8272264Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:02.5343995Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:03.0463472Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.Security/locations/alerts/dismiss/action\",\"Microsoft.Security/locations/alerts/activate/action\",\"Microsoft.Security/locations/tasks/dismiss/action\",\"Microsoft.Security/locations/tasks/activate/action\",\"Microsoft.Security/policies/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2018-03-08T18:19:50.7393029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security Manager (Legacy)\",\"type\":\"BuiltInRole\",\"description\":\"This is a legacy role. Please use Security Administrator instead\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2018-03-08T18:18:48.6183620Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2017-05-03T18:42:54.9787380Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Site Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2017-06-29T05:31:19.7240473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2017-06-29T05:42:27.1715639Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Site Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2017-05-26T19:54:51.3933250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"SQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL databases, but not access to them. Also, you can't manage their security-related policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.1575716Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the security-related policies of SQL servers and databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:40.2200727Z\",\"createdBy\":null,\"updatedBy\":\"yaiyun\"},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"SQL Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL servers and databases, but not access to them, and not their security -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.8450730Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-08-21T07:43:20.3060994Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2017-04-13T20:57:14.5990198Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage Blob Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:11:00.4629296Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage Blob Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:15:19.5080840Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage Queue Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:16:40.1371662Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage Queue Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:19:30.5001463Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2017-06-23T01:06:24.2399631Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Traffic Manager profiles, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:44.1458854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"User Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:24.4656640Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"- Users with this role have the ability to login to a virtual machine with Windows administrator or Linux root user privileges.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:17:57.0514548Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage virtual machines, but not access to them, and not the virtual network or storage account they�re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-11-14T03:00:30.1736393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Virtual Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"Users with this role have the ability to login to a virtual machine as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:18:52.2780979Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Web Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:05.9401651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:06.5272742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"}]}" + "x-ms-request-id" : "2020ac1a-7445-472d-8c55-a026958ba1a2", + "Body" : "{\"value\":[{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\",\"Microsoft.ContainerRegistry/registries/*/write\"],\"notActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2018-03-17T01:25:51.8758677Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2018-03-17T01:26:48.6387319Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/write\",\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2018-03-17T01:27:36.3941651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage API Management services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-01-23T23:12:00.5823195Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"API Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2016-11-18T23:56:25.4682649Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2017-01-23T23:10:34.8876776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-11-29T20:30:34.2313394Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2017-04-19T23:34:59.9511581Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Automation Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2018-03-06T02:20:41.6886187Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2018-05-10T20:12:39.6978200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Automation Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2017-04-25T01:00:45.6444999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Azure Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/registrations/products/listDetails/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2017-11-13T23:54:02.4007080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/*\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2017-07-07T06:22:36.4530284Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Backup Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/cancel/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2018-06-16T05:25:05.7455061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2017-09-13T10:33:25.5814653Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Billing Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2017-09-19T17:36:32.7624564Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"BizTalk Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:55.8430061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:52.6231539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.1585846Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN profiles and their endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.7051278Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles and their endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:54.2283001Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.3934954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.9379206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic Storage Account Key Operators are allowed to list and regenerate keys on Classic Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2017-04-13T20:54:03.0505986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"Classic Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:57.4788684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"ClearDB MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:58.1393839Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything except access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-05-30T19:22:32.4538167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2018-02-21T01:36:59.6186231Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Data Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage data factories, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-04-06T22:49:28.1118955Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you submit, monitor, and manage your own jobs but not create or delete Data Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2017-08-18T00:00:17.0411642Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"Data Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2018-04-30T22:44:15.1171162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"DevTest Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, restart, and shutdown virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2017-02-02T02:38:38.2961026Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DNS zones and record sets in Azure DNS, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:40.3710365Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"DocumentDB Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.2132374Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"Intelligent Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:59.7946586Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-12-14T02:01:18.4641200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Lab Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create, manage, delete your managed labs under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2018-03-08T19:53:30.3032044Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Contributor can read all monitoring data and edit monitoring settings. Editing monitoring settings includes adding the VM extension to VMs; reading storage account keys to be able to configure collection of logs from Azure Storage; creating and configuring Automation accounts; adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2018-01-30T18:08:26.6376126Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Log Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Reader can view and search all monitoring data as well as and view monitoring settings, including viewing the configuration of Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2018-01-30T18:08:26.0438523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Logic App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:11:44.8580600Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Logic App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:14:26.9539724Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Managed Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2017-12-14T22:17:02.2740594Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Managed Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2017-12-14T22:16:00.1483256Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Management Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Management Group Contributor Role\",\"assignableScopes\":[\"/providers/Microsoft.Management\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/delete\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/delete\",\"Microsoft.Management/managementGroups/subscriptions/write\",\"Microsoft.Management/managementGroups/write\"],\"notActions\":[]}],\"createdOn\":\"2018-06-22T00:28:29.0523964Z\",\"updatedOn\":\"2018-06-22T00:29:40.3047486Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\"},{\"properties\":{\"roleName\":\"Management Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Management Group Reader Role\",\"assignableScopes\":[\"/providers/Microsoft.Management\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/read\"],\"notActions\":[]}],\"createdOn\":\"2018-06-22T00:31:03.4295347Z\",\"updatedOn\":\"2018-06-22T00:32:11.5701900Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ac63b705-f282-497d-ac71-919bf39d939d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ac63b705-f282-497d-ac71-919bf39d939d\"},{\"properties\":{\"roleName\":\"Monitoring Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/workloads/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2018-04-02T19:04:30.9448972Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"Monitoring Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2018-01-30T18:08:27.2626250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2016-05-31T23:14:00.3326359Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"New Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage New Relic Application Performance Management accounts and applications, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.7538043Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything, including access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:00.9179619Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"PowerApps Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The user has access to perform administrative actions on all PowerApps resources within the tenant.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/actions/admin/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:41.9912926Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/53be45b2-ad40-43ab-bc1f-2c962ac99ded\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"53be45b2-ad40-43ab-bc1f-2c962ac99ded\"},{\"properties\":{\"roleName\":\"PowerAppsReaderWithReshare\",\"type\":\"BuiltInRole\",\"description\":\"PowerAppsReadersWithReshare can use the resource and re-share it with other users, but cannot edit the resource or re-share it with edit permissions.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/*/permissions/write\",\"Microsoft.PowerApps/*/read\"],\"notActions\":[\"Microsoft.PowerApps/*/delete\",\"Microsoft.PowerApps/*/write\"]}],\"createdOn\":\"2016-03-15T00:55:03.0666416Z\",\"updatedOn\":\"2016-05-31T23:14:09.6924345Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6877c72c-edd3-4048-9b4b-cf8e514477b0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6877c72c-edd3-4048-9b4b-cf8e514477b0\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:25.4031403Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Reader and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything but will not let you delete or create a storage account or contained resource. It will also allow read/write access to all data contained in a storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2018-03-28T17:50:03.9656854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Redis Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:01.9877071Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Resource Policy Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"(Preview) Backfilled users from EA, with rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2018-01-30T18:08:27.8272264Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:02.5343995Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:03.0463472Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.Security/locations/alerts/dismiss/action\",\"Microsoft.Security/locations/alerts/activate/action\",\"Microsoft.Security/locations/tasks/dismiss/action\",\"Microsoft.Security/locations/tasks/activate/action\",\"Microsoft.Security/policies/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2018-03-08T18:19:50.7393029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage security components, security policies and virtual machines\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2018-03-08T18:18:48.6183620Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2017-05-03T18:42:54.9787380Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Site Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2017-06-29T05:31:19.7240473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2017-06-29T05:42:27.1715639Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Site Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2017-05-26T19:54:51.3933250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"SQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL databases, but not access to them. Also, you can't manage their security-related policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.1575716Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the security-related policies of SQL servers and databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:40.2200727Z\",\"createdBy\":null,\"updatedBy\":\"yaiyun\"},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"SQL Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL servers and databases, but not access to them, and not their security -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.8450730Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-08-21T07:43:20.3060994Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2017-04-13T20:57:14.5990198Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage Blob Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:11:00.4629296Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage Blob Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:15:19.5080840Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage Queue Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:16:40.1371662Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage Queue Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:19:30.5001463Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2017-06-23T01:06:24.2399631Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Traffic Manager profiles, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:44.1458854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"User Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:24.4656640Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual Machines in the portal and login as administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:17:57.0514548Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-11-14T03:00:30.1736393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Virtual Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual Machines in the portal and login as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:18:52.2780979Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Web Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:05.9401651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:06.5272742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"}]}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560?api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de?api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:57:37 GMT", + "date" : "Mon, 25 Jun 2018 19:57:07 GMT", "content-length" : "0", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "expires" : "-1", @@ -46,23 +45,23 @@ "StatusCode" : "202", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "b92331e7-8bfb-4294-bb14-3b147a56d3b8", + "x-ms-correlation-request-id" : "ccb474ac-238e-4ca6-b476-f940a2605936", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205737Z:b92331e7-8bfb-4294-bb14-3b147a56d3b8", + "x-ms-routing-request-id" : "WESTUS2:20180625T195707Z:ccb474ac-238e-4ca6-b476-f940a2605936", "content-type" : "text/plain; charset=utf-8", - "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/4838b816-b340-45c3-8c78-b6bb1f426707?monitor=true&api-version=2016-01-01", + "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/44894d05-901e-4141-8eb7-5c5ba66e3987?monitor=true&api-version=2016-01-01", "cache-control" : "no-cache", - "x-ms-request-id" : "4838b816-b340-45c3-8c78-b6bb1f426707", + "x-ms-request-id" : "44894d05-901e-4141-8eb7-5c5ba66e3987", "Body" : "" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/4838b816-b340-45c3-8c78-b6bb1f426707?monitor=true&api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/44894d05-901e-4141-8eb7-5c5ba66e3987?monitor=true&api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:57:44 GMT", + "date" : "Mon, 25 Jun 2018 19:57:11 GMT", "content-length" : "0", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "expires" : "-1", @@ -71,23 +70,23 @@ "StatusCode" : "202", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "a07a13cb-93b9-4ceb-934f-b0c60bd64f6d", + "x-ms-correlation-request-id" : "c6e6f8d6-e46d-4c85-8060-705e4bb86d1e", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205744Z:a07a13cb-93b9-4ceb-934f-b0c60bd64f6d", + "x-ms-routing-request-id" : "WESTUS2:20180625T195711Z:c6e6f8d6-e46d-4c85-8060-705e4bb86d1e", "content-type" : "text/plain; charset=utf-8", - "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/4838b816-b340-45c3-8c78-b6bb1f426707?monitor=true&api-version=2016-01-01", + "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/44894d05-901e-4141-8eb7-5c5ba66e3987?monitor=true&api-version=2016-01-01", "cache-control" : "no-cache", - "x-ms-request-id" : "9b7e72ae-b0d6-4016-8a5b-b95c45c33df7", + "x-ms-request-id" : "c673a180-ff08-437f-aaef-db16b0b5bd3a", "Body" : "" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/4838b816-b340-45c3-8c78-b6bb1f426707?monitor=true&api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/44894d05-901e-4141-8eb7-5c5ba66e3987?monitor=true&api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:01 GMT", + "date" : "Mon, 25 Jun 2018 19:57:28 GMT", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "content-length" : "907", "expires" : "-1", @@ -98,23 +97,23 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "9cac9148-0ea1-44a0-bdf5-c4fa5062dd75", + "x-ms-correlation-request-id" : "051491d6-12eb-4750-b804-f8949bc28b61", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205801Z:9cac9148-0ea1-44a0-bdf5-c4fa5062dd75", + "x-ms-routing-request-id" : "WESTUS2:20180625T195728Z:051491d6-12eb-4750-b804-f8949bc28b61", "content-type" : "application/json", "cache-control" : "no-cache", - "x-ms-request-id" : "16464d60-5ecb-4fba-83e8-644d202df549", - "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"name\":\"sa7333192560\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-04T20:57:37.3727703Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-04T20:57:37.2929918Z\",\"primaryEndpoints\":{\"blob\":\"https://sa7333192560.blob.core.windows.net/\",\"queue\":\"https://sa7333192560.queue.core.windows.net/\",\"table\":\"https://sa7333192560.table.core.windows.net/\",\"file\":\"https://sa7333192560.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" + "x-ms-request-id" : "31e536f6-9336-4230-9de2-784792656503", + "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"name\":\"sa22c29322de\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-25T19:57:07.3309146Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-25T19:57:07.2527139Z\",\"primaryEndpoints\":{\"blob\":\"https://sa22c29322de.blob.core.windows.net/\",\"queue\":\"https://sa22c29322de.queue.core.windows.net/\",\"table\":\"https://sa22c29322de.table.core.windows.net/\",\"file\":\"https://sa22c29322de.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560?api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de?api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:01 GMT", + "date" : "Mon, 25 Jun 2018 19:57:28 GMT", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "content-length" : "907", "expires" : "-1", @@ -125,51 +124,50 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "7f77794d-f69a-499d-95d5-5a74e7af88ef", + "x-ms-correlation-request-id" : "e0f391a5-af65-4732-86c0-0738af44a4f0", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205801Z:7f77794d-f69a-499d-95d5-5a74e7af88ef", + "x-ms-routing-request-id" : "WESTUS2:20180625T195728Z:e0f391a5-af65-4732-86c0-0738af44a4f0", "content-type" : "application/json", "cache-control" : "no-cache", - "x-ms-request-id" : "e89adc4a-0209-46c9-af37-8ba001504571", - "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"name\":\"sa7333192560\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-04T20:57:37.3727703Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-04T20:57:37.2929918Z\",\"primaryEndpoints\":{\"blob\":\"https://sa7333192560.blob.core.windows.net/\",\"queue\":\"https://sa7333192560.queue.core.windows.net/\",\"table\":\"https://sa7333192560.table.core.windows.net/\",\"file\":\"https://sa7333192560.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" + "x-ms-request-id" : "aba6d670-3f42-4dc0-82b2-554f144bd7ab", + "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"name\":\"sa22c29322de\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-25T19:57:07.3309146Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-25T19:57:07.2527139Z\",\"primaryEndpoints\":{\"blob\":\"https://sa22c29322de.blob.core.windows.net/\",\"queue\":\"https://sa22c29322de.queue.core.windows.net/\",\"table\":\"https://sa22c29322de.table.core.windows.net/\",\"file\":\"https://sa22c29322de.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560/providers/Microsoft.Authorization/roleAssignments/61927a2e-1dd1-4ae2-8ad1-e53fdf3ae32d?api-version=2015-07-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de/providers/Microsoft.Authorization/roleAssignments/4a9d964f-b76c-4e33-9d89-bf6f3a3d220b?api-version=2015-07-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (AuthorizationManagementClient, 2015-07-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:06 GMT", + "date" : "Mon, 25 Jun 2018 19:57:32 GMT", "content-length" : "868", "server" : "Microsoft-IIS/10.0", "expires" : "-1", - "x-ms-request-charge" : "4", + "x-ms-request-charge" : "3", "x-ms-ratelimit-remaining-subscription-writes" : "1198", "retry-after" : "0", "StatusCode" : "201", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "bc8944f9-ad0b-4cf7-86f5-b5bb3c48b3c6", + "x-ms-correlation-request-id" : "cb9fbbc4-091a-48e8-ba9a-1d0d552efe91", "set-cookie" : "x-ms-gateway-slice=productionb; path=/; secure; HttpOnly", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205806Z:bc8944f9-ad0b-4cf7-86f5-b5bb3c48b3c6", - "x-powered-by" : "ASP.NET", + "x-ms-routing-request-id" : "WESTUS2:20180625T195732Z:cb9fbbc4-091a-48e8-ba9a-1d0d552efe91", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-request-id" : "f3b7e668-a67c-4e1c-a497-f1c9987a93b4", - "Body" : "{\"properties\":{\"roleDefinitionId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"principalId\":\"93c27d83-f79b-4cb2-8dd4-4aa716542e74\",\"scope\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"createdOn\":\"2018-06-04T20:58:02.7052680Z\",\"updatedOn\":\"2018-06-04T20:58:02.7052680Z\",\"createdBy\":null,\"updatedBy\":\"00000000-0000-0000-0000-000000000000\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560/providers/Microsoft.Authorization/roleAssignments/61927a2e-1dd1-4ae2-8ad1-e53fdf3ae32d\",\"type\":\"Microsoft.Authorization/roleAssignments\",\"name\":\"61927a2e-1dd1-4ae2-8ad1-e53fdf3ae32d\"}" + "x-ms-request-id" : "8dc91423-9658-4d21-afd4-a3e5e1b7926b", + "Body" : "{\"properties\":{\"roleDefinitionId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"principalId\":\"93c27d83-f79b-4cb2-8dd4-4aa716542e74\",\"scope\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"createdOn\":\"2018-06-25T19:57:29.4073593Z\",\"updatedOn\":\"2018-06-25T19:57:29.4073593Z\",\"createdBy\":null,\"updatedBy\":\"00000000-0000-0000-0000-000000000000\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de/providers/Microsoft.Authorization/roleAssignments/4a9d964f-b76c-4e33-9d89-bf6f3a3d220b\",\"type\":\"Microsoft.Authorization/roleAssignments\",\"name\":\"4a9d964f-b76c-4e33-9d89-bf6f3a3d220b\"}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:08 GMT", + "date" : "Mon, 25 Jun 2018 19:57:34 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "819", "expires" : "-1", @@ -181,24 +179,24 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "01ffcafa-195c-4e2d-b70d-c58e806b4495", + "x-ms-correlation-request-id" : "f92e3842-bb30-4d26-848a-e6bc47ce7874", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205808Z:01ffcafa-195c-4e2d-b70d-c58e806b4495", + "x-ms-routing-request-id" : "WESTUS2:20180625T195735Z:f92e3842-bb30-4d26-848a-e6bc47ce7874", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "01ffcafa-195c-4e2d-b70d-c58e806b4495", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e\",\"name\":\"vaultf9c58684e\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultf9c58684e.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "f92e3842-bb30-4d26-848a-e6bc47ce7874", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495\",\"name\":\"vault815130495\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault815130495.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:08 GMT", + "date" : "Mon, 25 Jun 2018 19:57:34 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "820", "expires" : "-1", @@ -210,24 +208,24 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "a787b984-b09e-4e80-bdbb-fb9f06776b18", + "x-ms-correlation-request-id" : "1adf5245-3b25-4651-b5f7-4dfdb6608457", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205808Z:a787b984-b09e-4e80-bdbb-fb9f06776b18", + "x-ms-routing-request-id" : "WESTUS2:20180625T195735Z:1adf5245-3b25-4651-b5f7-4dfdb6608457", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "a787b984-b09e-4e80-bdbb-fb9f06776b18", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e\",\"name\":\"vaultf9c58684e\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultf9c58684e.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "1adf5245-3b25-4651-b5f7-4dfdb6608457", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495\",\"name\":\"vault815130495\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault815130495.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:38 GMT", + "date" : "Mon, 25 Jun 2018 19:58:05 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "815", "expires" : "-1", @@ -239,25 +237,25 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "e4efb768-436c-454f-952c-31dcf547f7ef", + "x-ms-correlation-request-id" : "52306e25-95c8-4dae-b317-fd481ae007d9", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205838Z:e4efb768-436c-454f-952c-31dcf547f7ef", + "x-ms-routing-request-id" : "WESTUS2:20180625T195805Z:52306e25-95c8-4dae-b317-fd481ae007d9", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "e4efb768-436c-454f-952c-31dcf547f7ef", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultf9c58684e\",\"name\":\"vaultf9c58684e\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultf9c58684e.vault.azure.net\",\"provisioningState\":\"Succeeded\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "52306e25-95c8-4dae-b317-fd481ae007d9", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault815130495\",\"name\":\"vault815130495\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"get\",\"backup\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault815130495.vault.azure.net\",\"provisioningState\":\"Succeeded\"}}" } }, { "Method" : "PUT", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:38 GMT", + "date" : "Mon, 25 Jun 2018 19:58:04 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -269,22 +267,22 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "69ef2bd3-cec2-4604-9865-fcf7edbaa1c2", + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "6e160f0b-ecec-4c4c-ac01-b1e4646c42e1", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:42 GMT", + "date" : "Mon, 25 Jun 2018 19:58:08 GMT", "content-length" : "402", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -296,22 +294,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "2865cee1-ce88-4928-b1d5-4c5095e41662", - "Body" : "{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145923,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "a79cd7b0-02de-472d-9854-75c1784e8b6c", + "Body" : "{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956689,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:45 GMT", + "date" : "Mon, 25 Jun 2018 19:58:11 GMT", "content-length" : "354", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -323,22 +321,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "6aad644b-7ee3-4f3d-a280-d7babe80c65b", - "Body" : "{\"value\":[{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145923,\"recoveryLevel\":\"Purgeable\"}}],\"nextLink\":null}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "9f18b775-7248-4516-af92-bf5d1f1e67be", + "Body" : "{\"value\":[{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956689,\"recoveryLevel\":\"Purgeable\"}}],\"nextLink\":null}" } }, { "Method" : "GET", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:48 GMT", + "date" : "Mon, 25 Jun 2018 19:58:13 GMT", "content-length" : "402", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -350,22 +348,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "44fd84a3-bd31-4693-bd92-aacb07278eb1", - "Body" : "{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145923,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "1afd1f24-fc5c-4214-84d5-f4a121e6f4e6", + "Body" : "{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956689,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "PATCH", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:49 GMT", + "date" : "Mon, 25 Jun 2018 19:58:16 GMT", "content-length" : "403", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -377,22 +375,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "2c414424-e55f-421f-873b-66ccb4144d0d", - "Body" : "{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145929,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "68734eec-d905-44f0-bf46-9bf5f3e2f5dd", + "Body" : "{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956696,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:51 GMT", + "date" : "Mon, 25 Jun 2018 19:58:17 GMT", "content-length" : "403", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -404,22 +402,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "b5677d96-4c52-409c-afe6-b6be2b5abcb0", - "Body" : "{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145929,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "b301b119-8771-4b6b-b06a-44b0e42afd7d", + "Body" : "{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956696,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "DELETE", - "Uri" : "https://vaultf9c58684e.vault.azure.net/storage/sa7333192560?api-version=7.0-preview", + "Uri" : "https://vault815130495.vault.azure.net/storage/sa22c29322de?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:53 GMT", + "date" : "Mon, 25 Jun 2018 19:58:19 GMT", "content-length" : "403", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -431,13 +429,13 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "3527ed0c-71c1-4a77-9566-cb6db3d33991", - "Body" : "{\"id\":\"https://vaultf9c58684e.vault.azure.netstorage/sa7333192560\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa7333192560\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1528145923,\"updated\":1528145929,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "99defcc1-132b-47ac-a61e-14ad418f0b4a", + "Body" : "{\"id\":\"https://vault815130495.vault.azure.netstorage/sa22c29322de\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa22c29322de\",\"activeKeyName\":\"key2\",\"autoRegenerateKey\":false,\"regenerationPeriod\":\"P60D\",\"attributes\":{\"enabled\":true,\"created\":1529956689,\"updated\":1529956696,\"recoveryLevel\":\"Purgeable\"}}" } } ], - "variables" : [ "sa7333192560", "vaultf9c58684e" ] + "variables" : [ "sa22c29322de", "vault815130495" ] } \ No newline at end of file diff --git a/azure-keyvault/target/test-classes/session-records/testSetAndGetSasDefinitionForManagedStorageAccountKey.json b/azure-keyvault/target/test-classes/session-records/testSetAndGetSasDefinitionForManagedStorageAccountKey.json index dc6af43..7c82fe2 100644 --- a/azure-keyvault/target/test-classes/session-records/testSetAndGetSasDefinitionForManagedStorageAccountKey.json +++ b/azure-keyvault/target/test-classes/session-records/testSetAndGetSasDefinitionForManagedStorageAccountKey.json @@ -7,9 +7,9 @@ "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:54 GMT", + "date" : "Mon, 25 Jun 2018 19:58:20 GMT", "server" : "Microsoft-IIS/10.0", - "content-length" : "86519", + "content-length" : "87830", "expires" : "-1", "transfer-encoding" : "chunked", "vary" : "Accept-Encoding", @@ -18,26 +18,25 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "402d042e-87e9-4484-ab92-7ac29bd16377", + "x-ms-correlation-request-id" : "2e3d66fb-4307-418a-a681-d99dfbc9ccc5", "set-cookie" : "x-ms-gateway-slice=productionb; path=/; secure; HttpOnly", "x-ms-ratelimit-remaining-tenant-reads" : "14999", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205855Z:402d042e-87e9-4484-ab92-7ac29bd16377", - "x-powered-by" : "ASP.NET", + "x-ms-routing-request-id" : "WESTUS2:20180625T195820Z:2e3d66fb-4307-418a-a681-d99dfbc9ccc5", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-request-id" : "e799d4f0-84c3-425a-961f-6dca855221e1", - "Body" : "{\"value\":[{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\",\"Microsoft.ContainerRegistry/registries/*/write\"],\"notActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2018-03-17T01:25:51.8758677Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2018-03-17T01:26:48.6387319Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/write\",\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2018-03-17T01:27:36.3941651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service and the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-01-23T23:12:00.5823195Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"API Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2016-11-18T23:56:25.4682649Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2017-01-23T23:10:34.8876776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-11-29T20:30:34.2313394Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2017-04-19T23:34:59.9511581Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Automation Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2018-03-06T02:20:41.6886187Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2018-05-10T20:12:39.6978200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Automation Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2017-04-25T01:00:45.6444999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Azure Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/registrations/products/listDetails/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2017-11-13T23:54:02.4007080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/*\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2017-07-07T06:22:36.4530284Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Backup Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/cancel/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2017-09-13T10:34:41.5049784Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2017-09-13T10:33:25.5814653Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Billing Reader\",\"type\":\"BuiltInRole\",\"description\":\"Allows read access to billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2017-09-19T17:36:32.7624564Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"BizTalk Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:55.8430061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:52.6231539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.1585846Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN profiles and their endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.7051278Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles and their endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:54.2283001Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.3934954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.9379206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic Storage Account Key Operators are allowed to list and regenerate keys on Classic Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2017-04-13T20:54:03.0505986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"Classic Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:57.4788684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"ClearDB MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:58.1393839Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything except access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-05-30T19:22:32.4538167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2018-02-21T01:36:59.6186231Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Data Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create and manage data factories, as well as child resources within them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-04-06T22:49:28.1118955Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you submit, monitor, and manage your own jobs but not create or delete Data Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2017-08-18T00:00:17.0411642Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"Data Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2018-04-30T22:44:15.1171162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"DevTest Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, restart, and shutdown your virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2017-02-02T02:38:38.2961026Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DNS zones and record sets in Azure DNS, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:40.3710365Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"DocumentDB Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.2132374Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"Intelligent Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:59.7946586Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-12-14T02:01:18.4641200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Lab Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create, manage, delete your managed labs under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2018-03-08T19:53:30.3032044Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Contributor can read all monitoring data and edit monitoring settings. Editing monitoring settings includes adding the VM extension to VMs; reading storage account keys to be able to configure collection of logs from Azure Storage; creating and configuring Automation accounts; adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2018-01-30T18:08:26.6376126Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Log Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Reader can view and search all monitoring data as well as and view monitoring settings, including viewing the configuration of Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2018-01-30T18:08:26.0438523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Logic App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:11:44.8580600Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Logic App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:14:26.9539724Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Managed Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2017-12-14T22:17:02.2740594Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Managed Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2017-12-14T22:16:00.1483256Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Monitoring Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/workloads/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2018-04-02T19:04:30.9448972Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"Monitoring Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2018-01-30T18:08:27.2626250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2016-05-31T23:14:00.3326359Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"New Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage New Relic Application Performance Management accounts and applications, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.7538043Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything, including access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:00.9179619Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"PowerApps Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The user has access to perform administrative actions on all PowerApps resources within the tenant.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/actions/admin/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:41.9912926Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/53be45b2-ad40-43ab-bc1f-2c962ac99ded\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"53be45b2-ad40-43ab-bc1f-2c962ac99ded\"},{\"properties\":{\"roleName\":\"PowerAppsReaderWithReshare\",\"type\":\"BuiltInRole\",\"description\":\"PowerAppsReadersWithReshare can use the resource and re-share it with other users, but cannot edit the resource or re-share it with edit permissions.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/*/permissions/write\",\"Microsoft.PowerApps/*/read\"],\"notActions\":[\"Microsoft.PowerApps/*/delete\",\"Microsoft.PowerApps/*/write\"]}],\"createdOn\":\"2016-03-15T00:55:03.0666416Z\",\"updatedOn\":\"2016-05-31T23:14:09.6924345Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6877c72c-edd3-4048-9b4b-cf8e514477b0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6877c72c-edd3-4048-9b4b-cf8e514477b0\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:25.4031403Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Reader and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything but will not let you delete or create a storage account or contained resource. It will also allow read/write access to all data contained in a storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2018-03-28T17:50:03.9656854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Redis Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:01.9877071Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Resource Policy Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"(Preview) Backfilled users from EA, with rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2018-01-30T18:08:27.8272264Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:02.5343995Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:03.0463472Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.Security/locations/alerts/dismiss/action\",\"Microsoft.Security/locations/alerts/activate/action\",\"Microsoft.Security/locations/tasks/dismiss/action\",\"Microsoft.Security/locations/tasks/activate/action\",\"Microsoft.Security/policies/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2018-03-08T18:19:50.7393029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security Manager (Legacy)\",\"type\":\"BuiltInRole\",\"description\":\"This is a legacy role. Please use Security Administrator instead\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2018-03-08T18:18:48.6183620Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2017-05-03T18:42:54.9787380Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Site Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2017-06-29T05:31:19.7240473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2017-06-29T05:42:27.1715639Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Site Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2017-05-26T19:54:51.3933250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"SQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL databases, but not access to them. Also, you can't manage their security-related policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.1575716Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the security-related policies of SQL servers and databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:40.2200727Z\",\"createdBy\":null,\"updatedBy\":\"yaiyun\"},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"SQL Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL servers and databases, but not access to them, and not their security -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.8450730Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-08-21T07:43:20.3060994Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2017-04-13T20:57:14.5990198Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage Blob Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:11:00.4629296Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage Blob Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:15:19.5080840Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage Queue Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:16:40.1371662Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage Queue Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:19:30.5001463Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2017-06-23T01:06:24.2399631Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Traffic Manager profiles, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:44.1458854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"User Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:24.4656640Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"- Users with this role have the ability to login to a virtual machine with Windows administrator or Linux root user privileges.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:17:57.0514548Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage virtual machines, but not access to them, and not the virtual network or storage account they�re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-11-14T03:00:30.1736393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Virtual Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"Users with this role have the ability to login to a virtual machine as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:18:52.2780979Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Web Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:05.9401651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:06.5272742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"}]}" + "x-ms-request-id" : "5a9b4103-c2e9-4a60-be83-f6322192428f", + "Body" : "{\"value\":[{\"properties\":{\"roleName\":\"AcrImageSigner\",\"type\":\"BuiltInRole\",\"description\":\"acr image signer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\",\"Microsoft.ContainerRegistry/registries/*/write\"],\"notActions\":[]}],\"createdOn\":\"2018-03-15T23:23:08.4038322Z\",\"updatedOn\":\"2018-03-17T01:25:51.8758677Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6cef56e8-d556-48e5-a04f-b8e64114680f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6cef56e8-d556-48e5-a04f-b8e64114680f\"},{\"properties\":{\"roleName\":\"AcrQuarantineReader\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data reader\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:27:39.9596835Z\",\"updatedOn\":\"2018-03-17T01:26:48.6387319Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cdda3590-29a3-44f6-95f2-9f980659eb04\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cdda3590-29a3-44f6-95f2-9f980659eb04\"},{\"properties\":{\"roleName\":\"AcrQuarantineWriter\",\"type\":\"BuiltInRole\",\"description\":\"acr quarantine data writer\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ContainerRegistry/registries/*/write\",\"Microsoft.ContainerRegistry/registries/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-16T00:26:37.5871820Z\",\"updatedOn\":\"2018-03-17T01:27:36.3941651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c8d4ff99-41c3-41a8-9f60-21dfdad59608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c8d4ff99-41c3-41a8-9f60-21dfdad59608\"},{\"properties\":{\"roleName\":\"API Management Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage API Management services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-01-23T23:12:00.5823195Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/312a565d-c81f-4fd8-895a-4e21e48d571c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"312a565d-c81f-4fd8-895a-4e21e48d571c\"},{\"properties\":{\"roleName\":\"API Management Service Operator Role\",\"type\":\"BuiltInRole\",\"description\":\"Can manage service but not the APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/backup/action\",\"Microsoft.ApiManagement/service/delete\",\"Microsoft.ApiManagement/service/managedeployments/action\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.ApiManagement/service/restore/action\",\"Microsoft.ApiManagement/service/updatecertificate/action\",\"Microsoft.ApiManagement/service/updatehostname/action\",\"Microsoft.ApiManagement/service/write\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:03:42.1194019Z\",\"updatedOn\":\"2016-11-18T23:56:25.4682649Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e022efe7-f5ba-4159-bbe4-b44f577e9b61\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e022efe7-f5ba-4159-bbe4-b44f577e9b61\"},{\"properties\":{\"roleName\":\"API Management Service Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Read-only access to service and APIs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ApiManagement/service/*/read\",\"Microsoft.ApiManagement/service/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.ApiManagement/service/users/keys/read\"]}],\"createdOn\":\"2016-11-09T00:26:45.1540473Z\",\"updatedOn\":\"2017-01-23T23:10:34.8876776Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/71522526-b88f-4d52-b57f-d31fc3546d0d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"71522526-b88f-4d52-b57f-d31fc3546d0d\"},{\"properties\":{\"roleName\":\"Application Insights Component Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage Application Insights components\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/webtests/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-11-29T20:30:34.2313394Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ae349356-3a1b-4a5e-921d-050484c6347e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ae349356-3a1b-4a5e-921d-050484c6347e\"},{\"properties\":{\"roleName\":\"Application Insights Snapshot Debugger\",\"type\":\"BuiltInRole\",\"description\":\"Gives user permission to use Application Insights Snapshot Debugger features\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T21:25:12.3728747Z\",\"updatedOn\":\"2017-04-19T23:34:59.9511581Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/08954f03-6346-4c2e-81c0-ec3a5cfae23b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"08954f03-6346-4c2e-81c0-ec3a5cfae23b\"},{\"properties\":{\"roleName\":\"Automation Job Operator\",\"type\":\"BuiltInRole\",\"description\":\"Create and Manage Jobs using Automation Runbooks.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:52:41.0020018Z\",\"updatedOn\":\"2018-03-06T02:20:41.6886187Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4fe576fe-1146-4730-92eb-48519fa6bf9f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4fe576fe-1146-4730-92eb-48519fa6bf9f\"},{\"properties\":{\"roleName\":\"Automation Operator\",\"type\":\"BuiltInRole\",\"description\":\"Automation Operators are able to start, stop, suspend, and resume jobs\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/hybridRunbookWorkerGroups/read\",\"Microsoft.Automation/automationAccounts/jobs/read\",\"Microsoft.Automation/automationAccounts/jobs/resume/action\",\"Microsoft.Automation/automationAccounts/jobs/stop/action\",\"Microsoft.Automation/automationAccounts/jobs/streams/read\",\"Microsoft.Automation/automationAccounts/jobs/suspend/action\",\"Microsoft.Automation/automationAccounts/jobs/write\",\"Microsoft.Automation/automationAccounts/jobSchedules/read\",\"Microsoft.Automation/automationAccounts/jobSchedules/write\",\"Microsoft.Automation/automationAccounts/linkedWorkspace/read\",\"Microsoft.Automation/automationAccounts/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Automation/automationAccounts/schedules/read\",\"Microsoft.Automation/automationAccounts/schedules/write\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Automation/automationAccounts/jobs/output/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-08-18T01:05:03.3916130Z\",\"updatedOn\":\"2018-05-10T20:12:39.6978200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d3881f73-407a-4167-8283-e981cbba0404\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d3881f73-407a-4167-8283-e981cbba0404\"},{\"properties\":{\"roleName\":\"Automation Runbook Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read Runbook properties - to be able to create Jobs of the runbook.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Automation/automationAccounts/runbooks/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-19T20:47:49.5640674Z\",\"updatedOn\":\"2017-04-25T01:00:45.6444999Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5fb5aef8-1081-4b8e-bb16-9d5d0385bab5\"},{\"properties\":{\"roleName\":\"Azure Stack Registration Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Azure Stack registrations.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.AzureStack/registrations/products/listDetails/action\",\"Microsoft.AzureStack/registrations/products/read\",\"Microsoft.AzureStack/registrations/read\"],\"notActions\":[]}],\"createdOn\":\"2017-11-13T23:42:06.2161827Z\",\"updatedOn\":\"2017-11-13T23:54:02.4007080Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6f12a6df-dd06-4f3e-bcb1-ce8be600526a\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6f12a6df-dd06-4f3e-bcb1-ce8be600526a\"},{\"properties\":{\"roleName\":\"Backup Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup service,but can't create vaults and give access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/*\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/*\",\"Microsoft.RecoveryServices/Vaults/certificates/*\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/*\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/Vaults/usages/*\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupSecurityPIN/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:12:15.7321344Z\",\"updatedOn\":\"2017-07-07T06:22:36.4530284Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e467623-bb1f-42f4-a55d-6e525e11384b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e467623-bb1f-42f4-a55d-6e525e11384b\"},{\"properties\":{\"roleName\":\"Backup Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage backup services, except removal of backup, vault creation and giving access to others\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/backup/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/provisionInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/restore/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/revokeInstantItemRecovery/action\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/*\",\"Microsoft.RecoveryServices/Vaults/backupJobs/cancel/action\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/*\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/*\",\"Microsoft.RecoveryServices/Vaults/backupProtectableItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/write\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/refreshContainers/action\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/write\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:21:11.8947640Z\",\"updatedOn\":\"2018-06-16T05:25:05.7455061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/00c29273-979b-4161-815c-10b084fb9324\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"00c29273-979b-4161-815c-10b084fb9324\"},{\"properties\":{\"roleName\":\"Backup Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view backup services, but can't make changes\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/operationsStatus/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupJobs/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/action\",\"Microsoft.RecoveryServices/Vaults/backupManagementMetaData/read\",\"Microsoft.RecoveryServices/Vaults/backupOperationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupProtectionContainers/read\",\"Microsoft.RecoveryServices/Vaults/backupUsageSummaries/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/backupconfig/vaultconfig/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/Vaults/backupJobsExport/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\"],\"notActions\":[]}],\"createdOn\":\"2017-01-03T13:18:41.3893065Z\",\"updatedOn\":\"2017-09-13T10:33:25.5814653Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a795c7a0-d4a2-40c1-ae25-d81f01202912\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a795c7a0-d4a2-40c1-ae25-d81f01202912\"},{\"properties\":{\"roleName\":\"Billing Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read billing data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Billing/*/read\",\"Microsoft.Consumption/*/read\",\"Microsoft.Commerce/*/read\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T02:13:38.9054151Z\",\"updatedOn\":\"2017-09-19T17:36:32.7624564Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fa23ad8b-c56e-40d8-ac0c-ce449e1d2c64\"},{\"properties\":{\"roleName\":\"BizTalk Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage BizTalk services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BizTalkServices/BizTalk/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:55.8430061Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5e3c6656-6cfa-4708-81fe-0de47ac73342\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5e3c6656-6cfa-4708-81fe-0de47ac73342\"},{\"properties\":{\"roleName\":\"CDN Endpoint Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:52.6231539Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/426e0c7f-0c7e-4658-b36f-ff54d6c29b45\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"426e0c7f-0c7e-4658-b36f-ff54d6c29b45\"},{\"properties\":{\"roleName\":\"CDN Endpoint Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/endpoints/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.1585846Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/871e35f6-b5c1-49cc-a043-bde969a0f2cd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"871e35f6-b5c1-49cc-a043-bde969a0f2cd\"},{\"properties\":{\"roleName\":\"CDN Profile Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can manage CDN profiles and their endpoints, but can’t grant access to other users.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:53.7051278Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ec156ff8-a8d1-4d15-830c-5b80698ca432\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ec156ff8-a8d1-4d15-830c-5b80698ca432\"},{\"properties\":{\"roleName\":\"CDN Profile Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can view CDN profiles and their endpoints, but can’t make changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cdn/edgenodes/read\",\"Microsoft.Cdn/operationresults/*\",\"Microsoft.Cdn/profiles/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-01-23T02:48:46.4996252Z\",\"updatedOn\":\"2016-05-31T23:13:54.2283001Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8f96442b-4075-438f-813d-ad51ab4019af\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8f96442b-4075-438f-813d-ad51ab4019af\"},{\"properties\":{\"roleName\":\"Classic Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicNetwork/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.3934954Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b34d265f-36f7-4a0d-a4d4-e158ca92e90f\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b34d265f-36f7-4a0d-a4d4-e158ca92e90f\"},{\"properties\":{\"roleName\":\"Classic Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:56.9379206Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/86e8f5dc-a6e9-4c67-9d15-de283e8eac25\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"86e8f5dc-a6e9-4c67-9d15-de283e8eac25\"},{\"properties\":{\"roleName\":\"Classic Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Classic Storage Account Key Operators are allowed to list and regenerate keys on Classic Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ClassicStorage/storageAccounts/listkeys/action\",\"Microsoft.ClassicStorage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:22:52.1461100Z\",\"updatedOn\":\"2017-04-13T20:54:03.0505986Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/985d6b00-f706-48f5-a6fe-d0ca12fb668d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"985d6b00-f706-48f5-a6fe-d0ca12fb668d\"},{\"properties\":{\"roleName\":\"Classic Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage classic virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/domainNames/*\",\"Microsoft.ClassicCompute/virtualMachines/*\",\"Microsoft.ClassicNetwork/networkSecurityGroups/join/action\",\"Microsoft.ClassicNetwork/reservedIps/link/action\",\"Microsoft.ClassicNetwork/reservedIps/read\",\"Microsoft.ClassicNetwork/virtualNetworks/join/action\",\"Microsoft.ClassicNetwork/virtualNetworks/read\",\"Microsoft.ClassicStorage/storageAccounts/disks/read\",\"Microsoft.ClassicStorage/storageAccounts/images/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:57.4788684Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/d73bb868-a0df-4d4d-bd69-98a00b01fccb\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"d73bb868-a0df-4d4d-bd69-98a00b01fccb\"},{\"properties\":{\"roleName\":\"ClearDB MySQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage ClearDB MySQL databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"successbricks.cleardb/databases/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:58.1393839Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9106cda0-8a86-4e81-b686-29a22c54effe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9106cda0-8a86-4e81-b686-29a22c54effe\"},{\"properties\":{\"roleName\":\"Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything except access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[\"Microsoft.Authorization/*/Delete\",\"Microsoft.Authorization/*/Write\",\"Microsoft.Authorization/elevateAccess/Action\",\"Microsoft.Blueprint/blueprintAssignments/write\",\"Microsoft.Blueprint/blueprintAssignments/delete\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-05-30T19:22:32.4538167Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b24988ac-6180-42a0-ab88-20f7382dd24c\"},{\"properties\":{\"roleName\":\"Cosmos DB Account Reader Role\",\"type\":\"BuiltInRole\",\"description\":\"Can read Azure Cosmos DB Accounts data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDB/*/read\",\"Microsoft.DocumentDB/databaseAccounts/readonlykeys/action\",\"Microsoft.Insights/MetricDefinitions/read\",\"Microsoft.Insights/Metrics/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-10-30T17:53:54.6005577Z\",\"updatedOn\":\"2018-02-21T01:36:59.6186231Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fbdf93bf-df7d-467e-a4d2-9458aa1360c8\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fbdf93bf-df7d-467e-a4d2-9458aa1360c8\"},{\"properties\":{\"roleName\":\"Data Factory Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage data factories, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DataFactory/dataFactories/*\",\"Microsoft.DataFactory/factories/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-04-06T22:49:28.1118955Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/673868aa-7521-48a0-acc6-0f60742d39f5\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"673868aa-7521-48a0-acc6-0f60742d39f5\"},{\"properties\":{\"roleName\":\"Data Lake Analytics Developer\",\"type\":\"BuiltInRole\",\"description\":\"Lets you submit, monitor, and manage your own jobs but not create or delete Data Lake Analytics accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.BigAnalytics/accounts/*\",\"Microsoft.DataLakeAnalytics/accounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.BigAnalytics/accounts/Delete\",\"Microsoft.BigAnalytics/accounts/TakeOwnership/action\",\"Microsoft.BigAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/TakeOwnership/action\",\"Microsoft.DataLakeAnalytics/accounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/dataLakeStoreAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Write\",\"Microsoft.DataLakeAnalytics/accounts/storageAccounts/Delete\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Write\",\"Microsoft.DataLakeAnalytics/accounts/firewallRules/Delete\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Write\",\"Microsoft.DataLakeAnalytics/accounts/computePolicies/Delete\"]}],\"createdOn\":\"2015-10-20T00:33:29.3115234Z\",\"updatedOn\":\"2017-08-18T00:00:17.0411642Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/47b7735b-770e-4598-a7da-8b91488b4c88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"47b7735b-770e-4598-a7da-8b91488b4c88\"},{\"properties\":{\"roleName\":\"Data Purger\",\"type\":\"BuiltInRole\",\"description\":\"Can purge analytics data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/components/*/read\",\"Microsoft.Insights/components/purge/action\",\"Microsoft.OperationalInsights/workspaces/*/read\",\"Microsoft.OperationalInsights/workspaces/purge/action\"],\"notActions\":[]}],\"createdOn\":\"2018-04-30T22:39:49.6167700Z\",\"updatedOn\":\"2018-04-30T22:44:15.1171162Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/150f5e0c-0603-4f03-8c7f-cf70034c4e90\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"150f5e0c-0603-4f03-8c7f-cf70034c4e90\"},{\"properties\":{\"roleName\":\"DevTest Labs User\",\"type\":\"BuiltInRole\",\"description\":\"Lets you connect, start, restart, and shutdown virtual machines in your Azure DevTest Labs.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/read\",\"Microsoft.Compute/virtualMachines/*/read\",\"Microsoft.Compute/virtualMachines/deallocate/action\",\"Microsoft.Compute/virtualMachines/read\",\"Microsoft.Compute/virtualMachines/restart/action\",\"Microsoft.Compute/virtualMachines/start/action\",\"Microsoft.DevTestLab/*/read\",\"Microsoft.DevTestLab/labs/createEnvironment/action\",\"Microsoft.DevTestLab/labs/claimAnyVm/action\",\"Microsoft.DevTestLab/labs/formulas/delete\",\"Microsoft.DevTestLab/labs/formulas/read\",\"Microsoft.DevTestLab/labs/formulas/write\",\"Microsoft.DevTestLab/labs/policySets/evaluatePolicies/action\",\"Microsoft.DevTestLab/labs/virtualMachines/claim/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/networkInterfaces/*/read\",\"Microsoft.Network/networkInterfaces/join/action\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Network/networkInterfaces/write\",\"Microsoft.Network/publicIPAddresses/*/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/deployments/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\"],\"notActions\":[\"Microsoft.Compute/virtualMachines/vmSizes/read\"]}],\"createdOn\":\"2015-06-08T21:52:45.0657582Z\",\"updatedOn\":\"2017-02-02T02:38:38.2961026Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/76283e04-6283-4c54-8f91-bcf1374a3c64\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"76283e04-6283-4c54-8f91-bcf1374a3c64\"},{\"properties\":{\"roleName\":\"DNS Zone Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DNS zones and record sets in Azure DNS, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/dnsZones/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:40.3710365Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/befefa01-2a29-4197-83a8-272ff33ce314\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"befefa01-2a29-4197-83a8-272ff33ce314\"},{\"properties\":{\"roleName\":\"DocumentDB Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage DocumentDB accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.DocumentDb/databaseAccounts/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.2132374Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5bd9cd88-fe45-4216-938b-f97437e15450\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5bd9cd88-fe45-4216-938b-f97437e15450\"},{\"properties\":{\"roleName\":\"Intelligent Systems Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Intelligent Systems accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.IntelligentSystems/accounts/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:59.7946586Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/03a6d094-3444-4b3d-88af-7477090a9e5e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"03a6d094-3444-4b3d-88af-7477090a9e5e\"},{\"properties\":{\"roleName\":\"Key Vault Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage key vaults, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.KeyVault/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.KeyVault/locations/deletedVaults/purge/action\",\"Microsoft.KeyVault/hsmPools/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2017-12-14T02:01:18.4641200Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f25e0fa2-a7c8-4377-a976-54943a77a395\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f25e0fa2-a7c8-4377-a976-54943a77a395\"},{\"properties\":{\"roleName\":\"Lab Creator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create, manage, delete your managed labs under your Azure Lab Accounts.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.LabServices/labAccounts/*/read\",\"Microsoft.LabServices/labAccounts/createLab/action\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2018-01-18T23:38:58.1036141Z\",\"updatedOn\":\"2018-03-08T19:53:30.3032044Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"b97fb8bc-a8b2-4522-a38b-dd33c7e65ead\"},{\"properties\":{\"roleName\":\"Log Analytics Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Contributor can read all monitoring data and edit monitoring settings. Editing monitoring settings includes adding the VM extension to VMs; reading storage account keys to be able to configure collection of logs from Azure Storage; creating and configuring Automation accounts; adding solutions; and configuring Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Automation/automationAccounts/*\",\"Microsoft.ClassicCompute/virtualMachines/extensions/*\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.Compute/virtualMachines/extensions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.OperationalInsights/*\",\"Microsoft.OperationsManagement/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourcegroups/deployments/*\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-04-25T21:51:45.3174711Z\",\"updatedOn\":\"2018-01-30T18:08:26.6376126Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/92aaf0da-9dab-42b6-94a3-d43ce8d16293\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"92aaf0da-9dab-42b6-94a3-d43ce8d16293\"},{\"properties\":{\"roleName\":\"Log Analytics Reader\",\"type\":\"BuiltInRole\",\"description\":\"Log Analytics Reader can view and search all monitoring data as well as and view monitoring settings, including viewing the configuration of Azure diagnostics on all Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/analytics/query/action\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.OperationalInsights/workspaces/sharedKeys/read\"]}],\"createdOn\":\"2017-05-02T00:20:28.1449012Z\",\"updatedOn\":\"2018-01-30T18:08:26.0438523Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/73c42c96-874c-492b-b04d-ab87d138a893\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"73c42c96-874c-492b-b04d-ab87d138a893\"},{\"properties\":{\"roleName\":\"Logic App Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage logic app, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicStorage/storageAccounts/listKeys/action\",\"Microsoft.ClassicStorage/storageAccounts/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Insights/logdefinitions/*\",\"Microsoft.Insights/metricDefinitions/*\",\"Microsoft.Logic/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*\",\"Microsoft.Web/connections/*\",\"Microsoft.Web/customApis/*\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/functions/listSecrets/action\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:11:44.8580600Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/87a39d53-fc1b-424a-814c-f7e04687dc9e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"87a39d53-fc1b-424a-814c-f7e04687dc9e\"},{\"properties\":{\"roleName\":\"Logic App Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you read, enable and disable logic app.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*/read\",\"Microsoft.Insights/diagnosticSettings/*/read\",\"Microsoft.Insights/metricDefinitions/*/read\",\"Microsoft.Logic/*/read\",\"Microsoft.Logic/workflows/disable/action\",\"Microsoft.Logic/workflows/enable/action\",\"Microsoft.Logic/workflows/validate/action\",\"Microsoft.Resources/deployments/operations/read\",\"Microsoft.Resources/subscriptions/operationresults/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/connectionGateways/*/read\",\"Microsoft.Web/connections/*/read\",\"Microsoft.Web/customApis/*/read\",\"Microsoft.Web/serverFarms/read\"],\"notActions\":[]}],\"createdOn\":\"2016-04-28T21:33:30.4656007Z\",\"updatedOn\":\"2018-01-10T23:14:26.9539724Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"515c2055-d9d4-4321-b1b9-bd0c9a0f79fe\"},{\"properties\":{\"roleName\":\"Managed Identity Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Create, Read, Update, and Delete User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/write\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/delete\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:53:42.8804692Z\",\"updatedOn\":\"2017-12-14T22:17:02.2740594Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e40ec5ca-96e0-45a2-b4ff-59039f2c2b59\"},{\"properties\":{\"roleName\":\"Managed Identity Operator\",\"type\":\"BuiltInRole\",\"description\":\"Read and Assign User Assigned Identity\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.ManagedIdentity/userAssignedIdentities/*/read\",\"Microsoft.ManagedIdentity/userAssignedIdentities/*/assign/action\",\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-12-14T19:52:04.3924594Z\",\"updatedOn\":\"2017-12-14T22:16:00.1483256Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/f1a07417-d97a-45cb-824c-7a7467783830\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"f1a07417-d97a-45cb-824c-7a7467783830\"},{\"properties\":{\"roleName\":\"Management Group Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Management Group Contributor Role\",\"assignableScopes\":[\"/providers/Microsoft.Management\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/delete\",\"Microsoft.Management/managementGroups/read\",\"Microsoft.Management/managementGroups/subscriptions/delete\",\"Microsoft.Management/managementGroups/subscriptions/write\",\"Microsoft.Management/managementGroups/write\"],\"notActions\":[]}],\"createdOn\":\"2018-06-22T00:28:29.0523964Z\",\"updatedOn\":\"2018-06-22T00:29:40.3047486Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d58bcaf-24a5-4b20-bdb6-eed9f69fbe4c\"},{\"properties\":{\"roleName\":\"Management Group Reader\",\"type\":\"BuiltInRole\",\"description\":\"Management Group Reader Role\",\"assignableScopes\":[\"/providers/Microsoft.Management\"],\"permissions\":[{\"actions\":[\"Microsoft.Management/managementGroups/read\"],\"notActions\":[]}],\"createdOn\":\"2018-06-22T00:31:03.4295347Z\",\"updatedOn\":\"2018-06-22T00:32:11.5701900Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ac63b705-f282-497d-ac71-919bf39d939d\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ac63b705-f282-497d-ac71-919bf39d939d\"},{\"properties\":{\"roleName\":\"Monitoring Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data and update monitoring settings.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.AlertsManagement/alerts/*\",\"Microsoft.AlertsManagement/alertsSummary/*\",\"Microsoft.Insights/AlertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.Insights/DiagnosticSettings/*\",\"Microsoft.Insights/eventtypes/*\",\"Microsoft.Insights/LogDefinitions/*\",\"Microsoft.Insights/MetricDefinitions/*\",\"Microsoft.Insights/Metrics/*\",\"Microsoft.Insights/Register/Action\",\"Microsoft.Insights/webtests/*\",\"Microsoft.Insights/actiongroups/*\",\"Microsoft.Insights/metricalerts/*\",\"Microsoft.Insights/scheduledqueryrules/*\",\"Microsoft.OperationalInsights/workspaces/intelligencepacks/*\",\"Microsoft.OperationalInsights/workspaces/savedSearches/*\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.OperationalInsights/workspaces/sharedKeys/action\",\"Microsoft.OperationalInsights/workspaces/storageinsightconfigs/*\",\"Microsoft.Support/*\",\"Microsoft.WorkloadMonitor/workloads/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:21:08.4345976Z\",\"updatedOn\":\"2018-04-02T19:04:30.9448972Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/749f88d5-cbae-40b8-bcfc-e573ddc772fa\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"749f88d5-cbae-40b8-bcfc-e573ddc772fa\"},{\"properties\":{\"roleName\":\"Monitoring Reader\",\"type\":\"BuiltInRole\",\"description\":\"Can read all monitoring data.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.OperationalInsights/workspaces/search/action\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2016-09-21T19:19:52.4939376Z\",\"updatedOn\":\"2018-01-30T18:08:27.2626250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/43d0d8ad-25c7-4714-9337-8ba259a9fe05\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"43d0d8ad-25c7-4714-9337-8ba259a9fe05\"},{\"properties\":{\"roleName\":\"Network Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage networks, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2016-05-31T23:14:00.3326359Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/4d97b98b-1d4f-4787-a291-c67834d212e7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"4d97b98b-1d4f-4787-a291-c67834d212e7\"},{\"properties\":{\"roleName\":\"New Relic APM Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage New Relic Application Performance Management accounts and applications, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"NewRelic.APM/accounts/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:07.7538043Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/5d28c62d-5b37-4476-8438-e587778df237\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"5d28c62d-5b37-4476-8438-e587778df237\"},{\"properties\":{\"roleName\":\"Owner\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage everything, including access to resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:00.9179619Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"8e3af657-a8ff-443c-a75c-2fe8c4bcb635\"},{\"properties\":{\"roleName\":\"PowerApps Administrator\",\"type\":\"BuiltInRole\",\"description\":\"The user has access to perform administrative actions on all PowerApps resources within the tenant.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/actions/admin/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:13:41.9912926Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/53be45b2-ad40-43ab-bc1f-2c962ac99ded\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"53be45b2-ad40-43ab-bc1f-2c962ac99ded\"},{\"properties\":{\"roleName\":\"PowerAppsReaderWithReshare\",\"type\":\"BuiltInRole\",\"description\":\"PowerAppsReadersWithReshare can use the resource and re-share it with other users, but cannot edit the resource or re-share it with edit permissions.\",\"assignableScopes\":[\"/providers/Microsoft.PowerApps\"],\"permissions\":[{\"actions\":[\"Microsoft.PowerApps/*/permissions/write\",\"Microsoft.PowerApps/*/read\"],\"notActions\":[\"Microsoft.PowerApps/*/delete\",\"Microsoft.PowerApps/*/write\"]}],\"createdOn\":\"2016-03-15T00:55:03.0666416Z\",\"updatedOn\":\"2016-05-31T23:14:09.6924345Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6877c72c-edd3-4048-9b4b-cf8e514477b0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6877c72c-edd3-4048-9b4b-cf8e514477b0\"},{\"properties\":{\"roleName\":\"Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything, but not make any changes.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:25.4031403Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/acdd72a7-3385-48ef-bd42-f606fba81ae7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"acdd72a7-3385-48ef-bd42-f606fba81ae7\"},{\"properties\":{\"roleName\":\"Reader and Data Access\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view everything but will not let you delete or create a storage account or contained resource. It will also allow read/write access to all data contained in a storage account via access to storage account keys.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\"],\"notActions\":[]}],\"createdOn\":\"2018-03-27T23:20:46.1498906Z\",\"updatedOn\":\"2018-03-28T17:50:03.9656854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/c12c1c16-33a1-487b-954d-41c89c60f349\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"c12c1c16-33a1-487b-954d-41c89c60f349\"},{\"properties\":{\"roleName\":\"Redis Cache Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Redis caches, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Cache/redis/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:01.9877071Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e0f68234-74aa-48ed-b826-c38b57376e17\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e0f68234-74aa-48ed-b826-c38b57376e17\"},{\"properties\":{\"roleName\":\"Resource Policy Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"(Preview) Backfilled users from EA, with rights to create/modify resource policy, create support ticket and read resources/hierarchy.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/policyassignments/*\",\"Microsoft.Authorization/policydefinitions/*\",\"Microsoft.Authorization/policysetdefinitions/*\",\"Microsoft.PolicyInsights/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-08-25T19:08:01.3861639Z\",\"updatedOn\":\"2018-01-30T18:08:27.8272264Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/36243c78-bf99-498c-9df9-86d9f8d28608\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"36243c78-bf99-498c-9df9-86d9f8d28608\"},{\"properties\":{\"roleName\":\"Scheduler Job Collections Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Scheduler job collections, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Scheduler/jobcollections/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:02.5343995Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/188a0f2f-5c9e-469b-ae67-2aa5ce574b94\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"188a0f2f-5c9e-469b-ae67-2aa5ce574b94\"},{\"properties\":{\"roleName\":\"Search Service Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Search services, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Search/searchServices/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:03.0463472Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/7ca78c08-252a-4471-8644-bb5ff32d4ba0\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"7ca78c08-252a-4471-8644-bb5ff32d4ba0\"},{\"properties\":{\"roleName\":\"Security Admin\",\"type\":\"BuiltInRole\",\"description\":\"Security Admin Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Authorization/policyAssignments/*\",\"Microsoft.Authorization/policyDefinitions/*\",\"Microsoft.Authorization/policySetDefinitions/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\",\"Microsoft.Security/locations/alerts/dismiss/action\",\"Microsoft.Security/locations/alerts/activate/action\",\"Microsoft.Security/locations/tasks/dismiss/action\",\"Microsoft.Security/locations/tasks/activate/action\",\"Microsoft.Security/policies/write\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:51:23.0917487Z\",\"updatedOn\":\"2018-03-08T18:19:50.7393029Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb1c8493-542b-48eb-b624-b4c8fea62acd\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb1c8493-542b-48eb-b624-b4c8fea62acd\"},{\"properties\":{\"roleName\":\"Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage security components, security policies and virtual machines\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.ClassicCompute/*/read\",\"Microsoft.ClassicCompute/virtualMachines/*/write\",\"Microsoft.ClassicNetwork/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-22T17:45:15.8986455Z\",\"updatedOn\":\"2018-03-08T18:18:48.6183620Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/e3d13bf0-dd5a-482e-ba6b-9b8433878d10\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"e3d13bf0-dd5a-482e-ba6b-9b8433878d10\"},{\"properties\":{\"roleName\":\"Security Reader\",\"type\":\"BuiltInRole\",\"description\":\"Security Reader Role\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Insights/alertRules/*\",\"Microsoft.Resources/deployments/*\",\"Microsoft.operationalInsights/workspaces/*/read\",\"Microsoft.Authorization/*/read\",\"Microsoft.Support/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Security/*/read\"],\"notActions\":[]}],\"createdOn\":\"2017-05-03T07:48:49.0516559Z\",\"updatedOn\":\"2017-05-03T18:42:54.9787380Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/39bc4728-0917-49c7-9d2c-d95423bc2eb4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"39bc4728-0917-49c7-9d2c-d95423bc2eb4\"},{\"properties\":{\"roleName\":\"Site Recovery Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Site Recovery service except vault creation and role assignment\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/certificates/write\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/*\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/*\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/*\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/*\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/*\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/*\",\"Microsoft.RecoveryServices/Vaults/storageConfig/*\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:46:17.4592776Z\",\"updatedOn\":\"2017-06-29T05:31:19.7240473Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6670b86e-a3f7-4917-ac9b-5d6ab1be4567\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6670b86e-a3f7-4917-ac9b-5d6ab1be4567\"},{\"properties\":{\"roleName\":\"Site Recovery Operator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you failover and failback but not perform other Site Recovery management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/locations/allocateStamp/action\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/checkConsistency/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/reassociateGateway/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/renewcertificate/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/applyRecoveryPoint/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/repairReplication/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/unplannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/updateMobilityService/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/refreshProvider/action\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/*\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/failoverCommit/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/plannedFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/reProtect/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailover/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/testFailoverCleanup/action\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/unplannedFailover/action\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/*\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:47:50.1341148Z\",\"updatedOn\":\"2017-06-29T05:42:27.1715639Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/494ae006-db33-4328-bf46-533a6560a3ca\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"494ae006-db33-4328-bf46-533a6560a3ca\"},{\"properties\":{\"roleName\":\"Site Recovery Reader\",\"type\":\"BuiltInRole\",\"description\":\"Lets you view Site Recovery status but not perform other management operations\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.RecoveryServices/locations/allocatedStamp/read\",\"Microsoft.RecoveryServices/Vaults/extendedInformation/read\",\"Microsoft.RecoveryServices/Vaults/monitoringAlerts/read\",\"Microsoft.RecoveryServices/Vaults/monitoringConfigurations/notificationConfiguration/read\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/refreshContainers/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/operationResults/read\",\"Microsoft.RecoveryServices/Vaults/registeredIdentities/read\",\"Microsoft.RecoveryServices/vaults/replicationAlertSettings/read\",\"Microsoft.RecoveryServices/vaults/replicationEvents/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationNetworks/replicationNetworkMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectableItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectedItems/recoveryPoints/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationProtectionContainers/replicationProtectionContainerMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationRecoveryServicesProviders/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationStorageClassifications/replicationStorageClassificationMappings/read\",\"Microsoft.RecoveryServices/vaults/replicationFabrics/replicationvCenters/read\",\"Microsoft.RecoveryServices/vaults/replicationJobs/read\",\"Microsoft.RecoveryServices/vaults/replicationPolicies/read\",\"Microsoft.RecoveryServices/vaults/replicationRecoveryPlans/read\",\"Microsoft.RecoveryServices/Vaults/storageConfig/read\",\"Microsoft.RecoveryServices/Vaults/tokenInfo/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/vaultTokens/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-05-19T13:35:40.0093634Z\",\"updatedOn\":\"2017-05-26T19:54:51.3933250Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/dbaa88c4-0c30-4179-9fb3-46319faa6149\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"dbaa88c4-0c30-4179-9fb3-46319faa6149\"},{\"properties\":{\"roleName\":\"SQL DB Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL databases, but not access to them. Also, you can't manage their security-related policies or their parent SQL servers.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/databases/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.1575716Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9b7fa17d-e63e-47b0-bb0a-15c516ac86ec\"},{\"properties\":{\"roleName\":\"SQL Security Manager\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the security-related policies of SQL servers and databases, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/read\",\"Microsoft.Sql/servers/databases/schemas/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/read\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/schemas/tables/read\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/firewallRules/*\",\"Microsoft.Sql/servers/read\",\"Microsoft.Sql/servers/securityAlertPolicies/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:40.2200727Z\",\"createdBy\":null,\"updatedBy\":\"yaiyun\"},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/056cd41c-7e88-42e1-933e-88ba6a50c9c3\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"056cd41c-7e88-42e1-933e-88ba6a50c9c3\"},{\"properties\":{\"roleName\":\"SQL Server Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage SQL servers and databases, but not access to them, and not their security -related policies.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Sql/locations/*/read\",\"Microsoft.Sql/servers/*\",\"Microsoft.Support/*\"],\"notActions\":[\"Microsoft.Sql/servers/auditingPolicies/*\",\"Microsoft.Sql/servers/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditingPolicies/*\",\"Microsoft.Sql/servers/databases/auditingSettings/*\",\"Microsoft.Sql/servers/databases/auditRecords/read\",\"Microsoft.Sql/servers/databases/connectionPolicies/*\",\"Microsoft.Sql/servers/databases/dataMaskingPolicies/*\",\"Microsoft.Sql/servers/databases/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/databases/schemas/tables/columns/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/securityAlertPolicies/*\",\"Microsoft.Sql/servers/databases/securityMetrics/*\",\"Microsoft.Sql/servers/databases/sensitivityLabels/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessments/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentScans/*\",\"Microsoft.Sql/servers/databases/vulnerabilityAssessmentSettings/*\",\"Microsoft.Sql/servers/extendedAuditingSettings/*\",\"Microsoft.Sql/servers/securityAlertPolicies/*\"]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-02-15T19:48:41.8450730Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"6d8ee4ec-f05a-4a1d-8b00-a9b17e38b437\"},{\"properties\":{\"roleName\":\"Storage Account Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage storage accounts, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/diagnosticSettings/*\",\"Microsoft.Network/virtualNetworks/subnets/joinViaServiceEndpoint/action\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-08-21T07:43:20.3060994Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"17d1049b-9a84-46fb-8f53-869881c3d3ab\"},{\"properties\":{\"roleName\":\"Storage Account Key Operator Service Role\",\"type\":\"BuiltInRole\",\"description\":\"Storage Account Key Operators are allowed to list and regenerate keys on Storage Accounts\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/listkeys/action\",\"Microsoft.Storage/storageAccounts/regeneratekey/action\"],\"notActions\":[]}],\"createdOn\":\"2017-04-13T18:26:11.5770570Z\",\"updatedOn\":\"2017-04-13T20:57:14.5990198Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"81a9662b-bebf-436f-a333-f67b29880f12\"},{\"properties\":{\"roleName\":\"Storage Blob Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write and delete access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/delete\",\"Microsoft.Storage/storageAccounts/blobServices/containers/read\",\"Microsoft.Storage/storageAccounts/blobServices/containers/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:11:00.4629296Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/ba92f5b4-2d11-453d-a403-e96b0029c9fe\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"ba92f5b4-2d11-453d-a403-e96b0029c9fe\"},{\"properties\":{\"roleName\":\"Storage Blob Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage blob containers and data\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/blobServices/containers/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:15:19.5080840Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2a2b9908-6ea1-4ae2-8e65-a410df84e7d1\"},{\"properties\":{\"roleName\":\"Storage Queue Data Contributor (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read, write, and delete access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/delete\",\"Microsoft.Storage/storageAccounts/queueServices/queues/read\",\"Microsoft.Storage/storageAccounts/queueServices/queues/write\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:16:40.1371662Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/974c5e8b-45b9-4653-ba55-5f855dd0fb88\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"974c5e8b-45b9-4653-ba55-5f855dd0fb88\"},{\"properties\":{\"roleName\":\"Storage Queue Data Reader (Preview)\",\"type\":\"BuiltInRole\",\"description\":\"Allows for read access to Azure Storage queues and queue messages\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Storage/storageAccounts/queueServices/queues/read\"],\"notActions\":[]}],\"createdOn\":\"2017-12-21T00:01:24.7972312Z\",\"updatedOn\":\"2018-04-02T17:19:30.5001463Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/19e7f393-937e-4f77-808e-94535e297925\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"19e7f393-937e-4f77-808e-94535e297925\"},{\"properties\":{\"roleName\":\"Support Request Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you create and manage Support requests\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2017-06-22T22:25:37.8053068Z\",\"updatedOn\":\"2017-06-23T01:06:24.2399631Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"cfd33db0-3dd1-45e3-aa9d-cdbdf3b6f24e\"},{\"properties\":{\"roleName\":\"Traffic Manager Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage Traffic Manager profiles, but does not let you control who has access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/trafficManagerProfiles/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-10-15T23:33:25.9730842Z\",\"updatedOn\":\"2016-05-31T23:13:44.1458854Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"a4b10055-b0c7-44c2-b00f-c7b5b3550cf7\"},{\"properties\":{\"roleName\":\"User Access Administrator\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage user access to Azure resources.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"*/read\",\"Microsoft.Authorization/*\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2018-01-30T18:08:24.4656640Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"18d7d88d-d35e-4fb5-a5c3-7773c20a72d9\"},{\"properties\":{\"roleName\":\"Virtual Machine Administrator Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual Machines in the portal and login as administrator\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:17:57.0514548Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/1c0163c0-47e6-4577-8991-ea5c82e286e4\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"1c0163c0-47e6-4577-8991-ea5c82e286e4\"},{\"properties\":{\"roleName\":\"Virtual Machine Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage virtual machines, but not access to them, and not the virtual network or storage account they’re connected to.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Compute/availabilitySets/*\",\"Microsoft.Compute/locations/*\",\"Microsoft.Compute/virtualMachines/*\",\"Microsoft.Compute/virtualMachineScaleSets/*\",\"Microsoft.DevTestLab/schedules/*\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Network/applicationGateways/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/backendAddressPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatPools/join/action\",\"Microsoft.Network/loadBalancers/inboundNatRules/join/action\",\"Microsoft.Network/loadBalancers/probes/join/action\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/locations/*\",\"Microsoft.Network/networkInterfaces/*\",\"Microsoft.Network/networkSecurityGroups/join/action\",\"Microsoft.Network/networkSecurityGroups/read\",\"Microsoft.Network/publicIPAddresses/join/action\",\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/virtualNetworks/subnets/join/action\",\"Microsoft.RecoveryServices/locations/*\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/*/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/read\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/protectionContainers/protectedItems/write\",\"Microsoft.RecoveryServices/Vaults/backupFabrics/backupProtectionIntent/write\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/read\",\"Microsoft.RecoveryServices/Vaults/backupPolicies/write\",\"Microsoft.RecoveryServices/Vaults/read\",\"Microsoft.RecoveryServices/Vaults/usages/read\",\"Microsoft.RecoveryServices/Vaults/write\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Storage/storageAccounts/listKeys/action\",\"Microsoft.Storage/storageAccounts/read\",\"Microsoft.Support/*\"],\"notActions\":[]}],\"createdOn\":\"2015-06-02T00:18:27.3542698Z\",\"updatedOn\":\"2017-11-14T03:00:30.1736393Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/9980e02c-c2be-4d73-94e8-173b1dc7cf3c\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"9980e02c-c2be-4d73-94e8-173b1dc7cf3c\"},{\"properties\":{\"roleName\":\"Virtual Machine User Login\",\"type\":\"BuiltInRole\",\"description\":\"View Virtual Machines in the portal and login as a regular user.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Network/publicIPAddresses/read\",\"Microsoft.Network/virtualNetworks/read\",\"Microsoft.Network/loadBalancers/read\",\"Microsoft.Network/networkInterfaces/read\",\"Microsoft.Compute/virtualMachines/*/read\"],\"notActions\":[]}],\"createdOn\":\"2018-02-09T18:36:13.3315744Z\",\"updatedOn\":\"2018-05-09T22:18:52.2780979Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/fb879df8-f326-4884-b1cf-06f3ad86be52\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"fb879df8-f326-4884-b1cf-06f3ad86be52\"},{\"properties\":{\"roleName\":\"Web Plan Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage the web plans for websites, but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/serverFarms/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:05.9401651Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"2cc479cb-7b4d-49a8-b449-8c00fd0f0a4b\"},{\"properties\":{\"roleName\":\"Website Contributor\",\"type\":\"BuiltInRole\",\"description\":\"Lets you manage websites (not web plans), but not access to them.\",\"assignableScopes\":[\"/\"],\"permissions\":[{\"actions\":[\"Microsoft.Authorization/*/read\",\"Microsoft.Insights/alertRules/*\",\"Microsoft.Insights/components/*\",\"Microsoft.ResourceHealth/availabilityStatuses/read\",\"Microsoft.Resources/deployments/*\",\"Microsoft.Resources/subscriptions/resourceGroups/read\",\"Microsoft.Support/*\",\"Microsoft.Web/certificates/*\",\"Microsoft.Web/listSitesAssignedToHostName/read\",\"Microsoft.Web/serverFarms/join/action\",\"Microsoft.Web/serverFarms/read\",\"Microsoft.Web/sites/*\"],\"notActions\":[]}],\"createdOn\":\"0001-01-01T08:00:00.0000000Z\",\"updatedOn\":\"2016-05-31T23:14:06.5272742Z\",\"createdBy\":null,\"updatedBy\":null},\"id\":\"/providers/Microsoft.Authorization/roleDefinitions/de139f84-1756-47ae-9be6-808fbbe84772\",\"type\":\"Microsoft.Authorization/roleDefinitions\",\"name\":\"de139f84-1756-47ae-9be6-808fbbe84772\"}]}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410?api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a?api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:56 GMT", + "date" : "Mon, 25 Jun 2018 19:58:24 GMT", "content-length" : "0", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "expires" : "-1", @@ -46,23 +45,23 @@ "StatusCode" : "202", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "6ae7da30-c2e1-4f77-8779-3c8ad198dd8f", + "x-ms-correlation-request-id" : "e5de8f47-33bc-472b-a11d-7a8964817561", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205857Z:6ae7da30-c2e1-4f77-8779-3c8ad198dd8f", + "x-ms-routing-request-id" : "WESTUS2:20180625T195824Z:e5de8f47-33bc-472b-a11d-7a8964817561", "content-type" : "text/plain; charset=utf-8", - "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/78242f01-693c-42d2-aa79-718d7818a91f?monitor=true&api-version=2016-01-01", + "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/e73eb155-6b04-4c13-a038-fb14f536dc7f?monitor=true&api-version=2016-01-01", "cache-control" : "no-cache", - "x-ms-request-id" : "78242f01-693c-42d2-aa79-718d7818a91f", + "x-ms-request-id" : "e73eb155-6b04-4c13-a038-fb14f536dc7f", "Body" : "" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/78242f01-693c-42d2-aa79-718d7818a91f?monitor=true&api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/e73eb155-6b04-4c13-a038-fb14f536dc7f?monitor=true&api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:58:58 GMT", + "date" : "Mon, 25 Jun 2018 19:58:24 GMT", "content-length" : "0", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "expires" : "-1", @@ -71,23 +70,23 @@ "StatusCode" : "202", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "a3fd7c21-e507-4bc0-9de4-05d86259272e", + "x-ms-correlation-request-id" : "68b2d90c-a954-494c-9d32-0bfdbee0e8bc", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205858Z:a3fd7c21-e507-4bc0-9de4-05d86259272e", + "x-ms-routing-request-id" : "WESTUS2:20180625T195825Z:68b2d90c-a954-494c-9d32-0bfdbee0e8bc", "content-type" : "text/plain; charset=utf-8", - "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/78242f01-693c-42d2-aa79-718d7818a91f?monitor=true&api-version=2016-01-01", + "location" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/e73eb155-6b04-4c13-a038-fb14f536dc7f?monitor=true&api-version=2016-01-01", "cache-control" : "no-cache", - "x-ms-request-id" : "eb51da65-b385-4181-b284-7dcf0808274b", + "x-ms-request-id" : "1240f427-9d11-463a-a85f-490db6502844", "Body" : "" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/78242f01-693c-42d2-aa79-718d7818a91f?monitor=true&api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Storage/locations/westcentralus/asyncoperations/e73eb155-6b04-4c13-a038-fb14f536dc7f?monitor=true&api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:14 GMT", + "date" : "Mon, 25 Jun 2018 19:58:41 GMT", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "content-length" : "907", "expires" : "-1", @@ -98,23 +97,23 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "3d7152a3-f91e-4fce-96a7-6d5be8be15e7", + "x-ms-correlation-request-id" : "c78d072c-6b8d-4bf5-8177-a9e692ecbe3a", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205915Z:3d7152a3-f91e-4fce-96a7-6d5be8be15e7", + "x-ms-routing-request-id" : "WESTUS2:20180625T195842Z:c78d072c-6b8d-4bf5-8177-a9e692ecbe3a", "content-type" : "application/json", "cache-control" : "no-cache", - "x-ms-request-id" : "bfb70933-d762-47de-bd19-3a1db74a0cb6", - "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410\",\"name\":\"sa2c77808410\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-04T20:58:56.9703742Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-04T20:58:56.8922740Z\",\"primaryEndpoints\":{\"blob\":\"https://sa2c77808410.blob.core.windows.net/\",\"queue\":\"https://sa2c77808410.queue.core.windows.net/\",\"table\":\"https://sa2c77808410.table.core.windows.net/\",\"file\":\"https://sa2c77808410.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" + "x-ms-request-id" : "567cf13f-dbec-4f2c-bfaf-c4ff1ffac9be", + "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a\",\"name\":\"sabc0663752a\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-25T19:58:23.9216529Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-25T19:58:23.8747773Z\",\"primaryEndpoints\":{\"blob\":\"https://sabc0663752a.blob.core.windows.net/\",\"queue\":\"https://sabc0663752a.queue.core.windows.net/\",\"table\":\"https://sabc0663752a.table.core.windows.net/\",\"file\":\"https://sabc0663752a.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410?api-version=2016-01-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a?api-version=2016-01-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (StorageManagementClient, 2016-01-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:15 GMT", + "date" : "Mon, 25 Jun 2018 19:58:41 GMT", "server" : "Microsoft-Azure-Storage-Resource-Provider/1.0,Microsoft-HTTPAPI/2.0 Microsoft-HTTPAPI/2.0", "content-length" : "907", "expires" : "-1", @@ -125,23 +124,23 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "ca67a4fd-ab8e-427c-8531-afee00088eb5", + "x-ms-correlation-request-id" : "8cb1cbb4-b925-4e0c-b8a3-e885b6318900", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205915Z:ca67a4fd-ab8e-427c-8531-afee00088eb5", + "x-ms-routing-request-id" : "WESTUS2:20180625T195842Z:8cb1cbb4-b925-4e0c-b8a3-e885b6318900", "content-type" : "application/json", "cache-control" : "no-cache", - "x-ms-request-id" : "4a850111-1685-487f-8028-7b9adbf2a56b", - "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410\",\"name\":\"sa2c77808410\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-04T20:58:56.9703742Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-04T20:58:56.8922740Z\",\"primaryEndpoints\":{\"blob\":\"https://sa2c77808410.blob.core.windows.net/\",\"queue\":\"https://sa2c77808410.queue.core.windows.net/\",\"table\":\"https://sa2c77808410.table.core.windows.net/\",\"file\":\"https://sa2c77808410.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" + "x-ms-request-id" : "9cefcf44-5a0e-4af1-ab37-15c9418ee90e", + "Body" : "{\"sku\":{\"name\":\"Standard_GRS\",\"tier\":\"Standard\"},\"kind\":\"Storage\",\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a\",\"name\":\"sabc0663752a\",\"type\":\"Microsoft.Storage/storageAccounts\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"encryption\":{\"services\":{\"blob\":{\"enabled\":true,\"lastEnabledTime\":\"2018-06-25T19:58:23.9216529Z\"}},\"keySource\":\"Microsoft.Storage\"},\"provisioningState\":\"Succeeded\",\"creationTime\":\"2018-06-25T19:58:23.8747773Z\",\"primaryEndpoints\":{\"blob\":\"https://sabc0663752a.blob.core.windows.net/\",\"queue\":\"https://sabc0663752a.queue.core.windows.net/\",\"table\":\"https://sabc0663752a.table.core.windows.net/\",\"file\":\"https://sabc0663752a.file.core.windows.net/\"},\"primaryLocation\":\"westcentralus\",\"statusOfPrimary\":\"available\",\"secondaryLocation\":\"westus2\",\"statusOfSecondary\":\"available\"}}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410/providers/Microsoft.Authorization/roleAssignments/0c337b82-553c-4aaf-aa62-eab5dc446bb3?api-version=2015-07-01", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a/providers/Microsoft.Authorization/roleAssignments/8a6fc5ba-7601-4071-954a-adbce7cae7ae?api-version=2015-07-01", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.3.0 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (AuthorizationManagementClient, 2015-07-01)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:18 GMT", + "date" : "Mon, 25 Jun 2018 19:58:45 GMT", "content-length" : "868", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -151,25 +150,24 @@ "StatusCode" : "201", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "bb57a0eb-ac0d-46d5-b35f-d8c3e31a5775", + "x-ms-correlation-request-id" : "d68d4fec-0d68-4d87-bb87-44e3200af560", "set-cookie" : "x-ms-gateway-slice=productionb; path=/; secure; HttpOnly", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205919Z:bb57a0eb-ac0d-46d5-b35f-d8c3e31a5775", - "x-powered-by" : "ASP.NET", + "x-ms-routing-request-id" : "WESTUS2:20180625T195846Z:d68d4fec-0d68-4d87-bb87-44e3200af560", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-request-id" : "c87cfb4a-41fe-4f28-8500-5c3071b0c930", - "Body" : "{\"properties\":{\"roleDefinitionId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"principalId\":\"93c27d83-f79b-4cb2-8dd4-4aa716542e74\",\"scope\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410\",\"createdOn\":\"2018-06-04T20:59:16.2826414Z\",\"updatedOn\":\"2018-06-04T20:59:16.2826414Z\",\"createdBy\":null,\"updatedBy\":\"00000000-0000-0000-0000-000000000000\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410/providers/Microsoft.Authorization/roleAssignments/0c337b82-553c-4aaf-aa62-eab5dc446bb3\",\"type\":\"Microsoft.Authorization/roleAssignments\",\"name\":\"0c337b82-553c-4aaf-aa62-eab5dc446bb3\"}" + "x-ms-request-id" : "0c8dd70b-7635-49cf-bf47-33b86ef40d4d", + "Body" : "{\"properties\":{\"roleDefinitionId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/81a9662b-bebf-436f-a333-f67b29880f12\",\"principalId\":\"93c27d83-f79b-4cb2-8dd4-4aa716542e74\",\"scope\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a\",\"createdOn\":\"2018-06-25T19:58:43.1732809Z\",\"updatedOn\":\"2018-06-25T19:58:43.1732809Z\",\"createdBy\":null,\"updatedBy\":\"00000000-0000-0000-0000-000000000000\"},\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a/providers/Microsoft.Authorization/roleAssignments/8a6fc5ba-7601-4071-954a-adbce7cae7ae\",\"type\":\"Microsoft.Authorization/roleAssignments\",\"name\":\"8a6fc5ba-7601-4071-954a-adbce7cae7ae\"}" } }, { "Method" : "PUT", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:20 GMT", + "date" : "Mon, 25 Jun 2018 19:58:48 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "819", "expires" : "-1", @@ -181,24 +179,24 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "a9d65145-f978-467f-b3ed-672c25258d04", + "x-ms-correlation-request-id" : "c035050b-b12c-4c27-ae83-45973bc26a05", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205921Z:a9d65145-f978-467f-b3ed-672c25258d04", + "x-ms-routing-request-id" : "WESTUS2:20180625T195848Z:c035050b-b12c-4c27-ae83-45973bc26a05", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "a9d65145-f978-467f-b3ed-672c25258d04", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016\",\"name\":\"vault669612016\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault669612016.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "c035050b-b12c-4c27-ae83-45973bc26a05", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b\",\"name\":\"vaultff052787b\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultff052787b.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:20 GMT", + "date" : "Mon, 25 Jun 2018 19:58:48 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "820", "expires" : "-1", @@ -210,24 +208,24 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "f08af528-ff10-44b3-ac0f-0c27659833d5", + "x-ms-correlation-request-id" : "c664c3a5-a6c4-42ea-99bd-816c1ad1d38c", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205921Z:f08af528-ff10-44b3-ac0f-0c27659833d5", + "x-ms-routing-request-id" : "WESTUS2:20180625T195849Z:c664c3a5-a6c4-42ea-99bd-816c1ad1d38c", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "f08af528-ff10-44b3-ac0f-0c27659833d5", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016\",\"name\":\"vault669612016\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault669612016.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "c664c3a5-a6c4-42ea-99bd-816c1ad1d38c", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b\",\"name\":\"vaultff052787b\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultff052787b.vault.azure.net\",\"provisioningState\":\"RegisteringDns\"}}" } }, { "Method" : "GET", - "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016?api-version=2018-02-14-preview", + "Uri" : "http://localhost:1234/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b?api-version=2018-02-14-preview", "Headers" : { "User-Agent" : "Azure-SDK-For-Java/1.11.1 OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultManagementClient, 2018-02-14-preview)" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:50 GMT", + "date" : "Mon, 25 Jun 2018 19:59:18 GMT", "server" : "Microsoft-IIS/10.0", "content-length" : "815", "expires" : "-1", @@ -239,25 +237,25 @@ "StatusCode" : "200", "pragma" : "no-cache", "strict-transport-security" : "max-age=31536000; includeSubDomains", - "x-ms-correlation-request-id" : "0cf0c8f9-0de8-4694-b18e-b3c8d7d4cf20", + "x-ms-correlation-request-id" : "60590e31-79a4-4d91-9f3a-313ca1ba63cb", "x-content-type-options" : "nosniff", - "x-ms-routing-request-id" : "WESTUS2:20180604T205951Z:0cf0c8f9-0de8-4694-b18e-b3c8d7d4cf20", + "x-ms-routing-request-id" : "WESTUS2:20180625T195919Z:60590e31-79a4-4d91-9f3a-313ca1ba63cb", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.219", - "x-ms-request-id" : "0cf0c8f9-0de8-4694-b18e-b3c8d7d4cf20", - "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vault669612016\",\"name\":\"vault669612016\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vault669612016.vault.azure.net\",\"provisioningState\":\"Succeeded\"}}" + "x-ms-keyvault-service-version" : "1.0.0.220", + "x-ms-request-id" : "60590e31-79a4-4d91-9f3a-313ca1ba63cb", + "Body" : "{\"id\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.KeyVault/vaults/vaultff052787b\",\"name\":\"vaultff052787b\",\"type\":\"Microsoft.KeyVault/vaults\",\"location\":\"westcentralus\",\"tags\":{},\"properties\":{\"sku\":{\"family\":\"A\",\"name\":\"standard\"},\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"accessPolicies\":[{\"tenantId\":\"00000000-0000-0000-0000-000000000000\",\"objectId\":\"00000000-0000-0000-0000-000000000000\",\"permissions\":{\"secrets\":[\"list\",\"restore\",\"set\",\"recover\",\"purge\",\"delete\",\"backup\",\"get\"],\"storage\":[\"recover\",\"regeneratekey\",\"get\",\"deletesas\",\"list\",\"purge\",\"set\",\"update\",\"getsas\",\"listsas\",\"delete\",\"backup\",\"setsas\",\"restore\"]}}],\"enabledForDeployment\":false,\"vaultUri\":\"https://vaultff052787b.vault.azure.net\",\"provisioningState\":\"Succeeded\"}}" } }, { "Method" : "PUT", - "Uri" : "https://vault669612016.vault.azure.net/storage/sa2c77808410?api-version=7.0-preview", + "Uri" : "https://vaultff052787b.vault.azure.net/storage/sabc0663752a?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:51 GMT", + "date" : "Mon, 25 Jun 2018 19:59:19 GMT", "content-length" : "0", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -269,22 +267,22 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "1b973ac3-49c7-4e48-bf55-7788c00dcb43", + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "0fa52602-294f-43f3-b67b-9b1be9fc3a87", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://vault669612016.vault.azure.net/storage/sa2c77808410?api-version=7.0-preview", + "Uri" : "https://vaultff052787b.vault.azure.net/storage/sabc0663752a?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 20:59:58 GMT", + "date" : "Mon, 25 Jun 2018 19:59:23 GMT", "content-length" : "402", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -296,22 +294,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "70dfb1d7-367f-4ee7-b00d-2f4b8ead7edf", - "Body" : "{\"id\":\"https://vault669612016.vault.azure.netstorage/sa2c77808410\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sa2c77808410\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1528145999,\"updated\":1528145999,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "67d92322-06a9-4c79-ac8b-98c69730f823", + "Body" : "{\"id\":\"https://vaultff052787b.vault.azure.netstorage/sabc0663752a\",\"resourceId\":\"/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg-0/providers/Microsoft.Storage/storageAccounts/sabc0663752a\",\"activeKeyName\":\"key1\",\"autoRegenerateKey\":true,\"regenerationPeriod\":\"P30D\",\"attributes\":{\"enabled\":true,\"created\":1529956764,\"updated\":1529956764,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "PUT", - "Uri" : "https://vault669612016.vault.azure.net/storage/sa2c77808410/sas/acctall?api-version=7.0-preview", + "Uri" : "https://vaultff052787b.vault.azure.net/storage/sabc0663752a/sas/acctall?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 21:00:01 GMT", + "date" : "Mon, 25 Jun 2018 19:59:28 GMT", "content-length" : "437", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -323,23 +321,23 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "ae0b3d16-6895-413c-b69f-e5c4ef7cf643", - "Body" : "{\"id\":\"https://vault669612016.vault.azure.netstorage/sa2c77808410/sas/acctall\",\"sid\":\"https://vault669612016.vault.azure.netsecrets/sa2c77808410-acctall\",\"templateUri\":\"ss=bfqt&sig=xdwrMzuuwHkwYAfBeIXy2LUpXe9FjlkTrQhC6OzBUm4%3D&se=2020-01-01T08%3A00%3A00Z&sv=2015-12-11&srt=sco&sp=racwdlup\",\"sasType\":\"account\",\"validityPeriod\":\"PT2H\",\"attributes\":{\"enabled\":true,\"created\":1528146001,\"updated\":1528146001,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "0e5c6915-c1d1-4758-b748-fc7494b485bb", + "Body" : "{\"id\":\"https://vaultff052787b.vault.azure.netstorage/sabc0663752a/sas/acctall\",\"sid\":\"https://vaultff052787b.vault.azure.netsecrets/sabc0663752a-acctall\",\"templateUri\":\"ss=bfqt&sig=Seeukj2J9YdffimRILCDhU3S8GXMcPkD8fRG8LlWIJA%3D&se=2020-01-01T08%3A00%3A00Z&sv=2015-12-11&srt=sco&sp=racwdlup\",\"sasType\":\"account\",\"validityPeriod\":\"PT2H\",\"attributes\":{\"enabled\":true,\"created\":1529956768,\"updated\":1529956768,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://vault669612016.vault.azure.net/secrets/sa2c77808410-acctall/?api-version=7.0-preview", + "Uri" : "https://vaultff052787b.vault.azure.net/secrets/sabc0663752a-acctall/?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 21:00:07 GMT", - "content-length" : "348", + "date" : "Mon, 25 Jun 2018 19:59:29 GMT", + "content-length" : "354", "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", @@ -350,22 +348,22 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "a2525a40-007e-45a4-88d7-699d8b1b0827", - "Body" : "{\"value\":\"?sv=2015-12-11&ss=bfqt&srt=sco&sp=racwdlup&se=2018-06-04T23:00:07Z&sig=GkYkueEYC2Xe%2BvHnHqhRAyhaQgpaf3Sfo3sJjd3CHio%3D\",\"contentType\":\"application/vnd.ms-sastoken-storage\",\"id\":\"https://vault669612016.vault.azure.netsecrets/sa2c77808410-acctall\",\"managed\":true,\"attributes\":{\"enabled\":true,\"exp\":1528153207,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "fce2b47a-f96b-4e2c-8826-919870e1e6ec", + "Body" : "{\"value\":\"?sv=2015-12-11&ss=bfqt&srt=sco&sp=racwdlup&se=2018-06-25T21:59:30Z&sig=OntGT2YbqwSlM7LJtg%2F%2FZLOb26TDmeZys%2Bzra%2BIeGIM%3D\",\"contentType\":\"application/vnd.ms-sastoken-storage\",\"id\":\"https://vaultff052787b.vault.azure.netsecrets/sabc0663752a-acctall\",\"managed\":true,\"attributes\":{\"enabled\":true,\"exp\":1529963970,\"recoveryLevel\":\"Purgeable\"}}" } }, { "Method" : "GET", - "Uri" : "https://vault669612016.vault.azure.net/storage/sa2c77808410/sas/acctall?api-version=7.0-preview", + "Uri" : "https://vaultff052787b.vault.azure.net/storage/sabc0663752a/sas/acctall?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Mon, 04 Jun 2018 21:00:08 GMT", + "date" : "Mon, 25 Jun 2018 19:59:32 GMT", "content-length" : "437", "server" : "Microsoft-IIS/10.0", "expires" : "-1", @@ -377,13 +375,13 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", - "x-ms-keyvault-network-info" : "addr=167.220.0.18;act_addr_fam=InterNetwork;", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "westcentralus", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.849", - "x-ms-request-id" : "ef84f989-925c-46cf-ba38-da270479fdcb", - "Body" : "{\"id\":\"https://vault669612016.vault.azure.netstorage/sa2c77808410/sas/acctall\",\"sid\":\"https://vault669612016.vault.azure.netsecrets/sa2c77808410-acctall\",\"templateUri\":\"ss=bfqt&sig=xdwrMzuuwHkwYAfBeIXy2LUpXe9FjlkTrQhC6OzBUm4%3D&se=2020-01-01T08%3A00%3A00Z&sv=2015-12-11&srt=sco&sp=racwdlup\",\"sasType\":\"account\",\"validityPeriod\":\"PT2H\",\"attributes\":{\"enabled\":true,\"created\":1528146001,\"updated\":1528146001,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.852", + "x-ms-request-id" : "db46158a-0ba5-4f35-9f44-26f1abb29069", + "Body" : "{\"id\":\"https://vaultff052787b.vault.azure.netstorage/sabc0663752a/sas/acctall\",\"sid\":\"https://vaultff052787b.vault.azure.netsecrets/sabc0663752a-acctall\",\"templateUri\":\"ss=bfqt&sig=Seeukj2J9YdffimRILCDhU3S8GXMcPkD8fRG8LlWIJA%3D&se=2020-01-01T08%3A00%3A00Z&sv=2015-12-11&srt=sco&sp=racwdlup\",\"sasType\":\"account\",\"validityPeriod\":\"PT2H\",\"attributes\":{\"enabled\":true,\"created\":1529956768,\"updated\":1529956768,\"recoveryLevel\":\"Purgeable\"}}" } } ], - "variables" : [ "sa2c77808410", "vault669612016" ] + "variables" : [ "sabc0663752a", "vaultff052787b" ] } \ No newline at end of file diff --git a/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForKeyOperationsTest.json index 3a5a6cf..5633cbc 100644 --- a/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:14 GMT", + "date" : "Mon, 25 Jun 2018 19:43:26 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "58851647-92f9-43ee-ad7b-4a4b9cdfa1e2", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "b0179497-cd10-4322-86bb-21bb60d911db", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:14 GMT", + "date" : "Mon, 25 Jun 2018 19:43:32 GMT", "content-length" : "680", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "7806e0f5-29cd-416d-ad33-1b6c5a743775", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/137d21017a7b48b687ab210de4fb7b3a\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"zKL2Gsl4Mg_gRSThhq3cHfBiVTKU1q2-U-5iXD978_dzSAaQtxHraCXNvyXz1SQgUmOYPs0YbgkgFLZHW8XBv4yXT9CCd_eqVaBFMPv1dHDvdaDUQpkUv-QUp7qrsWhilxwD6zd03FQosMs7V76k1M5ikmGUqPuDki1_-7S7Bmm9-ZLjYTOL7Gb0YL4kRs_kb5V_khyH7GwtU5So7T6m2Du5zZgjZ9Az2figHFs3NTToPP1lXdhJ2u9-qCj-u-o1mr63cZph-DFki5yX-C3QuyTyKMepxoGYyNBB5jtKFmNUzhW7_pZv92sM7JLScPxTNPqws6nGWnsMRqQHDuo8hQ\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":947361734,\"exp\":2525284934,\"created\":1520539335,\"updated\":1520539335,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "766dadb8-5dae-4faa-89ca-8662ed5d8bee", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/4c3e30f116904a68b557b1d0d4ca7a7f\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\"],\"n\":\"7eisF4pz-3JMiB39vB_KJlfjZkZLkqDEb-wDSad42LgleRn8wrQPDB7VK8kilkt6SQOKXRSDSivjusn3FGkr4vJA_H9yMLun9rGHO8_K7Kqfxy9ciUz5kfdJKwfGvoUWAj-TmAR6CuXT3rMYqYmCKTFF2m88eRGEAvOjZBRpCeEvFT8PuhThR3NHa8-FwciU4EaSADwoDFFHjg9Pp0cWF-mbjttyat_VM-2VbZ0IMGlRRJKSbgAFyEIYhtI74_mRyGp3o_BMHv0MFlzyuH7zqK0MlHpuEAJzIzdXS8UtqrrmRb2PTHkXHsCazUCmfdtnX6AaAR1JsmvOgC5gBbrgkw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"nbf\":948833006,\"exp\":2526756206,\"created\":1529955812,\"updated\":1529955812,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:14 GMT", + "date" : "Mon, 25 Jun 2018 19:43:33 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -71,23 +73,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "760e3fd5-4ef6-478e-9306-26f070ac3c2e", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "0a9f79e1-1ea9-4abb-9d36-12016ad6e6bf", "Body" : "" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/create?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/create?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:02:15 GMT", + "date" : "Mon, 25 Jun 2018 19:43:33 GMT", "content-length" : "654", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,11 +100,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "15f22cfb-9a9f-4fab-9d9e-2c29edeb70e3", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/ec5f81cfa44746e9bd2c459088f00604\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"xInIC8b49iChpufX2xeTAxGlhmkIAM0vQXHl7XJz-t3RkA-hMvVgucDSARo2e1T5SHxYZRzs18qeNM-OUzbax-iAZvEITkvcNnUHWnQFwjr9jsB_GD4bHQvwHvcTbjGrLCUitnNL1dv_tsTBROt4HqTM8rmg5FS4zcHLTKvr4ymVYM9D-GV7PVPLKobXRneadTRVEnfQWsFrVLqFpE9imnhbWQ2OpSug_EEzyggSrwLo9nxJMeHtJjrZ6lKLMBYkLC5DvCVGDnqJR9HIRsnLsbvc25ak0PMP5ox5e0rhCQQUaUWOqnjwR47UCvGZnoVxWFybxUJdSAq8d3ii9mvz7Q\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539336,\"updated\":1520539336,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4bf01bfb-3154-412a-9c5a-6cacc9c7a5cd", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancier.vault.azure.net/keys/javaKey/ea063d69848c4c13b62aaefad515d239\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"k27DlIuMgvzoumqZ53El0BMiWYBmFezORMQ2KXWcEXr3zbFnBJCPSemXEC83Z6do7FEW13zGEwRzU98w9tIvt3UsOsw5U5-KLD--TgrU5yWG2nQrEAvVN13aT3XlToQeu9QKfPZMRlY5eyrwkZpxiuu_tkxi2HZeAyuevOxdLCRYspQ5Hc0BBBAlfBMJ0-uW8GkEjGX181-WMfHRvIsipCTu8zvcB66pgfU7ikJc0IhnOedDfE44JtpFojJgwi6sB_eYsNtpuj2j-GQ5KSx9aTqSB8d877j5Fmbm0S6KPbHO60XWzWt559aYGeR9Ox6NC9mELKk19VVqwQ7CDHpXSw\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529955814,\"updated\":1529955814,\"recoveryLevel\":\"Purgeable\"}}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForSecretOperationsTest.json b/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForSecretOperationsTest.json index a576e3f..5f963cf 100644 --- a/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForSecretOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/transparentAuthenticationForSecretOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:10 GMT", + "date" : "Mon, 25 Jun 2018 20:07:16 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "91939041-a007-4449-bb8f-476db709835e", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9574f54b-b122-470b-8699-a53133f33770", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:10 GMT", + "date" : "Mon, 25 Jun 2018 20:07:18 GMT", "content-length" : "357", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bf06fe79-2347-4386-825b-5adabf0fbf55", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/58d2ca009c244b3bba92306d05a108f6\",\"attributes\":{\"enabled\":true,\"nbf\":947362690,\"exp\":2525285890,\"created\":1520540290,\"updated\":1520540290,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "4c44633f-c1d2-461e-a49c-33133f7f6ccd", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"contentType\":\"contentType\",\"id\":\"https://tifchen-keyvault-fancy.vault.azure.net/secrets/javaSecret/e2d2f878fe2b41f882706b488fd0b585\",\"attributes\":{\"enabled\":true,\"nbf\":948834437,\"exp\":2526757637,\"created\":1529957238,\"updated\":1529957238,\"recoveryLevel\":\"Recoverable+Purgeable\"},\"tags\":{\"foo\":\"baz\"}}" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:10 GMT", + "date" : "Mon, 25 Jun 2018 20:07:19 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -71,23 +73,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "adc27dde-2355-4f20-8de9-1ac5da042686", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "35280e03-4520-46a6-8cac-5f90e1b2cf8d", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:18:10 GMT", + "date" : "Mon, 25 Jun 2018 20:07:21 GMT", "content-length" : "265", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,11 +100,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "92d3d303-4116-4c6d-b7be-69e144933617", - "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret/fb595473d1b948a5b88af2ed4c515bc0\",\"attributes\":{\"enabled\":true,\"created\":1520540291,\"updated\":1520540291,\"recoveryLevel\":\"Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ab0b2b14-2df9-4b7b-8e61-beff28cd9d6e", + "Body" : "{\"value\":\"Chocolate is hidden in the toothpaste cabinet\",\"id\":\"https://tifchen-keyvault-fancier.vault.azure.net/secrets/javaSecret/266b468bf6ab4e04871fbf66f4c16070\",\"attributes\":{\"enabled\":true,\"created\":1529957241,\"updated\":1529957241,\"recoveryLevel\":\"Purgeable\"}}" } } ], "variables" : [ ] diff --git a/azure-keyvault/target/test-classes/session-records/wrapUnwrapOperationsForKeyOperationsTest.json b/azure-keyvault/target/test-classes/session-records/wrapUnwrapOperationsForKeyOperationsTest.json index a7f7dd8..1be9f67 100644 --- a/azure-keyvault/target/test-classes/session-records/wrapUnwrapOperationsForKeyOperationsTest.json +++ b/azure-keyvault/target/test-classes/session-records/wrapUnwrapOperationsForKeyOperationsTest.json @@ -1,15 +1,15 @@ { "networkCallRecords" : [ { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:33 GMT", + "date" : "Mon, 25 Jun 2018 19:55:56 GMT", "content-length" : "0", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "www-authenticate" : "Bearer authorization=\"https://login.windows.net/72f988bf-86f1-41af-91ab-2d7cd011db47\", resource=\"https://vault.azure.net\"", @@ -19,23 +19,24 @@ "strict-transport-security" : "max-age=31536000;includeSubDomains", "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "d8b7d570-2401-4644-a07a-6b83b6547b27", + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "ea6e784c-246c-4bf0-a931-20e36dab68e5", "Body" : "" } }, { "Method" : "PUT", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:33 GMT", + "date" : "Mon, 25 Jun 2018 19:55:57 GMT", "content-length" : "664", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -45,23 +46,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "fe861fd9-1622-4468-a798-5bbe3df4448a", - "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1520539834,\"updated\":1520539834,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "c3fcb2dd-f80e-4359-a7c4-6b5bbd60c119", + "Body" : "{\"key\":{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550\",\"kty\":\"RSA\",\"key_ops\":[\"encrypt\",\"decrypt\",\"sign\",\"verify\",\"wrapKey\",\"unwrapKey\"],\"n\":\"1_6ZtP288hEkKML-L6nFyZh1PD1rmAgwbbwjEvTSDK_008BYWhjp_6ULy9BhWtRIytNkPkm9gzaBTrCpp-vyDXPGa836Htp-w8u5JmxoUZchJh576m3m-8ZYWTmZSAp5SpruyKAmLSxPJHEWPXQntnmuTMjb9HBT9Ltrwc0ZDk-jsMLYunDJrNmrRUxQgb0zQ_Tl5fJjj8j-0KVx2RXtbfWFvf5fRdBYyP3m0aUpoopQPwtXszD2LcSKMJ_TnmnvMWr8MOA5aRlBaGdBk7zBgRafvDPam3Q2AvFA9mfcAVncpfZ3JFm73VARw6MofXtRqOHtZ7y4oNbY95xXwU2r6w\",\"e\":\"AQAB\"},\"attributes\":{\"enabled\":true,\"created\":1529956558,\"updated\":1529956558,\"recoveryLevel\":\"Recoverable+Purgeable\"}}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//wrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//wrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:34 GMT", + "date" : "Mon, 25 Jun 2018 19:55:58 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -71,23 +73,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "58000449-c725-44eb-a174-a45a6179e050", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41\",\"value\":\"AQv3F-EbaKD5J9JC1pkJ81X4o7Q58kpEHMMUF6mo-d1Od1ZxOLXpAuONzAuR1svtvaS7EqOdtHYTUbVSe0lRcrXJolVAIftS3y3nKWh9tAoXNAk_X33v-yGB-u4SUXygbLUGrObqae2UUiCvKGUOwdpAv8I5mJbGWpsqwLqpvPLsKHnNVdR59JLudfhKGLdUdYJSgvOCsMbz494gC24khIBq2qYFgI2VcEyRXwKUVsxAWOM79s4TZx0JIYLAN68JctcayRy4IHOB_dIOMqs_LnaHS4FUHv-OAGMB9zYzzzKrITIlb1iaGa1gkfvCxR7oNF6PXVRQNGFYV0N_1V_rWw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "11c684ca-b96b-446c-a03e-39e5a1d3dc86", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550\",\"value\":\"TYZd7iedngWAfBbqLJZsEiHQEE0DDDkveyM2kG8A84EANHxNYEcX2nL_dBmD5A-W1ki8U6FykRc5AgaUjfoRmwjFPGRW0UzSw-Fj0nsrk5H6CpLQ35WNpnk8iJOg79rERvx2JGxKd7tJxsSy647pwdYaaKNdwInR2ipP6SzXmADdDw7OC3pYKjQ0xqJoHuBSuJz7DlTMKvTAnu9w4-091x6tlFK_stPhW4RBXJnw8WIdDXc1zb0bkyoFFwPc-PLcWu7AzVhp-EAnJoiuoAfmX8z_GOSTy_mggrQVuMg4PiLxSKEaGN-uyj6qSoGKM1chSAFhsQ6_kziIoMOkUiqGlw\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//unwrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey//unwrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:34 GMT", + "date" : "Mon, 25 Jun 2018 19:56:03 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -97,23 +100,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "e2151a6e-d710-4593-b781-864d5f845a4a", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "f20381db-8de0-4d4f-b030-f9d6bae6228f", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41/wrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550/wrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:34 GMT", + "date" : "Mon, 25 Jun 2018 19:56:05 GMT", "content-length" : "455", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -123,23 +127,24 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "9ead81a5-5b41-4834-a950-0c7bdb472301", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41\",\"value\":\"LvhE5r7H_lEy3VUhJHhDo-5WTrlRG8JumdypsOJPt2CihJhB_OTU2R9oefP2Pp6ExBskiApRDN7VKihmtyyzPZTGr1bO392CPUE36JrXSvxykYMOK0WqVZxQgNEA646GXWG8H6MBisD7NtqHI9ZQvNDy4CCLF8GZqVhjlZD5ryCu7KyD62-B0KmyLPXNCIuVx57h6Hbvl-th4D7pgZTU-ZcXJx9BMwbhJF-_ZymDcCUPW9GnApU3e93GWWJXNbn2MsCXSZuBprYua-wFG_0XbwTjJ95tc8Z9Y2-3W1vsQiQNZu40-bCj0yXcwXWK7BUYFKBrp72l-2y6qTsDnr5fHQ\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "9671b7a2-82e9-4052-b6df-ece714447aff", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550\",\"value\":\"MFseSGDBevDzJXFk3sBecnr1SR1OLe_qrwizXWGcSdRztK-I1kl8EgvgVT_VRKEZyvPpsaPMa0Kgk-xj2W6yf8W72aYHXjqd480-0-2mt_SHSCmep3-HJkALS3rAA18zidmpZuHyrTIV2xbqtoKZndJwatoiFFcTMEgxQuLwRtmNnOlNMfgcB2rS_xIttEqzt8Gh3idrm-i8sJAWWCgN_zSPbtTd-HF6WfsG6GpP113yB76WwoXoU9YFBwruMBS1b29l605H40t4YbODc1_O9vzmXIhryJe1bVwMJxSfetaZf7ZVnGolYxpAveub0ZmMUDF2ivu3fQRcGWMN9TC-wQ\"}" } }, { "Method" : "POST", - "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41/unwrapkey?api-version=7.0-preview", + "Uri" : "https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550/unwrapkey?api-version=7.0", "Headers" : { - "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_141-2-redhat (KeyVaultClientBase, 7.0-preview)", + "User-Agent" : "Azure-SDK-For-Java/null OS:Windows 10/10.0 MacAddressHash:08b8c65810754c5927ba6275e7902c61544ffc9cb2de4d24196bc80b2fbba780 Java:1.8.0_172 (KeyVaultClientBase, 7.0)", "Content-Type" : "application/json; charset=utf-8" }, "Response" : { - "date" : "Thu, 08 Mar 2018 20:10:34 GMT", + "date" : "Mon, 25 Jun 2018 19:56:10 GMT", "content-length" : "247", - "server" : "Microsoft-IIS/8.5", + "server" : "Microsoft-IIS/10.0", "expires" : "-1", "x-aspnet-version" : "4.0.30319", "retry-after" : "0", @@ -149,11 +154,12 @@ "x-content-type-options" : "nosniff", "x-powered-by" : "ASP.NET", "content-type" : "application/json; charset=utf-8", + "x-ms-keyvault-network-info" : "addr=167.220.1.18;act_addr_fam=InterNetwork;", "x-ms-keyvault-region" : "West US", "cache-control" : "no-cache", - "x-ms-keyvault-service-version" : "1.0.0.841", - "x-ms-request-id" : "bfed39c0-2c13-49d2-8228-03cc157c7730", - "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/b61ac719d3634bc785300c59f1702f41\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" + "x-ms-keyvault-service-version" : "1.0.0.849", + "x-ms-request-id" : "6386e270-47a2-45ac-9da4-ae0ec0230e65", + "Body" : "{\"kid\":\"https://tifchen-keyvault-fancy.vault.azure.net/keys/javaKey/94ce16ca83fe4c1c96b4f5e15adca550\",\"value\":\"G9GT23aoJ9lUS5WtxwlS9igODCiTObv_Z7U9HhTbk99t_24WdBcngS2ycvtJ7_VQ6ESEKt1QdoI8UMRwh2UOMalPrw1leEgbwgpOtCPjmzCk2fhuxCHyinA3x0iGnD2jyYaXiw\"}" } } ], "variables" : [ ] diff --git a/pom.xml b/pom.xml index 9cabe2b..7192abe 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 com.microsoft.azure - 1.1-beta-1 + 1.1 azure-keyvault-parent pom From 8f5686a6f5a1f264b98b6e66b558fb2213aff48f Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Mon, 25 Jun 2018 16:00:16 -0700 Subject: [PATCH 2/7] Updated Es256K name --- .../azure/keyvault/cryptography/AlgorithmResolver.java | 4 ++-- .../java/com/microsoft/azure/keyvault/cryptography/EcKey.java | 4 ++-- .../azure/keyvault/cryptography/algorithms/Es256k.java | 2 +- .../azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/AlgorithmResolver.java b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/AlgorithmResolver.java index 7727041..1ac5c06 100644 --- a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/AlgorithmResolver.java +++ b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/AlgorithmResolver.java @@ -18,7 +18,7 @@ import com.microsoft.azure.keyvault.cryptography.algorithms.AesKw128; import com.microsoft.azure.keyvault.cryptography.algorithms.AesKw192; import com.microsoft.azure.keyvault.cryptography.algorithms.AesKw256; -import com.microsoft.azure.keyvault.cryptography.algorithms.Ecdsa256; +import com.microsoft.azure.keyvault.cryptography.algorithms.Es256k; import com.microsoft.azure.keyvault.cryptography.algorithms.Es256; import com.microsoft.azure.keyvault.cryptography.algorithms.Es384; import com.microsoft.azure.keyvault.cryptography.algorithms.Es512; @@ -49,7 +49,7 @@ public class AlgorithmResolver { Default.put( Rs256.ALGORITHM_NAME, new Rs256() ); // Default.put( RsNull.ALGORITHM_NAME, new RsNull() ); - Default.put(Ecdsa256.ALGORITHM_NAME, new Ecdsa256()); + Default.put(Es256k.ALGORITHM_NAME, new Es256k()); Default.put(Es256.ALGORITHM_NAME, new Es256()); Default.put(Es384.ALGORITHM_NAME, new Es384()); Default.put(Es512.ALGORITHM_NAME, new Es512()); diff --git a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java index 59d7f95..c7fd8b3 100644 --- a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java +++ b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java @@ -27,7 +27,7 @@ import com.google.common.util.concurrent.ListenableFuture; import com.microsoft.azure.keyvault.core.IKey; import com.microsoft.azure.keyvault.cryptography.algorithms.Ecdsa; -import com.microsoft.azure.keyvault.cryptography.algorithms.Ecdsa256; +import com.microsoft.azure.keyvault.cryptography.algorithms.Es256k; import com.microsoft.azure.keyvault.cryptography.algorithms.Es256; import com.microsoft.azure.keyvault.cryptography.algorithms.Es384; import com.microsoft.azure.keyvault.cryptography.algorithms.Es512; @@ -45,7 +45,7 @@ public class EcKey implements IKey { .put(JsonWebKeyCurveName.P_256, Es256.ALGORITHM_NAME) .put(JsonWebKeyCurveName.P_384, Es384.ALGORITHM_NAME) .put(JsonWebKeyCurveName.P_521, Es512.ALGORITHM_NAME) - .put(JsonWebKeyCurveName.SECP256K1, Ecdsa256.ALGORITHM_NAME) + .put(JsonWebKeyCurveName.SECP256K1, Es256k.ALGORITHM_NAME) .build(); public static final Map CURVE_TO_SPEC_NAME = ImmutableMap.builder() .put(JsonWebKeyCurveName.P_256, P256) diff --git a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java index 7150db4..b788979 100644 --- a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java +++ b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/algorithms/Es256k.java @@ -1,6 +1,6 @@ package com.microsoft.azure.keyvault.cryptography.algorithms; -public class Ecdsa256 extends Ecdsa { +public class Es256k extends Ecdsa { public final static String ALGORITHM_NAME = "NONEwithECDSA"; @Override diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java index 199b804..49ef7cd 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java @@ -44,7 +44,7 @@ public final class JsonWebKeySignatureAlgorithm { /** Static value ES512 for JsonWebKeySignatureAlgorithm. */ public static final JsonWebKeySignatureAlgorithm ES512 = new JsonWebKeySignatureAlgorithm("ES512"); /** Static value ECDSA256 for JsonWebKeySignatureAlgorithm. */ - public static final JsonWebKeySignatureAlgorithm ECDSA256 = new JsonWebKeySignatureAlgorithm("ECDSA256"); + public static final JsonWebKeySignatureAlgorithm ES256K = new JsonWebKeySignatureAlgorithm("ES256K"); private String value; @@ -87,5 +87,5 @@ public boolean equals(Object obj) { * All the JWK signature algorithms. */ public static final List ALL_ALGORITHMS = - Collections.unmodifiableList(Arrays.asList(RS256, RS384, RS512, RSNULL, PS256, PS384, PS512, ES256, ES384, ES512, ECDSA256)); + Collections.unmodifiableList(Arrays.asList(RS256, RS384, RS512, RSNULL, PS256, PS384, PS512, ES256, ES384, ES512, ES256K)); } From d4982b6006006033c0e9767476e30f902b682317 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Tue, 26 Jun 2018 16:19:40 -0700 Subject: [PATCH 3/7] Updated P256k --- .../com/microsoft/azure/keyvault/cryptography/EcKey.java | 8 ++++---- .../azure/keyvault/cryptography/test/ECKeyTest.java | 6 +++--- .../com/microsoft/azure/keyvault/webkey/JsonWebKey.java | 4 ++-- .../azure/keyvault/webkey/JsonWebKeyCurveName.java | 2 +- .../azure/keyvault/webkey/test/EcValidationTests.java | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java index c7fd8b3..fc82ad2 100644 --- a/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java +++ b/azure-keyvault-cryptography/src/main/java/com/microsoft/azure/keyvault/cryptography/EcKey.java @@ -40,18 +40,18 @@ public class EcKey implements IKey { public static final String P256 = "secp256r1"; public static final String P384 = "secp384r1"; public static final String P521 = "secp521r1"; - public static final String SECP265K1 = "secp256k1"; + public static final String P256K = "secp256k1"; public static final Map CURVE_TO_SIGNATURE = ImmutableMap.builder() .put(JsonWebKeyCurveName.P_256, Es256.ALGORITHM_NAME) .put(JsonWebKeyCurveName.P_384, Es384.ALGORITHM_NAME) .put(JsonWebKeyCurveName.P_521, Es512.ALGORITHM_NAME) - .put(JsonWebKeyCurveName.SECP256K1, Es256k.ALGORITHM_NAME) + .put(JsonWebKeyCurveName.P_256K, Es256k.ALGORITHM_NAME) .build(); public static final Map CURVE_TO_SPEC_NAME = ImmutableMap.builder() .put(JsonWebKeyCurveName.P_256, P256) .put(JsonWebKeyCurveName.P_384, P384) .put(JsonWebKeyCurveName.P_521, P521) - .put(JsonWebKeyCurveName.SECP256K1, SECP265K1) + .put(JsonWebKeyCurveName.P_256K, P256K) .build(); @@ -243,7 +243,7 @@ private JsonWebKeyCurveName getCurveFromKeyPair(KeyPair keyPair) { ECParameterSpec spec = key.getParams(); EllipticCurve crv = spec.getCurve(); - List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.SECP256K1); + List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.P_256K); for (JsonWebKeyCurveName curve : curveList) { ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(curve)); diff --git a/azure-keyvault-cryptography/src/test/java/com/microsoft/azure/keyvault/cryptography/test/ECKeyTest.java b/azure-keyvault-cryptography/src/test/java/com/microsoft/azure/keyvault/cryptography/test/ECKeyTest.java index 66b82da..748c75f 100644 --- a/azure-keyvault-cryptography/src/test/java/com/microsoft/azure/keyvault/cryptography/test/ECKeyTest.java +++ b/azure-keyvault-cryptography/src/test/java/com/microsoft/azure/keyvault/cryptography/test/ECKeyTest.java @@ -92,10 +92,10 @@ public static void setUpBeforeClass() throws Exception { .put(JsonWebKeyCurveName.P_256, DIGEST_256) .put(JsonWebKeyCurveName.P_384, DIGEST_384) .put(JsonWebKeyCurveName.P_521, DIGEST_512) - .put(JsonWebKeyCurveName.SECP256K1, DIGEST_256) + .put(JsonWebKeyCurveName.P_256K, DIGEST_256) .build(); //JsonWebKeyCurveName.SECP256K1) - CURVE_LIST = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.SECP256K1); + CURVE_LIST = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.P_256K); } @Test @@ -233,7 +233,7 @@ public void testCreateSECP256K1Key() throws Exception { final KeyPairGenerator generator = KeyPairGenerator.getInstance("EC"); generator.initialize(gps); - EcKey key = new EcKey("akey", JsonWebKeyCurveName.SECP256K1); + EcKey key = new EcKey("akey", JsonWebKeyCurveName.P_256K); } @Test diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java index 27b11ab..af8581e 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java @@ -804,7 +804,7 @@ private static JsonWebKeyCurveName getCurveFromKeyPair(KeyPair keyPair, Provider ECParameterSpec spec = key.getParams(); EllipticCurve crv = spec.getCurve(); - List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.SECP256K1); + List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.P_256K); for (JsonWebKeyCurveName curve : curveList) { ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(curve)); @@ -1143,6 +1143,6 @@ private static int hashCode(byte[] obj) { .put(JsonWebKeyCurveName.P_256, "secp256r1") .put(JsonWebKeyCurveName.P_384, "secp384r1") .put(JsonWebKeyCurveName.P_521, "secp521r1") - .put(JsonWebKeyCurveName.SECP256K1, "secp256k1") + .put(JsonWebKeyCurveName.P_256K, "secp256k1") .build(); } \ No newline at end of file diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyCurveName.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyCurveName.java index d5db269..b12aa57 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyCurveName.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyCurveName.java @@ -24,7 +24,7 @@ public final class JsonWebKeyCurveName { public static final JsonWebKeyCurveName P_521 = new JsonWebKeyCurveName("P-521"); /** Static value SECP256K1 for JsonWebKeyCurveName. */ - public static final JsonWebKeyCurveName SECP256K1 = new JsonWebKeyCurveName("SECP256K1"); + public static final JsonWebKeyCurveName P_256K = new JsonWebKeyCurveName("P-256K"); private String value; diff --git a/azure-keyvault-webkey/src/test/java/com/microsoft/azure/keyvault/webkey/test/EcValidationTests.java b/azure-keyvault-webkey/src/test/java/com/microsoft/azure/keyvault/webkey/test/EcValidationTests.java index 54b3738..a2f341d 100644 --- a/azure-keyvault-webkey/src/test/java/com/microsoft/azure/keyvault/webkey/test/EcValidationTests.java +++ b/azure-keyvault-webkey/src/test/java/com/microsoft/azure/keyvault/webkey/test/EcValidationTests.java @@ -96,20 +96,20 @@ private static void signVerify(PublicKey publicKey, PrivateKey privateKey, JsonW .put(JsonWebKeyCurveName.P_256, "SHA-256") .put(JsonWebKeyCurveName.P_384, "SHA-384") .put(JsonWebKeyCurveName.P_521, "SHA-512") - .put(JsonWebKeyCurveName.SECP256K1, "SHA-256") + .put(JsonWebKeyCurveName.P_256K, "SHA-256") .build(); Map keys = ImmutableMap.builder() .put(256, "{\"kid\":\"key_id\",\"kty\":\"EC\",\"key_ops\":null,\"n\":null,\"e\":null,\"d\":\"AM_iqldq9VSqlf9v3w7lren4pJvZTG81v6_V5ZBLP7ZI\",\"dp\":null,\"dq\":null,\"qi\":null,\"p\":null,\"q\":null,\"k\":null,\"key_hsm\":null,\"crv\":\"P-256\",\"x\":\"KyjF795jLyVIgswKSQInEGYHNBKSKyPgNojEgYlldMI\",\"y\":\"AIl_ca1ZIKbJ5YGdgGr_7HySldI2aWeBaOImZEYIMpVe\"}") .put(384, "{\"kid\":\"key_id\",\"kty\":\"EC\",\"key_ops\":null,\"n\":null,\"e\":null,\"d\":\"AJEYT00mAfa-_uJ8S9ob0-9uZbPEr56CFebUQW9O-jZQBrtrMSPeqVbjJvTVlzOwbg\",\"dp\":null,\"dq\":null,\"qi\":null,\"p\":null,\"q\":null,\"k\":null,\"key_hsm\":null,\"crv\":\"P-384\",\"x\":\"AKOdkhxTtVkLtaslZIOPQGnsdKRT2xo3Ynk-bnAVvTCf3iGrTpRiMxUmyq_tvzBLEg\",\"y\":\"QoHux2O2XGMh8w7a5sWwskAyCR0g3Lj7kPGuvnDq_bQ_-_VoTvsGMAe9MFexv68I\"}") .put(521, "{\"kid\":\"key_id\",\"kty\":\"EC\",\"key_ops\":null,\"n\":null,\"e\":null,\"d\":\"AVW7TFJVOJ8jY5PqK0nnKyVYQwhkBEGKt0nhSZTS5io7U32dR7xZle77Gq6SpjrdFVa32jvGWgchlSguV3WKy3sj\",\"dp\":null,\"dq\":null,\"qi\":null,\"p\":null,\"q\":null,\"k\":null,\"key_hsm\":null,\"crv\":\"P-521\",\"x\":\"AIDmImOrJNKOjOGp7wD8Dzi_uz-00E7cs8iN5SwBkzBXktyRrLDFS_SMwVdnIWpLcdJQn5sTGDS121DhjQA2i2dO\",\"y\":\"AWRoeIfIoRoEx8V9ijjwaco3V6vUPUYvKMKxtCPvm8iwhB7pZAI7-mODSfkb3rZo3gxuWoM3G7L66FttUlKSLK4w\"}") - .put(265, "{\"kid\":\"key_id\",\"kty\":\"EC\",\"key_ops\":null,\"n\":null,\"e\":null,\"d\":\"YKv22AkpwBpKUcDodNhKhvI-bRpiWqoN8l0kNCo-Mds\",\"dp\":null,\"dq\":null,\"qi\":null,\"p\":null,\"q\":null,\"k\":null,\"key_hsm\":null,\"crv\":\"SECP256K1\",\"x\":\"Yw9Sln8gYf_oiFY1anQm0V_WwsRaCIcEccfbhu5hSJo\",\"y\":\"AJq3JT2YldszaohHaS7LkngPWS9y0yAn7HhHb5p0IUDS\"}") + .put(265, "{\"kid\":\"key_id\",\"kty\":\"EC\",\"key_ops\":null,\"n\":null,\"e\":null,\"d\":\"YKv22AkpwBpKUcDodNhKhvI-bRpiWqoN8l0kNCo-Mds\",\"dp\":null,\"dq\":null,\"qi\":null,\"p\":null,\"q\":null,\"k\":null,\"key_hsm\":null,\"crv\":\"P-256K\",\"x\":\"Yw9Sln8gYf_oiFY1anQm0V_WwsRaCIcEccfbhu5hSJo\",\"y\":\"AJq3JT2YldszaohHaS7LkngPWS9y0yAn7HhHb5p0IUDS\"}") .build(); public static final Map CURVE_TO_SIGNATURE = ImmutableMap.builder() .put(JsonWebKeyCurveName.P_256, "SHA256withECDSA") .put(JsonWebKeyCurveName.P_384, "SHA384withECDSA") .put(JsonWebKeyCurveName.P_521, "SHA512withECDSA") - .put(JsonWebKeyCurveName.SECP256K1, "NONEwithECDSA") + .put(JsonWebKeyCurveName.P_256K, "NONEwithECDSA") .build(); } From 95af0687e8b4a69e02aa9a2382571e863ae2ec80 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Wed, 27 Jun 2018 16:17:02 -0700 Subject: [PATCH 4/7] Updated formatting, etc., to comply with mvn:checkstyle --- .../azure/keyvault/core/IKeyResolver.java | 18 +- .../extensions/AggregateKeyResolver.java | 18 +- .../extensions/CachingKeyResolver.java | 18 +- .../keyvault/extensions/KeyVaultKey.java | 19 +- .../extensions/KeyVaultKeyResolver.java | 18 +- .../azure/keyvault/extensions/Strings.java | 18 +- .../webkey/Base64UrlJsonDeserializer.java | 2 +- .../webkey/Base64UrlJsonSerializer.java | 2 +- .../azure/keyvault/webkey/JsonWebKey.java | 637 +++--- .../webkey/JsonWebKeyEncryptionAlgorithm.java | 14 +- .../webkey/JsonWebKeySignatureAlgorithm.java | 12 +- .../azure/keyvault/KeyVaultClient.java | 10 + .../azure/keyvault/KeyVaultClientBase.java | 23 +- .../azure/keyvault/KeyVaultClientCustom.java | 1281 ++++++++---- .../azure/keyvault/KeyVaultClientImpl.java | 6 +- .../authentication/AuthenticationResult.java | 17 +- .../authentication/KeyVaultCredentials.java | 163 +- .../KeyVaultClientCustomImpl.java | 1738 +++++++++++------ .../keyvault/implementation/package-info.java | 9 + .../messagesecurity/HttpMessageSecurity.java | 269 +-- .../keyvault/messagesecurity/JWEHeader.java | 52 +- .../keyvault/messagesecurity/JWEObject.java | 77 +- .../keyvault/messagesecurity/JWSHeader.java | 63 +- .../keyvault/messagesecurity/JWSObject.java | 63 +- .../MessageSecurityHelper.java | 72 +- .../messagesecurity/package-info.java | 9 + .../models/custom/CertificateBundle.java | 9 + .../models/custom/CertificateOperation.java | 9 + .../keyvault/models/custom/IssuerBundle.java | 9 + .../keyvault/models/custom/KeyBundle.java | 10 + .../keyvault/models/custom/SecretBundle.java | 9 + .../keyvault/models/custom/package-info.java | 10 + .../requests/CreateCertificateRequest.java | 6 + .../keyvault/requests/CreateKeyRequest.java | 25 +- .../requests/ImportCertificateRequest.java | 6 + .../keyvault/requests/ImportKeyRequest.java | 6 + .../requests/MergeCertificateRequest.java | 6 + .../requests/SetCertificateIssuerRequest.java | 6 + .../keyvault/requests/SetSecretRequest.java | 6 + .../UpdateCertificateIssuerRequest.java | 6 + .../UpdateCertificateOperationRequest.java | 6 + .../UpdateCertificatePolicyRequest.java | 6 + .../requests/UpdateCertificateRequest.java | 6 + .../keyvault/requests/UpdateKeyRequest.java | 6 + .../requests/UpdateSecretRequest.java | 6 + 45 files changed, 2970 insertions(+), 1811 deletions(-) create mode 100644 azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/package-info.java create mode 100644 azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/package-info.java create mode 100644 azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/package-info.java diff --git a/azure-keyvault-core/src/main/java/com/microsoft/azure/keyvault/core/IKeyResolver.java b/azure-keyvault-core/src/main/java/com/microsoft/azure/keyvault/core/IKeyResolver.java index e0b08e9..635dd80 100644 --- a/azure-keyvault-core/src/main/java/com/microsoft/azure/keyvault/core/IKeyResolver.java +++ b/azure-keyvault-core/src/main/java/com/microsoft/azure/keyvault/core/IKeyResolver.java @@ -1,19 +1,7 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ package com.microsoft.azure.keyvault.core; diff --git a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java index 30062e6..8ce09dd 100644 --- a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java +++ b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/AggregateKeyResolver.java @@ -1,19 +1,7 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ package com.microsoft.azure.keyvault.extensions; diff --git a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/CachingKeyResolver.java b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/CachingKeyResolver.java index f86a98b..cfefd73 100644 --- a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/CachingKeyResolver.java +++ b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/CachingKeyResolver.java @@ -1,19 +1,7 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ package com.microsoft.azure.keyvault.extensions; diff --git a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKey.java b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKey.java index d3bf97a..f903de9 100644 --- a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKey.java +++ b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKey.java @@ -1,21 +1,8 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ - package com.microsoft.azure.keyvault.extensions; import java.io.IOException; diff --git a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java index 7f8e778..a969082 100644 --- a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java +++ b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/KeyVaultKeyResolver.java @@ -1,19 +1,7 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ package com.microsoft.azure.keyvault.extensions; diff --git a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/Strings.java b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/Strings.java index 52ef356..5d5fe93 100644 --- a/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/Strings.java +++ b/azure-keyvault-extensions/src/main/java/com/microsoft/azure/keyvault/extensions/Strings.java @@ -1,19 +1,7 @@ /** - * - * Copyright (c) Microsoft and contributors. All rights reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * - * See the License for the specific language governing permissions and - * limitations under the License. - * + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. */ package com.microsoft.azure.keyvault.extensions; diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonDeserializer.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonDeserializer.java index 9418b15..f36de8c 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonDeserializer.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonDeserializer.java @@ -1,7 +1,7 @@ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for - * license information. + * license information. */ package com.microsoft.azure.keyvault.webkey; diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonSerializer.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonSerializer.java index eac3d33..c4b56b7 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonSerializer.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/Base64UrlJsonSerializer.java @@ -1,7 +1,7 @@ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for - * license information. + * license information. */ package com.microsoft.azure.keyvault.webkey; diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java index af8581e..c7d317a 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKey.java @@ -1,7 +1,7 @@ /** * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for - * license information. + * license information. */ package com.microsoft.azure.keyvault.webkey; @@ -9,12 +9,10 @@ import java.io.IOException; import java.math.BigInteger; import java.security.GeneralSecurityException; -import java.security.InvalidAlgorithmParameterException; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; import java.security.PrivateKey; import java.security.Provider; import java.security.PublicKey; @@ -29,7 +27,6 @@ import java.security.spec.ECPrivateKeySpec; import java.security.spec.ECPublicKeySpec; import java.security.spec.EllipticCurve; -import java.security.spec.InvalidKeySpecException; import java.security.spec.RSAPrivateCrtKeySpec; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; @@ -62,12 +59,12 @@ public class JsonWebKey { /** * Key Identifier. */ - @JsonProperty(value = "kid") + @JsonProperty(value = "kid") private String kid; /** - * JsonWebKey key type (kty). Possible values include: 'EC', 'EC-HSM', - * 'RSA', 'RSA-HSM', 'oct'. + * JsonWebKey key type (kty). Possible values include: 'EC', 'EC-HSM', 'RSA', + * 'RSA-HSM', 'oct'. */ @JsonProperty(value = "kty") private JsonWebKeyType kty; @@ -137,7 +134,7 @@ public class JsonWebKey { */ @JsonProperty(value = "key_hsm") private byte[] t; - + /** * Elliptic curve name. For valid values, see JsonWebKeyCurveName. Possible * values include: 'P-256', 'P-384', 'P-521', 'SECP256K1'. @@ -150,13 +147,13 @@ public class JsonWebKey { */ @JsonProperty(value = "x") private byte[] x; - + /** * Y component of an EC public key. */ @JsonProperty(value = "y") private byte[] y; - + /** * Get the kid value. * @@ -170,7 +167,8 @@ public String kid() { /** * Set the key identifier value. * - * @param kid the kid value to set + * @param kid + * the kid value to set * @return the JsonWebKey object itself. */ public JsonWebKey withKid(String kid) { @@ -191,7 +189,8 @@ public JsonWebKeyType kty() { /** * Set the key type value. * - * @param kty the key type + * @param kty + * the key type * @return the JsonWebKey object itself. */ public JsonWebKey withKty(JsonWebKeyType kty) { @@ -212,7 +211,8 @@ public List keyOps() { /** * Set the keyOps value. * - * @param keyOps the keyOps value to set + * @param keyOps + * the keyOps value to set * @return the JsonWebKey object itself. */ public JsonWebKey withKeyOps(List keyOps) { @@ -235,7 +235,8 @@ public byte[] n() { /** * Set the n value. * - * @param n the n value to set + * @param n + * the n value to set * @return the JsonWebKey object itself. */ public JsonWebKey withN(byte[] n) { @@ -258,7 +259,8 @@ public byte[] e() { /** * Set the e value. * - * @param e the e value to set + * @param e + * the e value to set * @return the JsonWebKey object itself. */ public JsonWebKey withE(byte[] e) { @@ -281,7 +283,8 @@ public byte[] d() { /** * Set the d value. * - * @param d the d value to set + * @param d + * the d value to set * @return the JsonWebKey object itself. */ public JsonWebKey withD(byte[] d) { @@ -291,6 +294,7 @@ public JsonWebKey withD(byte[] d) { /** * Get the RSA Private Key Parameter value. + * * @return the RSA Private Key Parameter value. */ @JsonProperty("dp") @@ -302,7 +306,9 @@ public byte[] dp() { /** * Set RSA Private Key Parameter value. - * @param dp the RSA Private Key Parameter value to set. + * + * @param dp + * the RSA Private Key Parameter value to set. * @return the JsonWebKey object itself. */ public JsonWebKey withDp(byte[] dp) { @@ -312,6 +318,7 @@ public JsonWebKey withDp(byte[] dp) { /** * Get the RSA Private Key Parameter value. + * * @return the RSA Private Key Parameter value. */ @JsonProperty("dq") @@ -323,7 +330,9 @@ public byte[] dq() { /** * Set RSA Private Key Parameter value . - * @param dq the RSA Private Key Parameter value to set. + * + * @param dq + * the RSA Private Key Parameter value to set. * @return the JsonWebKey object itself. */ public JsonWebKey withDq(byte[] dq) { @@ -333,6 +342,7 @@ public JsonWebKey withDq(byte[] dq) { /** * Get the RSA Private Key Parameter value. + * * @return the RSA Private Key Parameter value. */ @JsonProperty("qi") @@ -344,7 +354,9 @@ public byte[] qi() { /** * Set RSA Private Key Parameter value. - * @param qi the RSA Private Key Parameter value to set. + * + * @param qi + * the RSA Private Key Parameter value to set. * @return the JsonWebKey object itself. */ public JsonWebKey withQi(byte[] qi) { @@ -354,6 +366,7 @@ public JsonWebKey withQi(byte[] qi) { /** * Get the RSA secret prime value. + * * @return the RSA secret prime value. */ @JsonProperty("p") @@ -365,7 +378,9 @@ public byte[] p() { /** * Set the RSA secret prime value. - * @param p the RSA secret prime value. + * + * @param p + * the RSA secret prime value. * @return the JsonWebKey object itself. */ public JsonWebKey withP(byte[] p) { @@ -375,6 +390,7 @@ public JsonWebKey withP(byte[] p) { /** * Get RSA secret prime, with p < q value. + * * @return the RSA secret prime, with p < q value. */ @JsonProperty("q") @@ -386,7 +402,9 @@ public byte[] q() { /** * Set the RSA secret prime, with p < q value. - * @param q the the RSA secret prime, with p < q value to be set. + * + * @param q + * the the RSA secret prime, with p < q value to be set. * @return the JsonWebKey object itself. */ public JsonWebKey withQ(byte[] q) { @@ -396,6 +414,7 @@ public JsonWebKey withQ(byte[] q) { /** * Get Symmetric key value. + * * @return the symmetric key value. */ @JsonProperty("k") @@ -407,7 +426,9 @@ public byte[] k() { /** * Set the Symmetric key value. - * @param k the symmetric key value to set. + * + * @param k + * the symmetric key value to set. * @return the JsonWebKey object itself. */ public JsonWebKey withK(byte[] k) { @@ -417,6 +438,7 @@ public JsonWebKey withK(byte[] k) { /** * Get HSM Token value, used with Bring Your Own Key. + * * @return HSM Token, used with Bring Your Own Key. */ @JsonProperty("key_hsm") @@ -428,7 +450,9 @@ public byte[] t() { /** * Set HSM Token value, used with Bring Your Own Key. - * @param t HSM Token value to set, used with Bring Your Own Key + * + * @param t + * HSM Token value to set, used with Bring Your Own Key * @return the JsonWebKey object itself. */ public JsonWebKey withT(byte[] t) { @@ -463,7 +487,8 @@ public JsonWebKeyCurveName crv() { /** * Set the crv value. * - * @param crv the crv value to set + * @param crv + * the crv value to set * @return the JsonWebKey object itself. */ public JsonWebKey withCrv(JsonWebKeyCurveName crv) { @@ -480,18 +505,19 @@ public JsonWebKey withCrv(JsonWebKeyCurveName crv) { @JsonSerialize(using = Base64UrlJsonSerializer.class) @JsonDeserialize(using = Base64UrlJsonDeserializer.class) public byte[] x() { - return this.x; + return this.x; } /** * Set the x value. * - * @param x the x value to set + * @param x + * the x value to set * @return the JsonWebKey object itself. */ public JsonWebKey withX(byte[] x) { - this.x = x; - return this; + this.x = x; + return this; } /** @@ -503,20 +529,21 @@ public JsonWebKey withX(byte[] x) { @JsonSerialize(using = Base64UrlJsonSerializer.class) @JsonDeserialize(using = Base64UrlJsonDeserializer.class) public byte[] y() { - return this.y; + return this.y; } /** * Set the y value. * - * @param y the y value to set + * @param y + * the y value to set * @return the JsonWebKey object itself. */ public JsonWebKey withY(byte[] y) { - this.y = y; - return this; + this.y = y; + return this; } - + /** * Get the RSA public key spec value. * @@ -541,14 +568,16 @@ private RSAPrivateKeySpec getRSAPrivateKeySpec() { /** * Get the RSA public key value. * - * @param provider the Java security provider. + * @param provider + * the Java security provider. * @return the RSA public key value */ private PublicKey getRSAPublicKey(Provider provider) { try { RSAPublicKeySpec publicKeySpec = getRSAPublicKeySpec(); - KeyFactory factory = provider != null ? KeyFactory.getInstance("RSA", provider) : KeyFactory.getInstance("RSA"); + KeyFactory factory = provider != null ? KeyFactory.getInstance("RSA", provider) + : KeyFactory.getInstance("RSA"); return factory.generatePublic(publicKeySpec); } catch (GeneralSecurityException e) { @@ -559,42 +588,45 @@ private PublicKey getRSAPublicKey(Provider provider) { /** * Get the RSA private key value. * - * @param provider the Java security provider. + * @param provider + * the Java security provider. * @return the RSA private key value */ private PrivateKey getRSAPrivateKey(Provider provider) { try { RSAPrivateKeySpec privateKeySpec = getRSAPrivateKeySpec(); - KeyFactory factory = provider != null ? KeyFactory.getInstance("RSA", provider) : KeyFactory.getInstance("RSA"); + KeyFactory factory = provider != null ? KeyFactory.getInstance("RSA", provider) + : KeyFactory.getInstance("RSA"); return factory.generatePrivate(privateKeySpec); } catch (GeneralSecurityException e) { throw new IllegalStateException(e); } } - - - private static PublicKey getECPublicKey(ECPoint ecPoint, ECParameterSpec curveSpec, Provider provider) { - // Create public key spec with given point - try { - ECPublicKeySpec pubSpec = new ECPublicKeySpec(ecPoint, curveSpec); - KeyFactory kf = provider != null ? KeyFactory.getInstance("EC", provider) : KeyFactory.getInstance("EC", "SunEC"); - return (ECPublicKey) kf.generatePublic(pubSpec); - } catch (GeneralSecurityException e) { - throw new IllegalStateException(e); - } - } - - private static PrivateKey getECPrivateKey(byte[] d, ECParameterSpec curveSpec, Provider provider) { - try { - ECPrivateKeySpec priSpec = new ECPrivateKeySpec(new BigInteger(1, d), curveSpec); - KeyFactory kf = provider != null ? KeyFactory.getInstance("EC", provider) : KeyFactory.getInstance("EC", "SunEC"); - return (ECPrivateKey) kf.generatePrivate(priSpec); - } catch (GeneralSecurityException e) { - throw new IllegalStateException(e); - } - } + + private static PublicKey getECPublicKey(ECPoint ecPoint, ECParameterSpec curveSpec, Provider provider) { + // Create public key spec with given point + try { + ECPublicKeySpec pubSpec = new ECPublicKeySpec(ecPoint, curveSpec); + KeyFactory kf = provider != null ? KeyFactory.getInstance("EC", provider) + : KeyFactory.getInstance("EC", "SunEC"); + return (ECPublicKey) kf.generatePublic(pubSpec); + } catch (GeneralSecurityException e) { + throw new IllegalStateException(e); + } + } + + private static PrivateKey getECPrivateKey(byte[] d, ECParameterSpec curveSpec, Provider provider) { + try { + ECPrivateKeySpec priSpec = new ECPrivateKeySpec(new BigInteger(1, d), curveSpec); + KeyFactory kf = provider != null ? KeyFactory.getInstance("EC", provider) + : KeyFactory.getInstance("EC", "SunEC"); + return (ECPrivateKey) kf.generatePrivate(priSpec); + } catch (GeneralSecurityException e) { + throw new IllegalStateException(e); + } + } /** * Verifies if the key is an RSA key. @@ -629,7 +661,9 @@ private static BigInteger toBigInteger(byte[] b) { /** * Converts RSA key pair to JSON web key. - * @param keyPair RSA key pair + * + * @param keyPair + * RSA key pair * @return the JSON web key, converted from RSA key pair. */ public static JsonWebKey fromRSA(KeyPair keyPair) { @@ -639,30 +673,19 @@ public static JsonWebKey fromRSA(KeyPair keyPair) { if (privateKey != null) { - key = new JsonWebKey() - .withKty(JsonWebKeyType.RSA) - .withN(toByteArray(privateKey.getModulus())) + key = new JsonWebKey().withKty(JsonWebKeyType.RSA).withN(toByteArray(privateKey.getModulus())) .withE(toByteArray(privateKey.getPublicExponent())) - .withD(toByteArray(privateKey.getPrivateExponent())) - .withP(toByteArray(privateKey.getPrimeP())) - .withQ(toByteArray(privateKey.getPrimeQ())) - .withDp(toByteArray(privateKey.getPrimeExponentP())) + .withD(toByteArray(privateKey.getPrivateExponent())).withP(toByteArray(privateKey.getPrimeP())) + .withQ(toByteArray(privateKey.getPrimeQ())).withDp(toByteArray(privateKey.getPrimeExponentP())) .withDq(toByteArray(privateKey.getPrimeExponentQ())) .withQi(toByteArray(privateKey.getCrtCoefficient())); } else { RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic(); - key = new JsonWebKey() - .withKty(JsonWebKeyType.RSA) - .withN(toByteArray(publicKey.getModulus())) - .withE(toByteArray(publicKey.getPublicExponent())) - .withD(null) - .withP(null) - .withQ(null) - .withDp(null) - .withDq(null) - .withQi(null); + key = new JsonWebKey().withKty(JsonWebKeyType.RSA).withN(toByteArray(publicKey.getModulus())) + .withE(toByteArray(publicKey.getPublicExponent())).withD(null).withP(null).withQ(null).withDp(null) + .withDq(null).withQi(null); } return key; @@ -670,6 +693,7 @@ public static JsonWebKey fromRSA(KeyPair keyPair) { /** * Converts JSON web key to RSA key pair. + * * @return RSA key pair */ public KeyPair toRSA() { @@ -677,18 +701,27 @@ public KeyPair toRSA() { } /** - * Converts JSON web key to RSA key pair and include the private key if set to true. - * @param includePrivateParameters true if the RSA key pair should include the private key. False otherwise. + * Converts JSON web key to RSA key pair and include the private key if set to + * true. + * + * @param includePrivateParameters + * true if the RSA key pair should include the private key. False + * otherwise. * @return RSA key pair */ public KeyPair toRSA(boolean includePrivateParameters) { return toRSA(includePrivateParameters, null); } - + /** - * Converts JSON web key to RSA key pair and include the private key if set to true. - * @param provider the Java security provider. - * @param includePrivateParameters true if the RSA key pair should include the private key. False otherwise. + * Converts JSON web key to RSA key pair and include the private key if set to + * true. + * + * @param provider + * the Java security provider. + * @param includePrivateParameters + * true if the RSA key pair should include the private key. False + * otherwise. * @return RSA key pair */ public KeyPair toRSA(boolean includePrivateParameters, Provider provider) { @@ -702,162 +735,170 @@ public KeyPair toRSA(boolean includePrivateParameters, Provider provider) { return new KeyPair(getRSAPublicKey(provider), null); } } - + /** - * Converts JSON web key to EC key pair and include the private key if set to true. + * Converts JSON web key to EC key pair and include the private key if set to + * true. + * * @return EC key pair */ public KeyPair toEC() { - return toEC(false, null); + return toEC(false, null); } - + /** - * Converts JSON web key to EC key pair and include the private key if set to true. - * @param includePrivateParameters true if the EC key pair should include the private key. False otherwise. + * Converts JSON web key to EC key pair and include the private key if set to + * true. + * + * @param includePrivateParameters + * true if the EC key pair should include the private key. False + * otherwise. * @return EC key pair */ public KeyPair toEC(boolean includePrivateParameters) { - return toEC(includePrivateParameters, null); + return toEC(includePrivateParameters, null); } - + /** - * Converts JSON web key to EC key pair and include the private key if set to true. - * @param provider the Java security provider. - * @param includePrivateParameters true if the EC key pair should include the private key. False otherwise. - * @param provider Java security provider + * Converts JSON web key to EC key pair and include the private key if set to + * true. + * + * @param includePrivateParameters + * true if the EC key pair should include the private key. False + * otherwise. + * @param provider + * Java security provider * @return EC key pair */ public KeyPair toEC(boolean includePrivateParameters, Provider provider) { - - if (provider == null) { - //Our default provider for this class - provider = Security.getProvider("SunEC"); - } - - if (!JsonWebKeyType.EC.equals(kty) && !JsonWebKeyType.EC_HSM.equals(kty)) { - throw new IllegalArgumentException("Not an EC key."); - } - - try { - KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", provider); - - ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(crv)); - kpg.initialize(gps); - - - // Generate dummy keypair to get parameter spec. - KeyPair apair = kpg.generateKeyPair(); - ECPublicKey apub = (ECPublicKey) apair.getPublic(); - ECParameterSpec aspec = apub.getParams(); - - ECPoint ecPoint = new ECPoint(new BigInteger(1, x), new BigInteger(1, y)); - - KeyPair realKeyPair; - - if (includePrivateParameters) { - realKeyPair = new KeyPair(getECPublicKey(ecPoint, aspec, provider), getECPrivateKey(d, aspec, provider)); - } else { - realKeyPair = new KeyPair(getECPublicKey(ecPoint, aspec, provider), null); - } - - return realKeyPair; - } catch (GeneralSecurityException e) { - throw new IllegalStateException(e); - } - } - + + if (provider == null) { + // Our default provider for this class + provider = Security.getProvider("SunEC"); + } + + if (!JsonWebKeyType.EC.equals(kty) && !JsonWebKeyType.EC_HSM.equals(kty)) { + throw new IllegalArgumentException("Not an EC key."); + } + + try { + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", provider); + + ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(crv)); + kpg.initialize(gps); + + // Generate dummy keypair to get parameter spec. + KeyPair apair = kpg.generateKeyPair(); + ECPublicKey apub = (ECPublicKey) apair.getPublic(); + ECParameterSpec aspec = apub.getParams(); + + ECPoint ecPoint = new ECPoint(new BigInteger(1, x), new BigInteger(1, y)); + + KeyPair realKeyPair; + + if (includePrivateParameters) { + realKeyPair = new KeyPair(getECPublicKey(ecPoint, aspec, provider), + getECPrivateKey(d, aspec, provider)); + } else { + realKeyPair = new KeyPair(getECPublicKey(ecPoint, aspec, provider), null); + } + + return realKeyPair; + } catch (GeneralSecurityException e) { + throw new IllegalStateException(e); + } + } + /** * Converts EC key pair to JSON web key. - * @param keyPair EC key pair - * @param provider Java security provider + * + * @param keyPair + * EC key pair + * @param provider + * Java security provider * @return the JSON web key, converted from EC key pair. */ - public static JsonWebKey fromEC(KeyPair keyPair, Provider provider) { - - ECPublicKey apub = (ECPublicKey) keyPair.getPublic(); - ECPoint point = apub.getW(); - ECPrivateKey apriv = (ECPrivateKey) keyPair.getPrivate(); - - if (apriv != null) { - return new JsonWebKey() - .withKty(JsonWebKeyType.EC) - .withCrv(getCurveFromKeyPair(keyPair, provider)) - .withX(point.getAffineX().toByteArray()) - .withY(point.getAffineY().toByteArray()) - .withD(apriv.getS().toByteArray()) - .withKty(JsonWebKeyType.EC); - } else { - return new JsonWebKey() - .withKty(JsonWebKeyType.EC) - .withCrv(getCurveFromKeyPair(keyPair, provider)) - .withX(point.getAffineX().toByteArray()) - .withY(point.getAffineY().toByteArray()) - .withKty(JsonWebKeyType.EC); - } - } - - // Matches the curve of the keyPair to supported curves. - private static JsonWebKeyCurveName getCurveFromKeyPair(KeyPair keyPair, Provider provider) { - - try { - ECPublicKey key = (ECPublicKey) keyPair.getPublic(); - ECParameterSpec spec = key.getParams(); - EllipticCurve crv = spec.getCurve(); - - List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.P_256K); - - for (JsonWebKeyCurveName curve : curveList) { - ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(curve)); - KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", provider); - kpg.initialize(gps); - - // Generate dummy keypair to get parameter spec. - KeyPair apair = kpg.generateKeyPair(); - ECPublicKey apub = (ECPublicKey) apair.getPublic(); - ECParameterSpec aspec = apub.getParams(); - EllipticCurve acurve = aspec.getCurve(); - - //Matches the parameter spec - if (acurve.equals(crv)) { - return curve; - } - } - - //Did not find a supported curve. - throw new NoSuchAlgorithmException("Curve not supported."); - } catch (GeneralSecurityException e) { - throw new IllegalStateException(e); - } - } - + public static JsonWebKey fromEC(KeyPair keyPair, Provider provider) { + + ECPublicKey apub = (ECPublicKey) keyPair.getPublic(); + ECPoint point = apub.getW(); + ECPrivateKey apriv = (ECPrivateKey) keyPair.getPrivate(); + + if (apriv != null) { + return new JsonWebKey().withKty(JsonWebKeyType.EC).withCrv(getCurveFromKeyPair(keyPair, provider)) + .withX(point.getAffineX().toByteArray()).withY(point.getAffineY().toByteArray()) + .withD(apriv.getS().toByteArray()).withKty(JsonWebKeyType.EC); + } else { + return new JsonWebKey().withKty(JsonWebKeyType.EC).withCrv(getCurveFromKeyPair(keyPair, provider)) + .withX(point.getAffineX().toByteArray()).withY(point.getAffineY().toByteArray()) + .withKty(JsonWebKeyType.EC); + } + } + + // Matches the curve of the keyPair to supported curves. + private static JsonWebKeyCurveName getCurveFromKeyPair(KeyPair keyPair, Provider provider) { + + try { + ECPublicKey key = (ECPublicKey) keyPair.getPublic(); + ECParameterSpec spec = key.getParams(); + EllipticCurve crv = spec.getCurve(); + + List curveList = Arrays.asList(JsonWebKeyCurveName.P_256, JsonWebKeyCurveName.P_384, + JsonWebKeyCurveName.P_521, JsonWebKeyCurveName.P_256K); + + for (JsonWebKeyCurveName curve : curveList) { + ECGenParameterSpec gps = new ECGenParameterSpec(CURVE_TO_SPEC_NAME.get(curve)); + KeyPairGenerator kpg = KeyPairGenerator.getInstance("EC", provider); + kpg.initialize(gps); + + // Generate dummy keypair to get parameter spec. + KeyPair apair = kpg.generateKeyPair(); + ECPublicKey apub = (ECPublicKey) apair.getPublic(); + ECParameterSpec aspec = apub.getParams(); + EllipticCurve acurve = aspec.getCurve(); + + // Matches the parameter spec + if (acurve.equals(crv)) { + return curve; + } + } + + // Did not find a supported curve. + throw new NoSuchAlgorithmException("Curve not supported."); + } catch (GeneralSecurityException e) { + throw new IllegalStateException(e); + } + } + /** * Converts AES key to JSON web key. - * @param secretKey AES key + * + * @param secretKey + * AES key * @return the JSON web key, converted from AES key. */ public static JsonWebKey fromAes(SecretKey secretKey) { if (secretKey == null) { return null; } - - return new JsonWebKey() - .withK(secretKey.getEncoded()) - .withKty(JsonWebKeyType.OCT); + + return new JsonWebKey().withK(secretKey.getEncoded()).withKty(JsonWebKeyType.OCT); } - + /** * Converts JSON web key to AES key. + * * @return AES key */ public SecretKey toAes() { if (k == null) { return null; } - + SecretKey secretKey = new SecretKeySpec(k, "AES"); return secretKey; } - + @Override public boolean equals(Object obj) { if (obj == this) { @@ -868,37 +909,40 @@ public boolean equals(Object obj) { } return super.equals(obj); } - + /** * Indicates whether some other {@link JsonWebKey} is "equal to" this one. - * @param jwk the other {@link JsonWebKey} to compare with. - * @return true if this {@link JsonWebKey} is the same as the jwk argument; false otherwise. + * + * @param jwk + * the other {@link JsonWebKey} to compare with. + * @return true if this {@link JsonWebKey} is the same as the jwk argument; + * false otherwise. */ public boolean equals(JsonWebKey jwk) { if (jwk == null) { return false; } - + if (!Objects.equal(kid, jwk.kid)) { return false; } - + if (!Objects.equal(kty, jwk.kty)) { return false; } - + if (!Objects.equal(keyOps, jwk.keyOps)) { return false; } - + if (!Objects.equal(crv, jwk.crv)) { - return false; + return false; } - + if (!Arrays.equals(k, jwk.k)) { return false; } - + // Public parameters if (!Arrays.equals(n, jwk.n)) { return false; @@ -927,43 +971,45 @@ public boolean equals(JsonWebKey jwk) { return false; } if (!Arrays.equals(x, jwk.x)) { - return false; + return false; } if (!Arrays.equals(y, jwk.y)) { - return false; + return false; } - + // HSM token if (!Arrays.equals(t, jwk.t)) { return false; } - + return true; } /** * Verifies whether the {@link JsonWebKey} has private key. + * * @return true if the {@link JsonWebKey} has private key; false otherwise. */ public boolean hasPrivateKey() { - + if (JsonWebKeyType.OCT.equals(kty)) { return k != null; } - + else if (JsonWebKeyType.RSA.equals(kty) || JsonWebKeyType.RSA_HSM.equals(kty)) { return (d != null && dp != null && dq != null && qi != null && p != null && q != null); } - - else if (JsonWebKeyType.EC.equals(kty) || JsonWebKeyType.EC_HSM.equals(kty)){ - return (d != null); + + else if (JsonWebKeyType.EC.equals(kty) || JsonWebKeyType.EC_HSM.equals(kty)) { + return (d != null); } - + return false; } /** * Verifies whether the {@link JsonWebKey} is valid. + * * @return true if the {@link JsonWebKey} is valid; false otherwise. */ @JsonIgnore @@ -971,7 +1017,7 @@ public boolean isValid() { if (kty == null) { return false; } - + if (keyOps != null) { final Set set = new HashSet(JsonWebKeyOperation.ALL_OPERATIONS); for (int i = 0; i < keyOps.size(); i++) { @@ -980,27 +1026,27 @@ public boolean isValid() { } } } - + if (JsonWebKeyType.OCT.equals(kty)) { return isValidOctet(); } - + else if (JsonWebKeyType.RSA.equals(kty)) { return isValidRsa(); } - + else if (JsonWebKeyType.RSA_HSM.equals(kty)) { return isValidRsaHsm(); } - + else if (JsonWebKeyType.EC.equals(kty)) { - return isValidEc(); + return isValidEc(); } - + else if (JsonWebKeyType.EC_HSM.equals(kty)) { - return isValidEcHsm(); + return isValidEcHsm(); } - + return false; } @@ -1015,11 +1061,10 @@ private boolean isValidRsa() { if (n == null || e == null) { return false; } - - return hasPrivateKey() - || (d == null && dp == null && dq == null && qi == null && p == null && q == null); + + return hasPrivateKey() || (d == null && dp == null && dq == null && qi == null && p == null && q == null); } - + private boolean isValidRsaHsm() { // MAY have public key parameters if ((n == null && e != null) || (n != null && e == null)) { @@ -1030,9 +1075,9 @@ private boolean isValidRsaHsm() { if (hasPrivateKey()) { return false; } - + // MUST have ( T || ( N && E ) ) - boolean tokenParameters = t != null; + boolean tokenParameters = t != null; boolean publicParameters = (n != null && e != null); if (tokenParameters && publicParameters) { @@ -1041,55 +1086,67 @@ private boolean isValidRsaHsm() { return (tokenParameters || publicParameters); } - + private boolean isValidEc() { - boolean ecPointParameters = (x != null && y != null); - if (!ecPointParameters || crv == null) { - return false; - } - - return hasPrivateKey() || (d == null); - } - + boolean ecPointParameters = (x != null && y != null); + if (!ecPointParameters || crv == null) { + return false; + } + + return hasPrivateKey() || (d == null); + } + private boolean isValidEcHsm() { - // MAY have public key parameters - boolean ecPointParameters = (x != null && y != null); - if ((ecPointParameters && crv == null) || (!ecPointParameters && crv != null)) { - return false; - } - - // no private key - if (hasPrivateKey()) { - return false; - } - - // MUST have (T || (ecPointParameters && crv)) - boolean publicParameters = (ecPointParameters && crv != null); - boolean tokenParameters = t != null; - + // MAY have public key parameters + boolean ecPointParameters = (x != null && y != null); + if ((ecPointParameters && crv == null) || (!ecPointParameters && crv != null)) { + return false; + } + + // no private key + if (hasPrivateKey()) { + return false; + } + + // MUST have (T || (ecPointParameters && crv)) + boolean publicParameters = (ecPointParameters && crv != null); + boolean tokenParameters = t != null; + if (tokenParameters && publicParameters) { return false; } return (tokenParameters || publicParameters); } - + /** * Clear key materials. */ public void clearMemory() { - zeroArray(k); k = null; - zeroArray(n); n = null; - zeroArray(e); e = null; - zeroArray(d); d = null; - zeroArray(dp); dp = null; - zeroArray(dq); dq = null; - zeroArray(qi); qi = null; - zeroArray(p); p = null; - zeroArray(q); q = null; - zeroArray(t); t = null; - zeroArray(x); x = null; - zeroArray(y); y = null; + zeroArray(k); + k = null; + zeroArray(n); + n = null; + zeroArray(e); + e = null; + zeroArray(d); + d = null; + zeroArray(dp); + dp = null; + zeroArray(dq); + dq = null; + zeroArray(qi); + qi = null; + zeroArray(p); + p = null; + zeroArray(q); + q = null; + zeroArray(t); + t = null; + zeroArray(x); + x = null; + zeroArray(y); + y = null; } private static void zeroArray(byte[] bytes) { @@ -1104,45 +1161,43 @@ public int hashCode() { if (kid != null) { hashCode += kid.hashCode(); } - + if (JsonWebKeyType.OCT.equals(kty)) { hashCode += hashCode(k); } - + else if (JsonWebKeyType.RSA.equals(kty)) { hashCode += hashCode(n); } - + else if (JsonWebKeyType.EC.equals(kty)) { - hashCode += hashCode(x); - hashCode += hashCode(y); - hashCode += crv.hashCode(); + hashCode += hashCode(x); + hashCode += hashCode(y); + hashCode += crv.hashCode(); } - + else if (JsonWebKeyType.RSA_HSM.equals(kty) || JsonWebKeyType.EC_HSM.equals(kty)) { hashCode += hashCode(t); } - + return hashCode; } - + private static int hashCode(byte[] obj) { int hashCode = 0; - + if (obj == null || obj.length == 0) { return 0; } - + for (int i = 0; i < obj.length; i++) { hashCode = (hashCode << 3) | (hashCode >> 29) ^ obj[i]; } return hashCode; } - - private final static Map CURVE_TO_SPEC_NAME = ImmutableMap.builder() - .put(JsonWebKeyCurveName.P_256, "secp256r1") - .put(JsonWebKeyCurveName.P_384, "secp384r1") - .put(JsonWebKeyCurveName.P_521, "secp521r1") - .put(JsonWebKeyCurveName.P_256K, "secp256k1") - .build(); + + private static final Map CURVE_TO_SPEC_NAME = ImmutableMap + .builder().put(JsonWebKeyCurveName.P_256, "secp256r1") + .put(JsonWebKeyCurveName.P_384, "secp384r1").put(JsonWebKeyCurveName.P_521, "secp521r1") + .put(JsonWebKeyCurveName.P_256K, "secp256k1").build(); } \ No newline at end of file diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyEncryptionAlgorithm.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyEncryptionAlgorithm.java index ad3c888..6631fb4 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyEncryptionAlgorithm.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeyEncryptionAlgorithm.java @@ -17,9 +17,9 @@ */ public final class JsonWebKeyEncryptionAlgorithm { - /** Static value RSA-OAEP for JsonWebKeyEncryptionAlgorithm. */ + /** Static value RSA-OAEP for JsonWebKeyEncryptionAlgorithm. */ public static final JsonWebKeyEncryptionAlgorithm RSA_OAEP = new JsonWebKeyEncryptionAlgorithm("RSA-OAEP"); - + /** Static value RSA-OAEP-256 for JsonWebKeyEncryptionAlgorithm. */ public static final JsonWebKeyEncryptionAlgorithm RSA_OAEP_256 = new JsonWebKeyEncryptionAlgorithm("RSA-OAEP-256"); @@ -30,7 +30,9 @@ public final class JsonWebKeyEncryptionAlgorithm { /** * Creates a custom value for JsonWebKeyEncryptionAlgorithm. - * @param value the custom value + * + * @param value + * the custom value */ public JsonWebKeyEncryptionAlgorithm(String value) { this.value = value; @@ -62,10 +64,10 @@ public boolean equals(Object obj) { return value.equals(rhs.value); } } - + /** * All the JWK encryption algorithms. */ - public static final List ALL_ALGORITHMS = - Collections.unmodifiableList(Arrays.asList(RSA_OAEP, RSA1_5, RSA_OAEP_256)); + public static final List ALL_ALGORITHMS = Collections + .unmodifiableList(Arrays.asList(RSA_OAEP, RSA1_5, RSA_OAEP_256)); } diff --git a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java index 49ef7cd..7075d00 100644 --- a/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java +++ b/azure-keyvault-webkey/src/main/java/com/microsoft/azure/keyvault/webkey/JsonWebKeySignatureAlgorithm.java @@ -2,7 +2,7 @@ * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for * license information. - */ + **/ package com.microsoft.azure.keyvault.webkey; @@ -17,7 +17,7 @@ */ public final class JsonWebKeySignatureAlgorithm { - /** Static value PS256 for JsonWebKeySignatureAlgorithm. */ + /** Static value PS256 for JsonWebKeySignatureAlgorithm. */ public static final JsonWebKeySignatureAlgorithm PS256 = new JsonWebKeySignatureAlgorithm("PS256"); /** Static value PS384 for JsonWebKeySignatureAlgorithm. */ @@ -50,7 +50,9 @@ public final class JsonWebKeySignatureAlgorithm { /** * Creates a custom value for JsonWebKeySignatureAlgorithm. - * @param value the custom value + * + * @param value + * the custom value */ public JsonWebKeySignatureAlgorithm(String value) { this.value = value; @@ -86,6 +88,6 @@ public boolean equals(Object obj) { /** * All the JWK signature algorithms. */ - public static final List ALL_ALGORITHMS = - Collections.unmodifiableList(Arrays.asList(RS256, RS384, RS512, RSNULL, PS256, PS384, PS512, ES256, ES384, ES512, ES256K)); + public static final List ALL_ALGORITHMS = Collections.unmodifiableList( + Arrays.asList(RS256, RS384, RS512, RSNULL, PS256, PS384, PS512, ES256, ES384, ES512, ES256K)); } diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java index 7ebb555..58e8bd3 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClient.java @@ -1,9 +1,19 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault; import com.microsoft.azure.keyvault.implementation.KeyVaultClientCustomImpl; import com.microsoft.rest.RestClient; import com.microsoft.rest.credentials.ServiceClientCredentials; +/** + * Class for Key Vault Client. + * + */ public final class KeyVaultClient extends KeyVaultClientCustomImpl implements KeyVaultClientCustom { /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java index 06e31ec..72f4752 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientBase.java @@ -8,7 +8,13 @@ package com.microsoft.azure.keyvault; +import java.util.List; +import java.util.Map; + import com.microsoft.azure.AzureClient; +import com.microsoft.azure.ListOperationCallback; +import com.microsoft.azure.Page; +import com.microsoft.azure.PagedList; import com.microsoft.azure.keyvault.models.BackupCertificateResult; import com.microsoft.azure.keyvault.models.BackupKeyResult; import com.microsoft.azure.keyvault.models.BackupSecretResult; @@ -33,12 +39,7 @@ import com.microsoft.azure.keyvault.models.IssuerAttributes; import com.microsoft.azure.keyvault.models.IssuerBundle; import com.microsoft.azure.keyvault.models.IssuerCredentials; -import com.microsoft.azure.keyvault.webkey.JsonWebKey; import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; -import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; -import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; import com.microsoft.azure.keyvault.models.KeyAttributes; import com.microsoft.azure.keyvault.models.KeyBundle; import com.microsoft.azure.keyvault.models.KeyItem; @@ -56,16 +57,16 @@ import com.microsoft.azure.keyvault.models.StorageAccountAttributes; import com.microsoft.azure.keyvault.models.StorageAccountItem; import com.microsoft.azure.keyvault.models.StorageBundle; -import com.microsoft.azure.ListOperationCallback; -import com.microsoft.azure.Page; -import com.microsoft.azure.PagedList; +import com.microsoft.azure.keyvault.webkey.JsonWebKey; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; +import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; +import com.microsoft.azure.keyvault.webkey.JsonWebKeyType; import com.microsoft.rest.RestClient; import com.microsoft.rest.ServiceCallback; import com.microsoft.rest.ServiceFuture; import com.microsoft.rest.ServiceResponse; -import java.io.IOException; -import java.util.List; -import java.util.Map; + import rx.Observable; /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java index c16be66..f64bf02 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientCustom.java @@ -1,10 +1,45 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault; +import java.util.List; +import java.util.Map; + import com.microsoft.azure.ListOperationCallback; import com.microsoft.azure.Page; import com.microsoft.azure.PagedList; -import com.microsoft.azure.keyvault.models.*; -import com.microsoft.azure.keyvault.requests.*; +import com.microsoft.azure.keyvault.models.CertificateBundle; +import com.microsoft.azure.keyvault.models.CertificateIssuerItem; +import com.microsoft.azure.keyvault.models.CertificateItem; +import com.microsoft.azure.keyvault.models.CertificateOperation; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.DeletedCertificateItem; +import com.microsoft.azure.keyvault.models.IssuerBundle; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.KeyItem; +import com.microsoft.azure.keyvault.models.KeyOperationResult; +import com.microsoft.azure.keyvault.models.KeyVaultErrorException; +import com.microsoft.azure.keyvault.models.KeyVerifyResult; +import com.microsoft.azure.keyvault.models.SecretBundle; +import com.microsoft.azure.keyvault.models.SecretItem; +import com.microsoft.azure.keyvault.requests.CreateCertificateRequest; +import com.microsoft.azure.keyvault.requests.CreateKeyRequest; +import com.microsoft.azure.keyvault.requests.ImportCertificateRequest; +import com.microsoft.azure.keyvault.requests.ImportKeyRequest; +import com.microsoft.azure.keyvault.requests.MergeCertificateRequest; +import com.microsoft.azure.keyvault.requests.SetCertificateIssuerRequest; +import com.microsoft.azure.keyvault.requests.SetSecretRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateIssuerRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateOperationRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificatePolicyRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateRequest; +import com.microsoft.azure.keyvault.requests.UpdateKeyRequest; +import com.microsoft.azure.keyvault.requests.UpdateSecretRequest; import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; @@ -14,17 +49,20 @@ import com.microsoft.rest.ServiceFuture; import com.microsoft.rest.ServiceResponse; import com.microsoft.rest.protocol.SerializerAdapter; + import okhttp3.OkHttpClient; import retrofit2.Retrofit; import rx.Observable; -import java.util.List; -import java.util.Map; - +/** + * The interface for the Key Vault Client custom class. Maintains some backwards + * compatibility functionalities. + * + */ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** - * @return the Retrofit instance.e + * @return the Retrofit instance. */ Retrofit retrofit(); @@ -34,10 +72,14 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { OkHttpClient httpClient(); /** - * @return the adapter to a Jackson {@link com.fasterxml.jackson.databind.ObjectMapper}. + * @return the adapter to a Jackson + * {@link com.fasterxml.jackson.databind.ObjectMapper}. */ SerializerAdapter serializerAdapter(); + /** + * Initializes the service. + */ void initializeService(); /** @@ -46,211 +88,361 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { RestClient restClient(); /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. Authorization: Requires the keys/create permission. * - * @param createKeyRequest the grouped properties for creating a key request + * @param createKeyRequest + * the grouped properties for creating a key request * @return the KeyBundle if successful. */ KeyBundle createKey(CreateKeyRequest createKeyRequest); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + + /** + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param keyName + * The name for the new key. The system will generate the version + * name for the new key. + * @param kty + * The type of key to create. For valid key types, see + * JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic + * Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', + * 'RSA-HSM', 'oct' + * @param keySize + * The key size in bytes. For example, 1024 or 2048. + * @param keyOps + * the List<JsonWebKeyOperation> value + * @param keyAttributes + * the KeyAttributes value + * @param tags + * Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException + * thrown if parameters fail the validation + * @throws KeyVaultErrorException + * thrown if the request is rejected by server + * @throws RuntimeException + * all other wrapped checked exceptions if the request fails to be + * sent * @return the KeyBundle object if successful. */ - KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); + KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, + List keyOps, KeyAttributes keyAttributes, Map tags); /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. Authorization: Requires the keys/create permission. * - * @param createKeyRequest the grouped properties for creating a key request + * @param createKeyRequest + * the grouped properties for creating a key request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation + ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, + ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param keyName + * The name for the new key. The system will generate the version + * name for the new key. + * @param kty + * The type of key to create. For valid key types, see + * JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic + * Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', + * 'RSA-HSM', 'oct' + * @param keySize + * The key size in bytes. For example, 1024 or 2048. + * @param keyOps + * the List<JsonWebKeyOperation> value + * @param keyAttributes + * the KeyAttributes value + * @param tags + * Application specific metadata in the form of key-value pairs. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ - ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, final ServiceCallback serviceCallback); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation + ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, + List keyOps, KeyAttributes keyAttributes, Map tags, + final ServiceCallback serviceCallback); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param keyName + * The name for the new key. The system will generate the version + * name for the new key. + * @param kty + * The type of key to create. For valid key types, see + * JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic + * Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', + * 'RSA-HSM', 'oct' + * @param keySize + * The key size in bytes. For example, 1024 or 2048. + * @param keyOps + * the List<JsonWebKeyOperation> value + * @param keyAttributes + * the KeyAttributes value + * @param tags + * Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the KeyBundle object */ - Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); - - /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. - * The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param keyName The name for the new key. The system will generate the version name for the new key. - * @param kty The type of key to create. For valid key types, see JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' - * @param keySize The key size in bytes. For example, 1024 or 2048. - * @param keyOps the List<JsonWebKeyOperation> value - * @param keyAttributes the KeyAttributes value - * @param tags Application specific metadata in the form of key-value pairs. - * @throws IllegalArgumentException thrown if parameters fail the validation + Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, + List keyOps, KeyAttributes keyAttributes, Map tags); + + /** + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param keyName + * The name for the new key. The system will generate the version + * name for the new key. + * @param kty + * The type of key to create. For valid key types, see + * JsonWebKeyType. Supported JsonWebKey key types (kty) for Elliptic + * Curve, RSA, HSM, Octet. Possible values include: 'EC', 'RSA', + * 'RSA-HSM', 'oct' + * @param keySize + * The key size in bytes. For example, 1024 or 2048. + * @param keyOps + * the List<JsonWebKeyOperation> value + * @param keyAttributes + * the KeyAttributes value + * @param tags + * Application specific metadata in the form of key-value pairs. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the KeyBundle object */ - Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags); + Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, + JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, + Map tags); /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * Imports an externally created key, stores it, and returns key parameters and + * attributes to the client. The import key operation may be used to import any + * key type into an Azure Key Vault. If the named key already exists, Azure Key + * Vault creates a new version of the key. Authorization: requires the + * keys/import permission. * - * @param importKeyRequest the grouped properties for importing a key request + * @param importKeyRequest + * the grouped properties for importing a key request * * @return the KeyBundle if successful. */ KeyBundle importKey(ImportKeyRequest importKeyRequest); /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * Imports an externally created key, stores it, and returns key parameters and + * attributes to the client. The import key operation may be used to import any + * key type into an Azure Key Vault. If the named key already exists, Azure Key + * Vault creates a new version of the key. Authorization: requires the + * keys/import permission. * - * @param importKeyRequest the grouped properties for importing a key request + * @param importKeyRequest + * the grouped properties for importing a key request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback); + ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, + final ServiceCallback serviceCallback); /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * The update key operation changes specified attributes of a stored key and can + * be applied to any key type and key version stored in Azure Key Vault. The + * cryptographic material of a key itself cannot be changed. In order to perform + * this operation, the key must already exist in the Key Vault. Authorization: + * requires the keys/update permission. * - * @param updateKeyRequest the grouped properties for updating a key request + * @param updateKeyRequest + * the grouped properties for updating a key request * * @return the KeyBundle if successful. */ KeyBundle updateKey(UpdateKeyRequest updateKeyRequest); /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * The update key operation changes specified attributes of a stored key and can + * be applied to any key type and key version stored in Azure Key Vault. The + * cryptographic material of a key itself cannot be changed. In order to perform + * this operation, the key must already exist in the Key Vault. Authorization: + * requires the keys/update permission. * - * @param updateKeyRequest the grouped properties for updating a key request + * @param updateKeyRequest + * the grouped properties for updating a key request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback); + ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, + final ServiceCallback serviceCallback); /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the part of a stored key. The get key operation is applicable to all key + * types. If the requested key is symmetric, then no key material is released in + * the response. Authorization: Requires the keys/get permission. * - * @param keyIdentifier The full key identifier + * @param keyIdentifier + * The full key identifier * * @return the KeyBundle if successful. */ KeyBundle getKey(String keyIdentifier); /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the part of a stored key. The get key operation is applicable to all key + * types. If the requested key is symmetric, then no key material is released in + * the response. Authorization: Requires the keys/get permission. * - * @param keyIdentifier The full key identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback); /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the part of a stored key. The get key operation is applicable to all key + * types. If the requested key is symmetric, then no key material is released in + * the response. Authorization: Requires the keys/get permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key * @return the KeyBundle if successful. */ KeyBundle getKey(String vaultBaseUrl, String keyName); /** - * Gets the part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the part of a stored key. The get key operation is applicable to all key + * types. If the requested key is symmetric, then no key material is released in + * the response. Authorization: Requires the keys/get permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) ; + ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, + final ServiceCallback serviceCallback); /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key * * @return the PagedList<KeyItem> if successful. */ PagedList listKeyVersions(final String vaultBaseUrl, final String keyName); /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback); + ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, + final ListOperationCallback serviceCallback); /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<KeyItem> if successful. */ PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults); /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. - * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. + * + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, + final Integer maxresults, final ListOperationCallback serviceCallback); /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * * @return the PagedList<KeyItem> if successful. */ @@ -259,16 +451,24 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + ServiceFuture> listKeysAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback); + /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<KeyItem> if successful. */ @@ -277,85 +477,125 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback); /** * Wraps a symmetric key using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be wrapped + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback); /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * Unwraps a symmetric key using the specified key in the vault that has + * initially been used for wrapping the key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be unwrapped * * @return the KeyOperationResult if successful. */ KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * Unwraps a symmetric key using the specified key in the vault that has + * initially been used for wrapping the key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be unwrapped + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback); /** * Wraps a symmetric key using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be wrapped * * @return the KeyOperationResult if successful. */ KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * Encrypts an arbitrary sequence of bytes using an encryption key that is + * stored in a key vault. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be encrypted * * @return the KeyOperationResult if successful. */ KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value); /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * Encrypts an arbitrary sequence of bytes using an encryption key that is + * stored in a key vault. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be encrypted + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback); /** * Decrypts a single block of encrypted data. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be decrypted * * @return the KeyOperationResult if successful. */ @@ -364,20 +604,29 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Decrypts a single block of encrypted data. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be decrypted + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback); /** * Creates a signature from a digest using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be signed * * @return the KeyOperationResult if successful. */ @@ -386,42 +635,63 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Creates a signature from a digest using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be signed + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback); + ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback); /** * Verifies a signature using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified + * @param keyIdentifier + * The full key identifier + * @param algorithm + * The signing/verification algorithm. For more information on + * possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest + * The digest used for signing + * @param signature + * The signature to be verified * * @return the KeyVerifyResult if successful. */ - KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature); + KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, + byte[] signature); /** * Verifies a signature using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * The signing/verification algorithm. For more information on + * possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest + * The digest used for signing + * @param signature + * The signature to be verified + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback); + ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, + byte[] digest, byte[] signature, final ServiceCallback serviceCallback); /** * Sets a secret in the specified vault. * - * @param setSecretRequest the grouped properties for setting a secret request + * @param setSecretRequest + * the grouped properties for setting a secret request * * @return the SecretBundle if successful. */ @@ -430,54 +700,73 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Sets a secret in the specified vault. * - * @param setSecretRequest the grouped properties for setting a secret request + * @param setSecretRequest + * the grouped properties for setting a secret request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback); - + ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, + final ServiceCallback serviceCallback); /** - * Updates the attributes associated with a specified secret in a given key vault. + * Updates the attributes associated with a specified secret in a given key + * vault. * - * @param updateSecretRequest the grouped properties for updating a secret request + * @param updateSecretRequest + * the grouped properties for updating a secret request * * @return the SecretBundle if successful. */ SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest); /** - * Updates the attributes associated with a specified secret in a given key vault. + * Updates the attributes associated with a specified secret in a given key + * vault. * - * @param updateSecretRequest the grouped properties for updating a secret request + * @param updateSecretRequest + * the grouped properties for updating a secret request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback); + ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, + final ServiceCallback serviceCallback); + /** * Get a specified secret from a given key vault. * - * @param secretIdentifier The URL for the secret. + * @param secretIdentifier + * The URL for the secret. * * @return the SecretBundle if successful. */ SecretBundle getSecret(String secretIdentifier); + /** * Get a specified secret from a given key vault. * - * @param secretIdentifier The URL for the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param secretIdentifier + * The URL for the secret. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback); + ServiceFuture getSecretAsync(String secretIdentifier, + final ServiceCallback serviceCallback); /** * Get a specified secret from a given key vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault * * @return the SecretBundle if successful. */ @@ -486,35 +775,50 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Get a specified secret from a given key vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback); + ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, + final ServiceCallback serviceCallback); /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * * @return the PagedList<SecretItem> if successful. */ PagedList listSecrets(final String vaultBaseUrl); + /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) ; + ServiceFuture> listSecretsAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback); + /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<SecretItem> if successful. */ @@ -523,18 +827,26 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback); /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault * * @return the PagedList<SecretItem> if successful. */ @@ -543,104 +855,157 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback); + ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, + final ListOperationCallback serviceCallback); + /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<SecretItem> if successful. */ - PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults); + PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, + final Integer maxresults); /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback); - - /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, + final Integer maxresults, final ListOperationCallback serviceCallback); + + /** + * List certificates in a specified key vault. The GetCertificates operation + * returns the set of certificates resources in the specified key vault. This + * operation requires the certificates/list permission. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation + * @throws KeyVaultErrorException + * 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<CertificateItem> object if successful. */ PagedList getCertificates(final String vaultBaseUrl, final Integer maxresults); - + /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation + * List certificates in a specified key vault. The GetCertificates operation + * returns the set of certificates resources in the specified key vault. This + * operation requires the certificates/list permission. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ - ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - + ServiceFuture> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback); + /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * List certificates in a specified key vault. The GetCertificates operation + * returns the set of certificates resources in the specified key vault. This + * operation requires the certificates/list permission. * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the PagedList<CertificateItem> object */ Observable> getCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); - + /** - * List certificates in a specified key vault. - * The GetCertificates operation returns the set of certificates resources in the specified key vault. This operation requires the certificates/list permission. + * List certificates in a specified key vault. The GetCertificates operation + * returns the set of certificates resources in the specified key vault. This + * operation requires the certificates/list permission. * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the PagedList<CertificateItem> object */ - Observable>> getCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + Observable>> getCertificatesWithServiceResponseAsync( + final String vaultBaseUrl, final Integer maxresults); - /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * * @return the PagedList<CertificateItem> if successful. */ - PagedList listCertificates(final String vaultBaseUrl) ; + PagedList listCertificates(final String vaultBaseUrl); /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback); + /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<CertificateItem> if successful. */ @@ -649,18 +1014,24 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); - + ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback); /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * * @return the PagedList<CertificateIssuerItem> if successful. */ @@ -669,16 +1040,24 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback); + ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback); + /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<CertificateIssuerItem> if successful. */ @@ -687,17 +1066,24 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, + final Integer maxresults, final ListOperationCallback serviceCallback); /** * Sets the certificate contacts for the specified vault. * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * @param setCertificateIssuerRequest + * the grouped properties for setting a certificate issuer request * * @return the IssuerBundle if successful. */ @@ -706,17 +1092,22 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Sets the certificate contacts for the specified vault. * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * @param setCertificateIssuerRequest + * the grouped properties for setting a certificate issuer request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback); + ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, + final ServiceCallback serviceCallback); /** * Updates the specified certificate issuer. * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * @param updateCertificateIssuerRequest + * the grouped properties for updating a certificate issuer request * * @return the IssuerBundle if successful. */ @@ -725,37 +1116,51 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Updates the specified certificate issuer. * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * @param updateCertificateIssuerRequest + * the grouped properties for updating a certificate issuer request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if callback is null + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. + * @throws IllegalArgumentException + * thrown if callback is null * @return the {@link ServiceFuture} object */ - ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback); + ServiceFuture updateCertificateIssuerAsync( + UpdateCertificateIssuerRequest updateCertificateIssuerRequest, + final ServiceCallback serviceCallback); /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. + * Creates a new certificate version. If this is the first version, the + * certificate resource is created. * - * @param createCertificateRequest the grouped properties for creating a certificate request + * @param createCertificateRequest + * the grouped properties for creating a certificate request * * @return the CertificateOperation if successful. */ CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest); /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. + * Creates a new certificate version. If this is the first version, the + * certificate resource is created. * - * @param createCertificateRequest the grouped properties for creating a certificate request + * @param createCertificateRequest + * the grouped properties for creating a certificate request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback); + ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, + final ServiceCallback serviceCallback); /** * Imports a certificate into the specified vault. * - * @param importCertificateRequest the grouped properties for importing a certificate request + * @param importCertificateRequest + * the grouped properties for importing a certificate request * * @return the CertificateBundle if successful. */ @@ -764,18 +1169,24 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Imports a certificate into the specified vault. * - * @param importCertificateRequest the grouped properties for importing a certificate request + * @param importCertificateRequest + * the grouped properties for importing a certificate request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback); + ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, + final ServiceCallback serviceCallback); /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate * * @return the PagedList<CertificateItem> if successful. */ @@ -784,76 +1195,109 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback); + ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, + final String certificateName, final ListOperationCallback serviceCallback); + /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * * @return the PagedList<CertificateItem> if successful. */ - PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults); + PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, + final Integer maxresults); /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, + final String certificateName, final Integer maxresults, + final ListOperationCallback serviceCallback); /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * Updates the policy for a certificate. Set appropriate members in the + * certificatePolicy that must be updated. Leave others as null. * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * @param updateCertificatePolicyRequest + * the grouped properties for updating a certificate policy request * * @return the CertificatePolicy if successful. */ CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest); /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * Updates the policy for a certificate. Set appropriate members in the + * certificatePolicy that must be updated. Leave others as null. * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * @param updateCertificatePolicyRequest + * the grouped properties for updating a certificate policy request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback); + ServiceFuture updateCertificatePolicyAsync( + UpdateCertificatePolicyRequest updateCertificatePolicyRequest, + final ServiceCallback serviceCallback); /** * Updates the attributes associated with the specified certificate. * - * @param updateCertificateRequest the grouped properties for updating a certificate request + * @param updateCertificateRequest + * the grouped properties for updating a certificate request * * @return the CertificateBundle if successful. */ CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest); - + /** * Updates the attributes associated with the specified certificate. * - * @param updateCertificateRequest the grouped properties for updating a certificate request + * @param updateCertificateRequest + * the grouped properties for updating a certificate request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback); + ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, + final ServiceCallback serviceCallback); /** * Gets information about a specified certificate. * - * @param certificateIdentifier The certificate identifier + * @param certificateIdentifier + * The certificate identifier * * @return the CertificateBundle if successful. */ @@ -862,17 +1306,23 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Gets information about a specified certificate. * - * @param certificateIdentifier The certificate identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param certificateIdentifier + * The certificate identifier + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback); + ServiceFuture getCertificateAsync(String certificateIdentifier, + final ServiceCallback serviceCallback); /** * Gets information about a specified certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate in the given vault * * @return the CertificateBundle if successful. */ @@ -881,108 +1331,169 @@ public interface KeyVaultClientCustom extends KeyVaultClientBase { /** * Updates a certificate operation. * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * @param updateCertificateOperationRequest + * the grouped properties for updating a certificate operation + * request * * @return the CertificateOperation if successful. */ - CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest); + CertificateOperation updateCertificateOperation( + UpdateCertificateOperationRequest updateCertificateOperationRequest); /** * Updates a certificate operation. * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * @param updateCertificateOperationRequest + * the grouped properties for updating a certificate operation + * request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback); - - + ServiceFuture updateCertificateOperationAsync( + UpdateCertificateOperationRequest updateCertificateOperationRequest, + final ServiceCallback serviceCallback); /** - * Merges a certificate or a certificate chain with a key pair existing on the server. + * Merges a certificate or a certificate chain with a key pair existing on the + * server. * - * @param mergeCertificateRequest the grouped properties for merging a certificate request + * @param mergeCertificateRequest + * the grouped properties for merging a certificate request * * @return the CertificateBundle if successful. */ CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest); /** - * Merges a certificate or a certificate chain with a key pair existing on the server. + * Merges a certificate or a certificate chain with a key pair existing on the + * server. * - * @param mergeCertificateRequest the grouped properties for merging a certificate request + * @param mergeCertificateRequest + * the grouped properties for merging a certificate request * - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback); - + ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, + final ServiceCallback serviceCallback); /** * Gets the pending certificate signing request response. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate * * @return the String if successful. */ String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName); + /** * Gets the pending certificate signing request response. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback); - - /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation - * @throws KeyVaultErrorException thrown if the request is rejected by server - * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent + ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, + final ServiceCallback serviceCallback); + + /** + * Lists the deleted certificates in the specified vault currently available for + * recovery. The GetDeletedCertificates operation retrieves the certificates in + * the current vault which are in a deleted state and ready for recovery or + * purging. This operation includes deletion-specific information. This + * operation requires the certificates/get/list permission. This operation can + * only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation + * @throws KeyVaultErrorException + * 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<DeletedCertificateItem> object if successful. */ PagedList getDeletedCertificates(final String vaultBaseUrl, final Integer maxresults); - + /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. - * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. - * @throws IllegalArgumentException thrown if parameters fail the validation + * Lists the deleted certificates in the specified vault currently available for + * recovery. The GetDeletedCertificates operation retrieves the certificates in + * the current vault which are in a deleted state and ready for recovery or + * purging. This operation includes deletion-specific information. This + * operation requires the certificates/get/list permission. This operation can + * only be enabled on soft-delete enabled vaults. + * + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the {@link ServiceFuture} object */ - ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback); + ServiceFuture> getDeletedCertificatesAsync(final String vaultBaseUrl, + final Integer maxresults, final ListOperationCallback serviceCallback); /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * Lists the deleted certificates in the specified vault currently available for + * recovery. The GetDeletedCertificates operation retrieves the certificates in + * the current vault which are in a deleted state and ready for recovery or + * purging. This operation includes deletion-specific information. This + * operation requires the certificates/get/list permission. This operation can + * only be enabled on soft-delete enabled vaults. * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the PagedList<DeletedCertificateItem> object */ - Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, final Integer maxresults); - + Observable> getDeletedCertificatesAsync(final String vaultBaseUrl, + final Integer maxresults); + /** - * Lists the deleted certificates in the specified vault currently available for recovery. - * The GetDeletedCertificates operation retrieves the certificates in the current vault which are in a deleted state and ready for recovery or purging. This operation includes deletion-specific information. This operation requires the certificates/get/list permission. This operation can only be enabled on soft-delete enabled vaults. + * Lists the deleted certificates in the specified vault currently available for + * recovery. The GetDeletedCertificates operation retrieves the certificates in + * the current vault which are in a deleted state and ready for recovery or + * purging. This operation includes deletion-specific information. This + * operation requires the certificates/get/list permission. This operation can + * only be enabled on soft-delete enabled vaults. * - * @param vaultBaseUrl The vault name, for example https://myvault.vault.azure.net. - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @throws IllegalArgumentException thrown if parameters fail the validation + * @param vaultBaseUrl + * The vault name, for example https://myvault.vault.azure.net. + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @throws IllegalArgumentException + * thrown if parameters fail the validation * @return the observable to the PagedList<DeletedCertificateItem> object */ - Observable>> getDeletedCertificatesWithServiceResponseAsync(final String vaultBaseUrl, final Integer maxresults); + Observable>> getDeletedCertificatesWithServiceResponseAsync( + final String vaultBaseUrl, final Integer maxresults); } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java index 1444064..f1d3c98 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/KeyVaultClientImpl.java @@ -189,7 +189,7 @@ public KeyVaultClientImpl withGenerateClientRequestId(boolean generateClientRequ * * @param credentials the management credentials for Azure */ - public KeyVaultClientImpl(ServiceClientCredentials credentials) { + KeyVaultClientImpl(ServiceClientCredentials credentials) { this("https://{vaultBaseUrl}", credentials); } @@ -199,7 +199,7 @@ public KeyVaultClientImpl(ServiceClientCredentials credentials) { * @param baseUrl the base URL of the host * @param credentials the management credentials for Azure */ - private KeyVaultClientImpl(String baseUrl, ServiceClientCredentials credentials) { + KeyVaultClientImpl(String baseUrl, ServiceClientCredentials credentials) { super(baseUrl, credentials); initialize(); } @@ -209,7 +209,7 @@ private KeyVaultClientImpl(String baseUrl, ServiceClientCredentials credentials) * * @param restClient the REST client to connect to Azure. */ - public KeyVaultClientImpl(RestClient restClient) { + KeyVaultClientImpl(RestClient restClient) { super(restClient); initialize(); } diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java index 4981f0a..6f1628a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/AuthenticationResult.java @@ -6,21 +6,22 @@ package com.microsoft.azure.keyvault.authentication; /** - * Stores authentication token and client key used for proof of possession authentication. + * Stores authentication token and client key used for proof of possession + * authentication. */ -public class AuthenticationResult{ +public class AuthenticationResult { private String authToken; private String popKey; /** - * Constructor + * Constructor. * * @param authToken - * authentication token string. + * authentication token string. * @param popKey - * serialized json web key used for pop authentication. + * serialized json web key used for pop authentication. */ - public AuthenticationResult(String authToken, String popKey){ + public AuthenticationResult(String authToken, String popKey) { this.authToken = authToken; this.popKey = popKey; } @@ -30,7 +31,7 @@ public AuthenticationResult(String authToken, String popKey){ * * @return authentication token. */ - public String getAuthToken(){ + public String getAuthToken() { return authToken; } @@ -39,7 +40,7 @@ public String getAuthToken(){ * * @return proof of possession key. */ - public String getPopKey(){ + public String getPopKey() { return popKey; } } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java index e045e67..aeb7fa0 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/authentication/KeyVaultCredentials.java @@ -26,14 +26,16 @@ import org.apache.commons.lang3.tuple.Pair; /** - * An implementation of {@link ServiceClientCredentials} that supports automatic bearer token refresh. + * An implementation of {@link ServiceClientCredentials} that supports automatic + * bearer token refresh. * */ public abstract class KeyVaultCredentials implements ServiceClientCredentials { private static final String WWW_AUTHENTICATE = "WWW-Authenticate"; private static final String BEARER_TOKEP_REFIX = "Bearer "; - private List supportedMethods = Arrays.asList("sign", "verify", "encrypt", "decrypt", "wrapkey", "unwrapkey"); + private List supportedMethods = Arrays.asList("sign", "verify", "encrypt", "decrypt", "wrapkey", + "unwrapkey"); private final ChallengeCache cache = new ChallengeCache(); @@ -61,9 +63,9 @@ public Response intercept(Chain chain) throws IOException { // response response = chain.proceed(buildEmptyRequest(originalRequest)); - if (response.code() == 200){ + if (response.code() == 200) { return response; - } else if (response.code() != 401){ + } else if (response.code() != 401) { throw new IOException("Unexpected unauthorized response."); } authenticatedRequestPair = buildAuthenticatedRequest(originalRequest, response); @@ -71,10 +73,9 @@ public Response intercept(Chain chain) throws IOException { response = chain.proceed(authenticatedRequestPair.getLeft()); - if (response.code() == 200){ + if (response.code() == 200) { return authenticatedRequestPair.getRight().unprotectResponse(response); - } - else{ + } else { return response; } } @@ -88,9 +89,11 @@ public Response intercept(Chain chain) throws IOException { * unprotected request without auth token. * @param challengeMap * the challenge map. - * @return Pair of protected request and HttpMessageSecurity used for encryption. + * @return Pair of protected request and HttpMessageSecurity used for + * encryption. */ - private Pair buildAuthenticatedRequest(Request originalRequest, Map challengeMap) throws IOException{ + private Pair buildAuthenticatedRequest(Request originalRequest, + Map challengeMap) throws IOException { Boolean supportsPop = supportsMessageProtection(originalRequest.url().toString(), challengeMap); AuthenticationResult authResult = getAuthenticationCredentials(supportsPop, challengeMap); @@ -99,9 +102,7 @@ private Pair buildAuthenticatedRequest(Request ori return null; } - HttpMessageSecurity httpMessageSecurity = - new HttpMessageSecurity( - authResult.getAuthToken(), + HttpMessageSecurity httpMessageSecurity = new HttpMessageSecurity(authResult.getAuthToken(), supportsPop ? authResult.getPopKey() : "", supportsPop ? challengeMap.get("x-ms-message-encryption-key") : "", supportsPop ? challengeMap.get("x-ms-message-signing-key") : ""); @@ -117,9 +118,11 @@ private Pair buildAuthenticatedRequest(Request ori * unprotected request without auth token. * @param response * response with unauthorized return code. - * @return Pair of protected request and HttpMessageSecurity used for encryption. + * @return Pair of protected request and HttpMessageSecurity used for + * encryption. */ - private Pair buildAuthenticatedRequest(Request originalRequest, Response response) throws IOException{ + private Pair buildAuthenticatedRequest(Request originalRequest, Response response) + throws IOException { String authenticateHeader = response.header(WWW_AUTHENTICATE); Map challengeMap = extractChallenge(authenticateHeader, BEARER_TOKEP_REFIX); @@ -140,12 +143,11 @@ private Pair buildAuthenticatedRequest(Request ori * unprotected request without auth token. * @return request with removed body. */ - private Request buildEmptyRequest(Request request){ + private Request buildEmptyRequest(Request request) { RequestBody body = RequestBody.create(MediaType.parse("application/json"), "{}"); - if (request.method().equalsIgnoreCase("get")){ + if (request.method().equalsIgnoreCase("get")) { return request; - } - else { + } else { return request.newBuilder().method(request.method(), body).build(); } } @@ -161,12 +163,12 @@ private Request buildEmptyRequest(Request request){ */ private Boolean supportsMessageProtection(String url, Map challengeMap) { - if (!"true".equals(challengeMap.get("supportspop"))){ + if (!"true".equals(challengeMap.get("supportspop"))) { return false; } // Message protection is enabled only for subset of keys operations. - if (!url.toLowerCase().contains("/keys/")){ + if (!url.toLowerCase().contains("/keys/")) { return false; } @@ -175,8 +177,8 @@ private Boolean supportsMessageProtection(String url, Map challe } /** - * Extracts the authentication challenges from the challenge map and calls - * the authentication callback to get the bearer token and return it. + * Extracts the authentication challenges from the challenge map and calls the + * authentication callback to get the bearer token and return it. * * @param supportsPop * is resource supports pop authentication. @@ -247,13 +249,16 @@ private static boolean isValidChallenge(String authenticateHeader, String authCh * @param resource * Identifier of the target resource that is the recipient of the * requested token, a URL. + * + * @param scope + * The scope of the authentication request. * * @return AuthenticationResult with authorization token and PoP key. * * Answers a server challenge with a token header. *

- * Implementations typically use ADAL to get a token, as performed - * in the sample below: + * Implementations typically use ADAL to get a token, as performed in + * the sample below: *

* *
@@ -289,13 +294,13 @@ private static boolean isValidChallenge(String authenticateHeader, String authCh
      *         
* *

- * Note: The client key must be securely stored. It's advised to - * use two client applications - one for development and other for + * Note: The client key must be securely stored. It's advised to use + * two client applications - one for development and other for * production - managed by separate parties. *

* */ - public String doAuthenticate(String authorization, String resource, String scope){ + public String doAuthenticate(String authorization, String resource, String scope) { return ""; } @@ -317,76 +322,76 @@ public String doAuthenticate(String authorization, String resource, String scope * * Answers a server challenge with a token header. *

- * Implementations sends POST request to receive authentication token like in example below. - * ADAL currently doesn't support POP authentication. + * Implementations sends POST request to receive authentication token + * like in example below. ADAL currently doesn't support POP + * authentication. *

* *
-     *  public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema) {
-     *      JsonWebKey clientJwk = GenerateJsonWebKey();
-     *      JsonWebKey clientPublicJwk = GetJwkWithPublicKeyOnly(clientJwk);
-     *      String token = GetAccessToken(authorization, resource, "pop".equals(schema), clientPublicJwk);
+     *         public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema) {
+     *             JsonWebKey clientJwk = GenerateJsonWebKey();
+     *             JsonWebKey clientPublicJwk = GetJwkWithPublicKeyOnly(clientJwk);
+     *             String token = GetAccessToken(authorization, resource, "pop".equals(schema), clientPublicJwk);
      *
-     *      return new AuthenticationResult(token, clientJwk.toString());
-     *  }
+     *             return new AuthenticationResult(token, clientJwk.toString());
+     *         }
      *
-     *  private JsonWebKey GenerateJsonWebKey()
-     *  {
-     *      final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
-     *      generator.initialize(2048);
-     *      KeyPair clientRsaKeyPair  = generator.generateKeyPair();
-     *      JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair);
-     *      result.withKid(UUID.randomUUID().toString());
-     *      return result;
-     *  }
+     *         private JsonWebKey GenerateJsonWebKey() {
+     *             final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA");
+     *             generator.initialize(2048);
+     *             KeyPair clientRsaKeyPair = generator.generateKeyPair();
+     *             JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair);
+     *             result.withKid(UUID.randomUUID().toString());
+     *             return result;
+     *         }
      *
-     *  public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){
-     *      KeyPair publicOnly = jwk.toRSA(false);
-     *      JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly);
-     *      jsonkeyPublic.withKid(jwk.kid());
-     *      jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY));
-     *      return jsonkeyPublic;
-     *  }
+     *         public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk) {
+     *             KeyPair publicOnly = jwk.toRSA(false);
+     *             JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly);
+     *             jsonkeyPublic.withKid(jwk.kid());
+     *             jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY,
+     *                     JsonWebKeyOperation.VERIFY));
+     *             return jsonkeyPublic;
+     *         }
      *
-     *  private String GetAccessToken(String authorization, String resource, boolean supportspop, JsonWebKey jwkPublic){
-     *      CloseableHttpClient  httpclient = HttpClients.createDefault();
-     *      HttpPost httppost = new HttpPost(authorization + "/oauth2/token");
-     *      
-     *      // Request parameters and other properties.
-     *      List<NameValuePair> params = new ArrayList<NameValuePair>(2);
-     *      params.add(new BasicNameValuePair("resource", resource));
-     *      params.add(new BasicNameValuePair("response_type", "token"));
-     *      params.add(new BasicNameValuePair("grant_type", "client_credentials"));
-     *      params.add(new BasicNameValuePair("client_id", this.getApplicationId()));
-     *      params.add(new BasicNameValuePair("client_secret", this.getApplicationSecret()));
+     *         private String GetAccessToken(String authorization, String resource, boolean supportspop, JsonWebKey jwkPublic) {
+     *             CloseableHttpClient httpclient = HttpClients.createDefault();
+     *             HttpPost httppost = new HttpPost(authorization + "/oauth2/token");
+     * 
+     *             // Request parameters and other properties.
+     *             List<NameValuePair> params = new ArrayList<NameValuePair>(2);
+     *             params.add(new BasicNameValuePair("resource", resource));
+     *             params.add(new BasicNameValuePair("response_type", "token"));
+     *             params.add(new BasicNameValuePair("grant_type", "client_credentials"));
+     *             params.add(new BasicNameValuePair("client_id", this.getApplicationId()));
+     *             params.add(new BasicNameValuePair("client_secret", this.getApplicationSecret()));
      *
-     *      if (supportspop)
-     *      {
-     *          params.add(new BasicNameValuePair("pop_jwk", jwkPublic.toString()));
-     *      }
+     *             if (supportspop) {
+     *                 params.add(new BasicNameValuePair("pop_jwk", jwkPublic.toString()));
+     *             }
      *
-     *      httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
+     *             httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
      *
-     *      HttpResponse response = httpclient.execute(httppost);
-     *      HttpEntity entity = response.getEntity();
+     *             HttpResponse response = httpclient.execute(httppost);
+     *             HttpEntity entity = response.getEntity();
      *
-     *      // Read the contents of an entity and return it as a String.
-     *      String content = EntityUtils.toString(entity);
+     *             // Read the contents of an entity and return it as a String.
+     *             String content = EntityUtils.toString(entity);
      *
-     *      ObjectMapper mapper = new ObjectMapper();
-     *      authreply reply = mapper.readValue(content, authreply.class);
+     *             ObjectMapper mapper = new ObjectMapper();
+     *             authreply reply = mapper.readValue(content, authreply.class);
      *
-     *      return reply.access_token;
-     *  }
-     *  
+ * return reply.access_token; + * } + * * *

- * Note: The client key must be securely stored. It's advised to - * use two client applications - one for development and other for + * Note: The client key must be securely stored. It's advised to use + * two client applications - one for development and other for * production - managed by separate parties. *

*/ - public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema){ + public AuthenticationResult doAuthenticate(String authorization, String resource, String scope, String schema) { return new AuthenticationResult(doAuthenticate(authorization, resource, scope), ""); } } diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java index beeb526..043b28c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/KeyVaultClientCustomImpl.java @@ -1,5 +1,15 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + * + */ + package com.microsoft.azure.keyvault.implementation; +import java.util.List; +import java.util.Map; + import com.google.common.base.Joiner; import com.microsoft.azure.AzureClient; import com.microsoft.azure.ListOperationCallback; @@ -9,8 +19,51 @@ import com.microsoft.azure.keyvault.KeyIdentifier; import com.microsoft.azure.keyvault.KeyVaultClientCustom; import com.microsoft.azure.keyvault.SecretIdentifier; -import com.microsoft.azure.keyvault.models.*; -import com.microsoft.azure.keyvault.requests.*; +import com.microsoft.azure.keyvault.models.CertificateBundle; +import com.microsoft.azure.keyvault.models.CertificateCreateParameters; +import com.microsoft.azure.keyvault.models.CertificateImportParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerItem; +import com.microsoft.azure.keyvault.models.CertificateIssuerSetParameters; +import com.microsoft.azure.keyvault.models.CertificateIssuerUpdateParameters; +import com.microsoft.azure.keyvault.models.CertificateItem; +import com.microsoft.azure.keyvault.models.CertificateMergeParameters; +import com.microsoft.azure.keyvault.models.CertificateOperation; +import com.microsoft.azure.keyvault.models.CertificateOperationUpdateParameter; +import com.microsoft.azure.keyvault.models.CertificatePolicy; +import com.microsoft.azure.keyvault.models.CertificateUpdateParameters; +import com.microsoft.azure.keyvault.models.Contacts; +import com.microsoft.azure.keyvault.models.DeletedCertificateItem; +import com.microsoft.azure.keyvault.models.IssuerBundle; +import com.microsoft.azure.keyvault.models.JsonWebKeyCurveName; +import com.microsoft.azure.keyvault.models.KeyAttributes; +import com.microsoft.azure.keyvault.models.KeyBundle; +import com.microsoft.azure.keyvault.models.KeyCreateParameters; +import com.microsoft.azure.keyvault.models.KeyImportParameters; +import com.microsoft.azure.keyvault.models.KeyItem; +import com.microsoft.azure.keyvault.models.KeyOperationResult; +import com.microsoft.azure.keyvault.models.KeyOperationsParameters; +import com.microsoft.azure.keyvault.models.KeyRestoreParameters; +import com.microsoft.azure.keyvault.models.KeySignParameters; +import com.microsoft.azure.keyvault.models.KeyUpdateParameters; +import com.microsoft.azure.keyvault.models.KeyVerifyParameters; +import com.microsoft.azure.keyvault.models.KeyVerifyResult; +import com.microsoft.azure.keyvault.models.SecretBundle; +import com.microsoft.azure.keyvault.models.SecretItem; +import com.microsoft.azure.keyvault.models.SecretSetParameters; +import com.microsoft.azure.keyvault.models.SecretUpdateParameters; +import com.microsoft.azure.keyvault.requests.CreateCertificateRequest; +import com.microsoft.azure.keyvault.requests.CreateKeyRequest; +import com.microsoft.azure.keyvault.requests.ImportCertificateRequest; +import com.microsoft.azure.keyvault.requests.ImportKeyRequest; +import com.microsoft.azure.keyvault.requests.MergeCertificateRequest; +import com.microsoft.azure.keyvault.requests.SetCertificateIssuerRequest; +import com.microsoft.azure.keyvault.requests.SetSecretRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateIssuerRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateOperationRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificatePolicyRequest; +import com.microsoft.azure.keyvault.requests.UpdateCertificateRequest; +import com.microsoft.azure.keyvault.requests.UpdateKeyRequest; +import com.microsoft.azure.keyvault.requests.UpdateSecretRequest; import com.microsoft.azure.keyvault.webkey.JsonWebKeyEncryptionAlgorithm; import com.microsoft.azure.keyvault.webkey.JsonWebKeyOperation; import com.microsoft.azure.keyvault.webkey.JsonWebKeySignatureAlgorithm; @@ -21,29 +74,44 @@ import com.microsoft.rest.ServiceResponse; import com.microsoft.rest.credentials.ServiceClientCredentials; import com.microsoft.rest.protocol.SerializerAdapter; + import okhttp3.OkHttpClient; import okhttp3.ResponseBody; import retrofit2.Response; -import retrofit2.http.*; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.HTTP; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.PATCH; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Path; +import retrofit2.http.Query; +import retrofit2.http.Url; import rx.Observable; import rx.functions.Func1; -import java.util.List; -import java.util.Map; - +/** + * Implementation of Key Vault Custom Client to maintain backwards compatibility. + * +*/ public class KeyVaultClientCustomImpl extends KeyVaultClientBaseImpl implements KeyVaultClientCustom { private KeyVaultClientService service; private AzureClient azureClient; - public KeyVaultClientCustomImpl(ServiceClientCredentials credentials) { + protected KeyVaultClientCustomImpl(ServiceClientCredentials credentials) { super(credentials); } - public KeyVaultClientCustomImpl(RestClient restClient) { + protected KeyVaultClientCustomImpl(RestClient restClient) { super(restClient); } + /** + * Intializes the service. + */ public void initializeService() { service = restClient().retrofit().create(KeyVaultClientService.class); } @@ -59,325 +127,499 @@ public SerializerAdapter serializerAdapter() { } /** - * The interface defining all the services for KeyVaultClient to be - * used by Retrofit to perform actually REST calls. + * The interface defining all the services for KeyVaultClient to be used by + * Retrofit to perform actually REST calls. */ interface KeyVaultClientService { - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createKey" }) @POST("keys/{key-name}/create") - Observable> createKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> createKey(@Path("key-name") String keyName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body KeyCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, + @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importKey" }) @PUT("keys/{key-name}") - Observable> importKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> importKey(@Path("key-name") String keyName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body KeyImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, + @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteKey" }) @HTTP(path = "keys/{key-name}", method = "DELETE", hasBody = true) - Observable> deleteKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteKey(@Path("key-name") String keyName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateKey" }) @PATCH("keys/{key-name}/{key-version}") - Observable> updateKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateKey(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyUpdateParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKey" }) @GET("keys/{key-name}/{key-version}") - Observable> getKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getKey(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersions" }) @GET("keys/{key-name}/versions") - Observable> getKeyVersions(@Path("key-name") String keyName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getKeyVersions(@Path("key-name") String keyName, + @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeys" }) @GET("keys") - Observable> getKeys(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getKeys(@Query("maxresults") Integer maxresults, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient backupKey" }) @POST("keys/{key-name}/backup") - Observable> backupKey(@Path("key-name") String keyName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> backupKey(@Path("key-name") String keyName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient restoreKey" }) @POST("keys/restore") - Observable> restoreKey(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> restoreKey(@Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyRestoreParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient encrypt" }) @POST("keys/{key-name}/{key-version}/encrypt") - Observable> encrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> encrypt(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient decrypt" }) @POST("keys/{key-name}/{key-version}/decrypt") - Observable> decrypt(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> decrypt(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient sign" }) @POST("keys/{key-name}/{key-version}/sign") - Observable> sign(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> sign(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeySignParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient verify" }) @POST("keys/{key-name}/{key-version}/verify") - Observable> verify(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> verify(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyVerifyParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient wrapKey" }) @POST("keys/{key-name}/{key-version}/wrapkey") - Observable> wrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> wrapKey(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient unwrapKey" }) @POST("keys/{key-name}/{key-version}/unwrapkey") - Observable> unwrapKey(@Path("key-name") String keyName, @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> unwrapKey(@Path("key-name") String keyName, + @Path("key-version") String keyVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body KeyOperationsParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setSecret" }) @PUT("secrets/{secret-name}") - Observable> setSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> setSecret(@Path("secret-name") String secretName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body SecretSetParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, + @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteSecret" }) @HTTP(path = "secrets/{secret-name}", method = "DELETE", hasBody = true) - Observable> deleteSecret(@Path("secret-name") String secretName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteSecret(@Path("secret-name") String secretName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateSecret" }) @PATCH("secrets/{secret-name}/{secret-version}") - Observable> updateSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateSecret(@Path("secret-name") String secretName, + @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body SecretUpdateParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecret" }) @GET("secrets/{secret-name}/{secret-version}") - Observable> getSecret(@Path("secret-name") String secretName, @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getSecret(@Path("secret-name") String secretName, + @Path("secret-version") String secretVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecrets" }) @GET("secrets") - Observable> getSecrets(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getSecrets(@Query("maxresults") Integer maxresults, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersions" }) @GET("secrets/{secret-name}/versions") - Observable> getSecretVersions(@Path("secret-name") String secretName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getSecretVersions(@Path("secret-name") String secretName, + @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificates" }) @GET("certificates") - Observable> getCertificates(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificates(@Query("maxresults") Integer maxresults, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificate" }) @HTTP(path = "certificates/{certificate-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteCertificate(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateContacts" }) @PUT("certificates/contacts") - Observable> setCertificateContacts(@Body Contacts contacts, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> setCertificateContacts(@Body Contacts contacts, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateContacts" }) @GET("certificates/contacts") - Observable> getCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificateContacts(@Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateContacts" }) @HTTP(path = "certificates/contacts", method = "DELETE", hasBody = true) - Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteCertificateContacts(@Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuers" }) @GET("certificates/issuers") - Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificateIssuers(@Query("maxresults") Integer maxresults, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient setCertificateIssuer" }) @PUT("certificates/issuers/{issuer-name}") - Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerSetParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> setCertificateIssuer(@Path("issuer-name") String issuerName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateIssuerSetParameters parameter, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateIssuer" }) @PATCH("certificates/issuers/{issuer-name}") - Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateIssuerUpdateParameters parameter, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateCertificateIssuer(@Path("issuer-name") String issuerName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateIssuerUpdateParameters parameter, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuer" }) @GET("certificates/issuers/{issuer-name}") - Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificateIssuer(@Path("issuer-name") String issuerName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateIssuer" }) @HTTP(path = "certificates/issuers/{issuer-name}", method = "DELETE", hasBody = true) - Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteCertificateIssuer(@Path("issuer-name") String issuerName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient createCertificate" }) @POST("certificates/{certificate-name}/create") - Observable> createCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateCreateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> createCertificate(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateCreateParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient importCertificate" }) @POST("certificates/{certificate-name}/import") - Observable> importCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateImportParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> importCertificate(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateImportParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersions" }) @GET("certificates/{certificate-name}/versions") - Observable> getCertificateVersions(@Path("certificate-name") String certificateName, @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificateVersions(@Path("certificate-name") String certificateName, + @Query("maxresults") Integer maxresults, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatePolicy" }) @GET("certificates/{certificate-name}/policy") - Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificatePolicy(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificatePolicy" }) @PATCH("certificates/{certificate-name}/policy") - Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateCertificatePolicy(@Path("certificate-name") String certificateName, + @Body CertificatePolicy certificatePolicy, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificate" }) @PATCH("certificates/{certificate-name}/{certificate-version}") - Observable> updateCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateCertificate(@Path("certificate-name") String certificateName, + @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, @Body CertificateUpdateParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificate" }) @GET("certificates/{certificate-name}/{certificate-version}") - Observable> getCertificate(@Path("certificate-name") String certificateName, @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificate(@Path("certificate-name") String certificateName, + @Path("certificate-version") String certificateVersion, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient updateCertificateOperation" }) @PATCH("certificates/{certificate-name}/pending") - Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateOperationUpdateParameter certificateOperation, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> updateCertificateOperation(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateOperationUpdateParameter certificateOperation, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateOperation" }) @GET("certificates/{certificate-name}/pending") - Observable> getCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getCertificateOperation(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient deleteCertificateOperation" }) @HTTP(path = "certificates/{certificate-name}/pending", method = "DELETE", hasBody = true) - Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> deleteCertificateOperation(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient mergeCertificate" }) @POST("certificates/{certificate-name}/pending/merge") - Observable> mergeCertificate(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Body CertificateMergeParameters parameters, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> mergeCertificate(@Path("certificate-name") String certificateName, + @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, + @Body CertificateMergeParameters parameters, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeyVersionsNext" }) @GET - Observable> getKeyVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getKeyVersionsNext(@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.keyvault.KeyVaultClient getKeysNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getKeysNext" }) @GET - Observable> getKeysNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getKeysNext(@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.keyvault.KeyVaultClient getSecretsNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretsNext" }) @GET - Observable> getSecretsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getSecretsNext(@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.keyvault.KeyVaultClient getSecretVersionsNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getSecretVersionsNext" }) @GET - Observable> getSecretVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getSecretVersionsNext(@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.keyvault.KeyVaultClient getCertificatesNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificatesNext" }) @GET - Observable> getCertificatesNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getCertificatesNext(@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.keyvault.KeyVaultClient getCertificateIssuersNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateIssuersNext" }) @GET - Observable> getCertificateIssuersNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getCertificateIssuersNext(@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.keyvault.KeyVaultClient getCertificateVersionsNext"}) + @Headers({ "Content-Type: application/json; charset=utf-8", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getCertificateVersionsNext" }) @GET - Observable> getCertificateVersionsNext(@Url String nextUrl, @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); + Observable> getCertificateVersionsNext(@Url String nextUrl, + @Header("accept-language") String acceptLanguage, @Header("User-Agent") String userAgent); - @Headers({"Content-Type: application/json; charset=utf-8", "Accept: application/pkcs10", "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getPendingCertificateSigningRequest"}) + @Headers({ "Content-Type: application/json; charset=utf-8", "Accept: application/pkcs10", + "x-ms-logging-context: com.microsoft.azure.keyvault.KeyVaultClient getPendingCertificateSigningRequest" }) @GET("certificates/{certificate-name}/pending") - Observable> getPendingCertificateSigningRequest(@Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, @Header("accept-language") String acceptLanguage, @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); + Observable> getPendingCertificateSigningRequest( + @Path("certificate-name") String certificateName, @Query("api-version") String apiVersion, + @Header("accept-language") String acceptLanguage, + @Header("x-ms-parameterized-host") String parameterizedHost, @Header("User-Agent") String userAgent); } /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. Authorization: Requires the keys/create permission. * - * @param createKeyRequest the grouped properties for creating a key request + * @param createKeyRequest + * the grouped properties for creating a key request * @return the KeyBundle if successful. */ public KeyBundle createKey(CreateKeyRequest createKeyRequest) { - return createKey( - createKeyRequest.vaultBaseUrl(), - createKeyRequest.keyName(), - createKeyRequest.keyType(), - createKeyRequest.keySize(), - createKeyRequest.keyOperations(), - createKeyRequest.keyAttributes(), - createKeyRequest.tags(), - createKeyRequest.curve()); + return createKey(createKeyRequest.vaultBaseUrl(), createKeyRequest.keyName(), createKeyRequest.keyType(), + createKeyRequest.keySize(), createKeyRequest.keyOperations(), createKeyRequest.keyAttributes(), + createKeyRequest.tags(), createKeyRequest.curve()); } /** - * Creates a new key, stores it, then returns key parameters and attributes to the client. The create key operation can be used to create any key type in Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: Requires the keys/create permission. + * Creates a new key, stores it, then returns key parameters and attributes to + * the client. The create key operation can be used to create any key type in + * Azure Key Vault. If the named key already exists, Azure Key Vault creates a + * new version of the key. Authorization: Requires the keys/create permission. * - * @param createKeyRequest the grouped properties for creating a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param createKeyRequest + * the grouped properties for creating a key request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, ServiceCallback serviceCallback) { + public ServiceFuture createKeyAsync(CreateKeyRequest createKeyRequest, + ServiceCallback serviceCallback) { createKeyRequest.vaultBaseUrl(); - return createKeyAsync( - createKeyRequest.vaultBaseUrl(), - createKeyRequest.keyName(), - createKeyRequest.keyType(), - createKeyRequest.keySize(), - createKeyRequest.keyOperations(), - createKeyRequest.keyAttributes(), - createKeyRequest.tags(), - createKeyRequest.curve(), - serviceCallback); + return createKeyAsync(createKeyRequest.vaultBaseUrl(), createKeyRequest.keyName(), createKeyRequest.keyType(), + createKeyRequest.keySize(), createKeyRequest.keyOperations(), createKeyRequest.keyAttributes(), + createKeyRequest.tags(), createKeyRequest.curve(), serviceCallback); } /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * Imports an externally created key, stores it, and returns key parameters and + * attributes to the client. The import key operation may be used to import any + * key type into an Azure Key Vault. If the named key already exists, Azure Key + * Vault creates a new version of the key. Authorization: requires the + * keys/import permission. * - * @param importKeyRequest the grouped properties for importing a key request + * @param importKeyRequest + * the grouped properties for importing a key request * @return the KeyBundle if successful. */ public KeyBundle importKey(ImportKeyRequest importKeyRequest) { - return importKey( - importKeyRequest.vaultBaseUrl(), - importKeyRequest.keyName(), - importKeyRequest.key(), - importKeyRequest.isHsm(), - importKeyRequest.keyAttributes(), - importKeyRequest.tags()); + return importKey(importKeyRequest.vaultBaseUrl(), importKeyRequest.keyName(), importKeyRequest.key(), + importKeyRequest.isHsm(), importKeyRequest.keyAttributes(), importKeyRequest.tags()); } /** - * Imports an externally created key, stores it, and returns key parameters and attributes to the client. The import key operation may be used to import any key type into an Azure Key Vault. If the named key already exists, Azure Key Vault creates a new version of the key. Authorization: requires the keys/import permission. + * Imports an externally created key, stores it, and returns key parameters and + * attributes to the client. The import key operation may be used to import any + * key type into an Azure Key Vault. If the named key already exists, Azure Key + * Vault creates a new version of the key. Authorization: requires the + * keys/import permission. * - * @param importKeyRequest the grouped properties for importing a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param importKeyRequest + * the grouped properties for importing a key request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, final ServiceCallback serviceCallback) { - return importKeyAsync( - importKeyRequest.vaultBaseUrl(), - importKeyRequest.keyName(), - importKeyRequest.key(), - importKeyRequest.isHsm(), - importKeyRequest.keyAttributes(), - importKeyRequest.tags(), - serviceCallback); + public ServiceFuture importKeyAsync(ImportKeyRequest importKeyRequest, + final ServiceCallback serviceCallback) { + return importKeyAsync(importKeyRequest.vaultBaseUrl(), importKeyRequest.keyName(), importKeyRequest.key(), + importKeyRequest.isHsm(), importKeyRequest.keyAttributes(), importKeyRequest.tags(), serviceCallback); } - /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * The update key operation changes specified attributes of a stored key and can + * be applied to any key type and key version stored in Azure Key Vault. The + * cryptographic material of a key itself cannot be changed. In order to perform + * this operation, the key must already exist in the Key Vault. Authorization: + * requires the keys/update permission. * - * @param updateKeyRequest the grouped properties for updating a key request + * @param updateKeyRequest + * the grouped properties for updating a key request * @return the KeyBundle if successful. */ public KeyBundle updateKey(UpdateKeyRequest updateKeyRequest) { - return updateKey( - updateKeyRequest.vaultBaseUrl(), - updateKeyRequest.keyName(), - updateKeyRequest.keyVersion(), - updateKeyRequest.keyOperations(), - updateKeyRequest.keyAttributes(), - updateKeyRequest.tags()); + return updateKey(updateKeyRequest.vaultBaseUrl(), updateKeyRequest.keyName(), updateKeyRequest.keyVersion(), + updateKeyRequest.keyOperations(), updateKeyRequest.keyAttributes(), updateKeyRequest.tags()); } /** - * The update key operation changes specified attributes of a stored key and can be applied to any key type and key version stored in Azure Key Vault. The cryptographic material of a key itself cannot be changed. In order to perform this operation, the key must already exist in the Key Vault. Authorization: requires the keys/update permission. + * The update key operation changes specified attributes of a stored key and can + * be applied to any key type and key version stored in Azure Key Vault. The + * cryptographic material of a key itself cannot be changed. In order to perform + * this operation, the key must already exist in the Key Vault. Authorization: + * requires the keys/update permission. * - * @param updateKeyRequest the grouped properties for updating a key request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateKeyRequest + * the grouped properties for updating a key request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, final ServiceCallback serviceCallback) { - return updateKeyAsync( - updateKeyRequest.vaultBaseUrl(), - updateKeyRequest.keyName(), - updateKeyRequest.keyVersion(), - updateKeyRequest.keyOperations(), - updateKeyRequest.keyAttributes(), - updateKeyRequest.tags(), - serviceCallback); + public ServiceFuture updateKeyAsync(UpdateKeyRequest updateKeyRequest, + final ServiceCallback serviceCallback) { + return updateKeyAsync(updateKeyRequest.vaultBaseUrl(), updateKeyRequest.keyName(), + updateKeyRequest.keyVersion(), updateKeyRequest.keyOperations(), updateKeyRequest.keyAttributes(), + updateKeyRequest.tags(), serviceCallback); } /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the public part of a stored key. The get key operation is applicable to + * all key types. If the requested key is symmetric, then no key material is + * released in the response. Authorization: Requires the keys/get permission. * - * @param keyIdentifier The full key identifier + * @param keyIdentifier + * The full key identifier * @return the KeyBundle if successful. */ public KeyBundle getKey(String keyIdentifier) { @@ -386,22 +628,32 @@ public KeyBundle getKey(String keyIdentifier) { } /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the public part of a stored key. The get key operation is applicable to + * all key types. If the requested key is symmetric, then no key material is + * released in the response. Authorization: Requires the keys/get permission. * - * @param keyIdentifier The full key identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getKeyAsync(String keyIdentifier, final ServiceCallback serviceCallback) { + public ServiceFuture getKeyAsync(String keyIdentifier, + final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); return getKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); } /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the public part of a stored key. The get key operation is applicable to + * all key types. If the requested key is symmetric, then no key material is + * released in the response. Authorization: Requires the keys/get permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key * @return the KeyBundle if successful. */ public KeyBundle getKey(String vaultBaseUrl, String keyName) { @@ -409,49 +661,70 @@ public KeyBundle getKey(String vaultBaseUrl, String keyName) { } /** - * Gets the public part of a stored key. The get key operation is applicable to all key types. If the requested key is symmetric, then no key material is released in the response. Authorization: Requires the keys/get permission. + * Gets the public part of a stored key. The get key operation is applicable to + * all key types. If the requested key is symmetric, then no key material is + * released in the response. Authorization: Requires the keys/get permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, final ServiceCallback serviceCallback) { + public ServiceFuture getKeyAsync(String vaultBaseUrl, String keyName, + final ServiceCallback serviceCallback) { return getKeyAsync(vaultBaseUrl, keyName, "", serviceCallback); } /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key * @return the PagedList<KeyItem> if successful. */ public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName) { return getKeyVersions(vaultBaseUrl, keyName); } - /** * Wraps a symmetric key using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be wrapped + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + public ServiceFuture wrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return wrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + return wrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, + serviceCallback); } /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * Unwraps a symmetric key using the specified key in the vault that has + * initially been used for wrapping the key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be unwrapped * @return the KeyOperationResult if successful. */ public KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { @@ -460,25 +733,37 @@ public KeyOperationResult unwrapKey(String keyIdentifier, JsonWebKeyEncryptionAl } /** - * Unwraps a symmetric key using the specified key in the vault that has initially been used for wrapping the key. + * Unwraps a symmetric key using the specified key in the vault that has + * initially been used for wrapping the key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be unwrapped - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be unwrapped + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture unwrapKeyAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + public ServiceFuture unwrapKeyAsync(String keyIdentifier, + JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, + final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return unwrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + return unwrapKeyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, + serviceCallback); } /** * Wraps a symmetric key using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the key to be wrapped + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the key to be wrapped * @return the KeyOperationResult if successful. */ public KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { @@ -487,47 +772,70 @@ public KeyOperationResult wrapKey(String keyIdentifier, JsonWebKeyEncryptionAlgo } /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final ListOperationCallback serviceCallback) { + public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, + final ListOperationCallback serviceCallback) { return getKeyVersionsAsync(vaultBaseUrl, keyName, serviceCallback); } /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listKeyVersionsAsync(final String vaultBaseUrl, final String keyName, + final Integer maxresults, final ListOperationCallback serviceCallback) { return getKeyVersionsAsync(vaultBaseUrl, keyName, maxresults, serviceCallback); } - /** - * Retrieves a list of individual key versions with the same key name. The full key identifier, attributes, and tags are provided in the response. Authorization: Requires the keys/list permission. + * Retrieves a list of individual key versions with the same key name. The full + * key identifier, attributes, and tags are provided in the response. + * Authorization: Requires the keys/list permission. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param keyName The name of the key - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param keyName + * The name of the key + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<KeyItem> if successful. */ - public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, final Integer maxresults) { + public PagedList listKeyVersions(final String vaultBaseUrl, final String keyName, + final Integer maxresults) { return getKeyVersions(vaultBaseUrl, keyName, maxresults); } /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * @return the PagedList<KeyItem> if successful. */ public PagedList listKeys(final String vaultBaseUrl) { @@ -537,32 +845,44 @@ public PagedList listKeys(final String vaultBaseUrl) { /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + public ServiceFuture> listKeysAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback) { return getKeysAsync(vaultBaseUrl, serviceCallback); } /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listKeysAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback) { return getKeysAsync(vaultBaseUrl, maxresults, serviceCallback); } - /** * List keys in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<KeyItem> if successful. */ public PagedList listKeys(final String vaultBaseUrl, final Integer maxresults) { @@ -570,11 +890,15 @@ public PagedList listKeys(final String vaultBaseUrl, final Integer maxr } /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * Encrypts an arbitrary sequence of bytes using an encryption key that is + * stored in a key vault. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be encrypted * @return the KeyOperationResult if successful. */ public KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { @@ -583,25 +907,36 @@ public KeyOperationResult encrypt(String keyIdentifier, JsonWebKeyEncryptionAlgo } /** - * Encrypts an arbitrary sequence of bytes using an encryption key that is stored in a key vault. + * Encrypts an arbitrary sequence of bytes using an encryption key that is + * stored in a key vault. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be encrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be encrypted + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + public ServiceFuture encryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return encryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + return encryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, + serviceCallback); } /** * Decrypts a single block of encrypted data. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be decrypted * @return the KeyOperationResult if successful. */ public KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value) { @@ -612,23 +947,33 @@ public KeyOperationResult decrypt(String keyIdentifier, JsonWebKeyEncryptionAlgo /** * Decrypts a single block of encrypted data. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be decrypted - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be decrypted + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + public ServiceFuture decryptAsync(String keyIdentifier, JsonWebKeyEncryptionAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return decryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + return decryptAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, + serviceCallback); } /** * Creates a signature from a digest using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be signed * @return the KeyOperationResult if successful. */ public KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value) { @@ -639,27 +984,40 @@ public KeyOperationResult sign(String keyIdentifier, JsonWebKeySignatureAlgorith /** * Creates a signature from a digest using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm algorithm identifier - * @param value the content to be signed - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * algorithm identifier + * @param value + * the content to be signed + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] value, final ServiceCallback serviceCallback) { + public ServiceFuture signAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, + byte[] value, final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return signAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, serviceCallback); + return signAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, value, + serviceCallback); } /** * Verifies a signature using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified + * @param keyIdentifier + * The full key identifier + * @param algorithm + * The signing/verification algorithm. For more information on + * possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest + * The digest used for signing + * @param signature + * The signature to be verified * @return the KeyVerifyResult if successful. */ - public KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature) { + public KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, + byte[] signature) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); return verify(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature); } @@ -667,91 +1025,93 @@ public KeyVerifyResult verify(String keyIdentifier, JsonWebKeySignatureAlgorithm /** * Verifies a signature using the specified key. * - * @param keyIdentifier The full key identifier - * @param algorithm The signing/verification algorithm. For more information on possible algorithm types, see JsonWebKeySignatureAlgorithm. - * @param digest The digest used for signing - * @param signature The signature to be verified - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param keyIdentifier + * The full key identifier + * @param algorithm + * The signing/verification algorithm. For more information on + * possible algorithm types, see JsonWebKeySignatureAlgorithm. + * @param digest + * The digest used for signing + * @param signature + * The signature to be verified + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { + public ServiceFuture verifyAsync(String keyIdentifier, JsonWebKeySignatureAlgorithm algorithm, + byte[] digest, byte[] signature, final ServiceCallback serviceCallback) { KeyIdentifier id = new KeyIdentifier(keyIdentifier); - return verifyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, signature, serviceCallback); + return verifyAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), algorithm, digest, + signature, serviceCallback); } - /** * Sets a secret in the specified vault. * - * @param setSecretRequest the grouped properties for setting a secret request + * @param setSecretRequest + * the grouped properties for setting a secret request * @return the SecretBundle if successful. */ public SecretBundle setSecret(SetSecretRequest setSecretRequest) { - return setSecret( - setSecretRequest.vaultBaseUrl(), - setSecretRequest.secretName(), - setSecretRequest.value(), - setSecretRequest.tags(), - setSecretRequest.contentType(), - setSecretRequest.secretAttributes()); + return setSecret(setSecretRequest.vaultBaseUrl(), setSecretRequest.secretName(), setSecretRequest.value(), + setSecretRequest.tags(), setSecretRequest.contentType(), setSecretRequest.secretAttributes()); } /** * Sets a secret in the specified vault. * - * @param setSecretRequest the grouped properties for setting a secret request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param setSecretRequest + * the grouped properties for setting a secret request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, final ServiceCallback serviceCallback) { - return setSecretAsync( - setSecretRequest.vaultBaseUrl(), - setSecretRequest.secretName(), - setSecretRequest.value(), - setSecretRequest.tags(), - setSecretRequest.contentType(), - setSecretRequest.secretAttributes(), + public ServiceFuture setSecretAsync(SetSecretRequest setSecretRequest, + final ServiceCallback serviceCallback) { + return setSecretAsync(setSecretRequest.vaultBaseUrl(), setSecretRequest.secretName(), setSecretRequest.value(), + setSecretRequest.tags(), setSecretRequest.contentType(), setSecretRequest.secretAttributes(), serviceCallback); } /** - * Updates the attributes associated with a specified secret in a given key vault. + * Updates the attributes associated with a specified secret in a given key + * vault. * - * @param updateSecretRequest the grouped properties for updating a secret request + * @param updateSecretRequest + * the grouped properties for updating a secret request * @return the SecretBundle if successful. */ public SecretBundle updateSecret(UpdateSecretRequest updateSecretRequest) { - return updateSecret( - updateSecretRequest.vaultBaseUrl(), - updateSecretRequest.secretName(), - updateSecretRequest.secretVersion(), - updateSecretRequest.contentType(), - updateSecretRequest.secretAttributes(), - updateSecretRequest.tags()); + return updateSecret(updateSecretRequest.vaultBaseUrl(), updateSecretRequest.secretName(), + updateSecretRequest.secretVersion(), updateSecretRequest.contentType(), + updateSecretRequest.secretAttributes(), updateSecretRequest.tags()); } /** - * Updates the attributes associated with a specified secret in a given key vault. + * Updates the attributes associated with a specified secret in a given key + * vault. * - * @param updateSecretRequest the grouped properties for updating a secret request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateSecretRequest + * the grouped properties for updating a secret request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, final ServiceCallback serviceCallback) { - return updateSecretAsync( - updateSecretRequest.vaultBaseUrl(), - updateSecretRequest.secretName(), - updateSecretRequest.secretVersion(), - updateSecretRequest.contentType(), - updateSecretRequest.secretAttributes(), - updateSecretRequest.tags(), - serviceCallback); + public ServiceFuture updateSecretAsync(UpdateSecretRequest updateSecretRequest, + final ServiceCallback serviceCallback) { + return updateSecretAsync(updateSecretRequest.vaultBaseUrl(), updateSecretRequest.secretName(), + updateSecretRequest.secretVersion(), updateSecretRequest.contentType(), + updateSecretRequest.secretAttributes(), updateSecretRequest.tags(), serviceCallback); } /** * Get a specified secret from a given key vault. * - * @param secretIdentifier The URL for the secret. + * @param secretIdentifier + * The URL for the secret. * @return the SecretBundle if successful. */ public SecretBundle getSecret(String secretIdentifier) { @@ -762,11 +1122,15 @@ public SecretBundle getSecret(String secretIdentifier) { /** * Get a specified secret from a given key vault. * - * @param secretIdentifier The URL for the secret. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param secretIdentifier + * The URL for the secret. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getSecretAsync(String secretIdentifier, final ServiceCallback serviceCallback) { + public ServiceFuture getSecretAsync(String secretIdentifier, + final ServiceCallback serviceCallback) { SecretIdentifier id = new SecretIdentifier(secretIdentifier); return getSecretAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); } @@ -774,8 +1138,10 @@ public ServiceFuture getSecretAsync(String secretIdentifier, final /** * Get a specified secret from a given key vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault * @return the SecretBundle if successful. */ public SecretBundle getSecret(String vaultBaseUrl, String secretName) { @@ -785,19 +1151,25 @@ public SecretBundle getSecret(String vaultBaseUrl, String secretName) { /** * Get a specified secret from a given key vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, final ServiceCallback serviceCallback) { + public ServiceFuture getSecretAsync(String vaultBaseUrl, String secretName, + final ServiceCallback serviceCallback) { return getSecretAsync(vaultBaseUrl, secretName, "", serviceCallback); } /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * @return the PagedList<SecretItem> if successful. */ public PagedList listSecrets(final String vaultBaseUrl) { @@ -807,19 +1179,26 @@ public PagedList listSecrets(final String vaultBaseUrl) { /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback) { return getSecretsAsync(vaultBaseUrl, serviceCallback); } /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<SecretItem> if successful. */ public PagedList listSecrets(final String vaultBaseUrl, final Integer maxresults) { @@ -829,20 +1208,28 @@ public PagedList listSecrets(final String vaultBaseUrl, final Intege /** * List secrets in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listSecretsAsync(final String vaultBaseUrl, final Integer maxresults, + final ListOperationCallback serviceCallback) { return getSecretsAsync(vaultBaseUrl, maxresults, serviceCallback); } /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault * @return the PagedList<SecretItem> if successful. */ public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName) { @@ -852,44 +1239,62 @@ public PagedList listSecretVersions(final String vaultBaseUrl, final /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final ListOperationCallback serviceCallback) { + public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, + final ListOperationCallback serviceCallback) { return getSecretVersionsAsync(vaultBaseUrl, secretName, serviceCallback); } /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<SecretItem> if successful. */ - public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, final Integer maxresults) { + public PagedList listSecretVersions(final String vaultBaseUrl, final String secretName, + final Integer maxresults) { return getSecretVersions(vaultBaseUrl, secretName, maxresults); } /** * List the versions of the specified secret. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param secretName The name of the secret in the given vault - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param secretName + * The name of the secret in the given vault + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listSecretVersionsAsync(final String vaultBaseUrl, final String secretName, + final Integer maxresults, final ListOperationCallback serviceCallback) { return getSecretVersionsAsync(vaultBaseUrl, secretName, maxresults, serviceCallback); } /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * @return the PagedList<CertificateItem> if successful. */ public PagedList listCertificates(final String vaultBaseUrl) { @@ -899,19 +1304,26 @@ public PagedList listCertificates(final String vaultBaseUrl) { /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback) { return getCertificatesAsync(vaultBaseUrl, serviceCallback); } /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<CertificateItem> if successful. */ public PagedList listCertificates(final String vaultBaseUrl, final Integer maxresults) { @@ -921,19 +1333,26 @@ public PagedList listCertificates(final String vaultBaseUrl, fi /** * List certificates in the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificatesAsync(final String vaultBaseUrl, + final Integer maxresults, final ListOperationCallback serviceCallback) { return getCertificatesAsync(vaultBaseUrl, maxresults, serviceCallback); } /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net * @return the PagedList<CertificateIssuerItem> if successful. */ public PagedList listCertificateIssuers(final String vaultBaseUrl) { @@ -943,179 +1362,190 @@ public PagedList listCertificateIssuers(final String vaul /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, + final ListOperationCallback serviceCallback) { return getCertificateIssuersAsync(vaultBaseUrl, serviceCallback); } /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<CertificateIssuerItem> if successful. */ - public PagedList listCertificateIssuers(final String vaultBaseUrl, final Integer maxresults) { + public PagedList listCertificateIssuers(final String vaultBaseUrl, + final Integer maxresults) { return getCertificateIssuers(vaultBaseUrl, maxresults); } /** * List certificate issuers for the specified vault. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificateIssuersAsync(final String vaultBaseUrl, + final Integer maxresults, final ListOperationCallback serviceCallback) { return getCertificateIssuersAsync(vaultBaseUrl, maxresults, serviceCallback); } /** * Sets the certificate contacts for the specified vault. * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request + * @param setCertificateIssuerRequest + * the grouped properties for setting a certificate issuer request * @return the IssuerBundle if successful. */ public IssuerBundle setCertificateIssuer(SetCertificateIssuerRequest setCertificateIssuerRequest) { - return setCertificateIssuer( - setCertificateIssuerRequest.vaultBaseUrl(), - setCertificateIssuerRequest.issuerName(), - setCertificateIssuerRequest.provider(), - setCertificateIssuerRequest.credentials(), - setCertificateIssuerRequest.organizationDetails(), + return setCertificateIssuer(setCertificateIssuerRequest.vaultBaseUrl(), + setCertificateIssuerRequest.issuerName(), setCertificateIssuerRequest.provider(), + setCertificateIssuerRequest.credentials(), setCertificateIssuerRequest.organizationDetails(), setCertificateIssuerRequest.attributes()); } /** * Sets the certificate contacts for the specified vault. * - * @param setCertificateIssuerRequest the grouped properties for setting a certificate issuer request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param setCertificateIssuerRequest + * the grouped properties for setting a certificate issuer request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture setCertificateIssuerAsync(SetCertificateIssuerRequest setCertificateIssuerRequest, final ServiceCallback serviceCallback) { - return setCertificateIssuerAsync( - setCertificateIssuerRequest.vaultBaseUrl(), - setCertificateIssuerRequest.issuerName(), - setCertificateIssuerRequest.provider(), - setCertificateIssuerRequest.credentials(), - setCertificateIssuerRequest.organizationDetails(), - setCertificateIssuerRequest.attributes(), - serviceCallback); + public ServiceFuture setCertificateIssuerAsync( + SetCertificateIssuerRequest setCertificateIssuerRequest, + final ServiceCallback serviceCallback) { + return setCertificateIssuerAsync(setCertificateIssuerRequest.vaultBaseUrl(), + setCertificateIssuerRequest.issuerName(), setCertificateIssuerRequest.provider(), + setCertificateIssuerRequest.credentials(), setCertificateIssuerRequest.organizationDetails(), + setCertificateIssuerRequest.attributes(), serviceCallback); } /** * Updates the specified certificate issuer. * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request + * @param updateCertificateIssuerRequest + * the grouped properties for updating a certificate issuer request * @return the IssuerBundle if successful. */ public IssuerBundle updateCertificateIssuer(UpdateCertificateIssuerRequest updateCertificateIssuerRequest) { - return updateCertificateIssuer( - updateCertificateIssuerRequest.vaultBaseUrl(), - updateCertificateIssuerRequest.issuerName(), - updateCertificateIssuerRequest.provider(), - updateCertificateIssuerRequest.credentials(), - updateCertificateIssuerRequest.organizationDetails(), + return updateCertificateIssuer(updateCertificateIssuerRequest.vaultBaseUrl(), + updateCertificateIssuerRequest.issuerName(), updateCertificateIssuerRequest.provider(), + updateCertificateIssuerRequest.credentials(), updateCertificateIssuerRequest.organizationDetails(), updateCertificateIssuerRequest.attributes()); } /** * Updates the specified certificate issuer. * - * @param updateCertificateIssuerRequest the grouped properties for updating a certificate issuer request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateCertificateIssuerRequest + * the grouped properties for updating a certificate issuer request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object - * @throws IllegalArgumentException thrown if callback is null - */ - public ServiceFuture updateCertificateIssuerAsync(UpdateCertificateIssuerRequest updateCertificateIssuerRequest, final ServiceCallback serviceCallback) { - return updateCertificateIssuerAsync( - updateCertificateIssuerRequest.vaultBaseUrl(), - updateCertificateIssuerRequest.issuerName(), - updateCertificateIssuerRequest.provider(), - updateCertificateIssuerRequest.credentials(), - updateCertificateIssuerRequest.organizationDetails(), - updateCertificateIssuerRequest.attributes(), - serviceCallback); + * @throws IllegalArgumentException + * thrown if callback is null + */ + public ServiceFuture updateCertificateIssuerAsync( + UpdateCertificateIssuerRequest updateCertificateIssuerRequest, + final ServiceCallback serviceCallback) { + return updateCertificateIssuerAsync(updateCertificateIssuerRequest.vaultBaseUrl(), + updateCertificateIssuerRequest.issuerName(), updateCertificateIssuerRequest.provider(), + updateCertificateIssuerRequest.credentials(), updateCertificateIssuerRequest.organizationDetails(), + updateCertificateIssuerRequest.attributes(), serviceCallback); } /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. + * Creates a new certificate version. If this is the first version, the + * certificate resource is created. * - * @param createCertificateRequest the grouped properties for creating a certificate request + * @param createCertificateRequest + * the grouped properties for creating a certificate request * @return the CertificateOperation if successful. */ public CertificateOperation createCertificate(CreateCertificateRequest createCertificateRequest) { - return createCertificate( - createCertificateRequest.vaultBaseUrl(), - createCertificateRequest.certificateName(), - createCertificateRequest.certificatePolicy(), - createCertificateRequest.certificateAttributes(), + return createCertificate(createCertificateRequest.vaultBaseUrl(), createCertificateRequest.certificateName(), + createCertificateRequest.certificatePolicy(), createCertificateRequest.certificateAttributes(), createCertificateRequest.tags()); } /** - * Creates a new certificate version. If this is the first version, the certificate resource is created. + * Creates a new certificate version. If this is the first version, the + * certificate resource is created. * - * @param createCertificateRequest the grouped properties for creating a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param createCertificateRequest + * the grouped properties for creating a certificate request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, final ServiceCallback serviceCallback) { - return createCertificateAsync( - createCertificateRequest.vaultBaseUrl(), - createCertificateRequest.certificateName(), - createCertificateRequest.certificatePolicy(), - createCertificateRequest.certificateAttributes(), - createCertificateRequest.tags(), - serviceCallback); + public ServiceFuture createCertificateAsync(CreateCertificateRequest createCertificateRequest, + final ServiceCallback serviceCallback) { + return createCertificateAsync(createCertificateRequest.vaultBaseUrl(), + createCertificateRequest.certificateName(), createCertificateRequest.certificatePolicy(), + createCertificateRequest.certificateAttributes(), createCertificateRequest.tags(), serviceCallback); } /** * Imports a certificate into the specified vault. * - * @param importCertificateRequest the grouped properties for importing a certificate request + * @param importCertificateRequest + * the grouped properties for importing a certificate request * @return the CertificateBundle if successful. */ public CertificateBundle importCertificate(ImportCertificateRequest importCertificateRequest) { - return importCertificate( - importCertificateRequest.vaultBaseUrl(), - importCertificateRequest.certificateName(), - importCertificateRequest.base64EncodedCertificate(), - importCertificateRequest.password(), - importCertificateRequest.certificatePolicy(), - importCertificateRequest.certificateAttributes(), + return importCertificate(importCertificateRequest.vaultBaseUrl(), importCertificateRequest.certificateName(), + importCertificateRequest.base64EncodedCertificate(), importCertificateRequest.password(), + importCertificateRequest.certificatePolicy(), importCertificateRequest.certificateAttributes(), importCertificateRequest.tags()); } /** * Imports a certificate into the specified vault. * - * @param importCertificateRequest the grouped properties for importing a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param importCertificateRequest + * the grouped properties for importing a certificate request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, final ServiceCallback serviceCallback) { - return importCertificateAsync( - importCertificateRequest.vaultBaseUrl(), - importCertificateRequest.certificateName(), - importCertificateRequest.base64EncodedCertificate(), - importCertificateRequest.password(), - importCertificateRequest.certificatePolicy(), - importCertificateRequest.certificateAttributes(), - importCertificateRequest.tags(), - serviceCallback); + public ServiceFuture importCertificateAsync(ImportCertificateRequest importCertificateRequest, + final ServiceCallback serviceCallback) { + return importCertificateAsync(importCertificateRequest.vaultBaseUrl(), + importCertificateRequest.certificateName(), importCertificateRequest.base64EncodedCertificate(), + importCertificateRequest.password(), importCertificateRequest.certificatePolicy(), + importCertificateRequest.certificateAttributes(), importCertificateRequest.tags(), serviceCallback); } /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate * @return the PagedList<CertificateItem> if successful. */ public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName) { @@ -1125,106 +1555,126 @@ public PagedList listCertificateVersions(final String vaultBase /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, + final String certificateName, final ListOperationCallback serviceCallback) { return getCertificateVersionsAsync(vaultBaseUrl, certificateName, serviceCallback); } /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. * @return the PagedList<CertificateItem> if successful. */ - public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, final Integer maxresults) { + public PagedList listCertificateVersions(final String vaultBaseUrl, final String certificateName, + final Integer maxresults) { return getCertificateVersions(vaultBaseUrl, certificateName, maxresults); } /** * List the versions of a certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param maxresults Maximum number of results to return in a page. If not specified the service will return up to 25 results. - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param maxresults + * Maximum number of results to return in a page. If not specified + * the service will return up to 25 results. + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, final String certificateName, final Integer maxresults, final ListOperationCallback serviceCallback) { + public ServiceFuture> listCertificateVersionsAsync(final String vaultBaseUrl, + final String certificateName, final Integer maxresults, + final ListOperationCallback serviceCallback) { return getCertificateVersionsAsync(vaultBaseUrl, certificateName, maxresults, serviceCallback); } /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * Updates the policy for a certificate. Set appropriate members in the + * certificatePolicy that must be updated. Leave others as null. * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request + * @param updateCertificatePolicyRequest + * the grouped properties for updating a certificate policy request * @return the CertificatePolicy if successful. */ public CertificatePolicy updateCertificatePolicy(UpdateCertificatePolicyRequest updateCertificatePolicyRequest) { - return updateCertificatePolicy( - updateCertificatePolicyRequest.vaultBaseUrl(), - updateCertificatePolicyRequest.certificateName(), - updateCertificatePolicyRequest.certificatePolicy()); + return updateCertificatePolicy(updateCertificatePolicyRequest.vaultBaseUrl(), + updateCertificatePolicyRequest.certificateName(), updateCertificatePolicyRequest.certificatePolicy()); } /** - * Updates the policy for a certificate. Set appropriate members in the certificatePolicy that must be updated. Leave others as null. + * Updates the policy for a certificate. Set appropriate members in the + * certificatePolicy that must be updated. Leave others as null. * - * @param updateCertificatePolicyRequest the grouped properties for updating a certificate policy request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateCertificatePolicyRequest + * the grouped properties for updating a certificate policy request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture updateCertificatePolicyAsync(UpdateCertificatePolicyRequest updateCertificatePolicyRequest, final ServiceCallback serviceCallback) { - return updateCertificatePolicyAsync( - updateCertificatePolicyRequest.vaultBaseUrl(), - updateCertificatePolicyRequest.certificateName(), - updateCertificatePolicyRequest.certificatePolicy(), + public ServiceFuture updateCertificatePolicyAsync( + UpdateCertificatePolicyRequest updateCertificatePolicyRequest, + final ServiceCallback serviceCallback) { + return updateCertificatePolicyAsync(updateCertificatePolicyRequest.vaultBaseUrl(), + updateCertificatePolicyRequest.certificateName(), updateCertificatePolicyRequest.certificatePolicy(), serviceCallback); } /** * Updates the attributes associated with the specified certificate. * - * @param updateCertificateRequest the grouped properties for updating a certificate request + * @param updateCertificateRequest + * the grouped properties for updating a certificate request * @return the CertificateBundle if successful. */ public CertificateBundle updateCertificate(UpdateCertificateRequest updateCertificateRequest) { - return updateCertificate( - updateCertificateRequest.vaultBaseUrl(), - updateCertificateRequest.certificateName(), - updateCertificateRequest.certificateVersion(), - updateCertificateRequest.certificatePolicy(), - updateCertificateRequest.certificateAttributes(), - updateCertificateRequest.tags()); + return updateCertificate(updateCertificateRequest.vaultBaseUrl(), updateCertificateRequest.certificateName(), + updateCertificateRequest.certificateVersion(), updateCertificateRequest.certificatePolicy(), + updateCertificateRequest.certificateAttributes(), updateCertificateRequest.tags()); } /** * Updates the attributes associated with the specified certificate. * - * @param updateCertificateRequest the grouped properties for updating a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateCertificateRequest + * the grouped properties for updating a certificate request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, final ServiceCallback serviceCallback) { - return updateCertificateAsync( - updateCertificateRequest.vaultBaseUrl(), - updateCertificateRequest.certificateName(), - updateCertificateRequest.certificateVersion(), - updateCertificateRequest.certificatePolicy(), - updateCertificateRequest.certificateAttributes(), - updateCertificateRequest.tags(), - serviceCallback); + public ServiceFuture updateCertificateAsync(UpdateCertificateRequest updateCertificateRequest, + final ServiceCallback serviceCallback) { + return updateCertificateAsync(updateCertificateRequest.vaultBaseUrl(), + updateCertificateRequest.certificateName(), updateCertificateRequest.certificateVersion(), + updateCertificateRequest.certificatePolicy(), updateCertificateRequest.certificateAttributes(), + updateCertificateRequest.tags(), serviceCallback); } /** * Gets information about a specified certificate. * - * @param certificateIdentifier The certificate identifier + * @param certificateIdentifier + * The certificate identifier * @return the CertificateBundle if successful. */ public CertificateBundle getCertificate(String certificateIdentifier) { @@ -1235,11 +1685,15 @@ public CertificateBundle getCertificate(String certificateIdentifier) { /** * Gets information about a specified certificate. * - * @param certificateIdentifier The certificate identifier - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param certificateIdentifier + * The certificate identifier + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getCertificateAsync(String certificateIdentifier, final ServiceCallback serviceCallback) { + public ServiceFuture getCertificateAsync(String certificateIdentifier, + final ServiceCallback serviceCallback) { CertificateIdentifier id = new CertificateIdentifier(certificateIdentifier); return getCertificateAsync(id.vault(), id.name(), id.version() == null ? "" : id.version(), serviceCallback); } @@ -1247,8 +1701,10 @@ public ServiceFuture getCertificateAsync(String certificateId /** * Gets information about a specified certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate in the given vault * @return the CertificateBundle if successful. */ public CertificateBundle getCertificate(String vaultBaseUrl, String certificateName) { @@ -1258,24 +1714,31 @@ public CertificateBundle getCertificate(String vaultBaseUrl, String certificateN /** * Gets information about a specified certificate. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate in the given vault - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate in the given vault + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { + public ServiceFuture getCertificateAsync(String vaultBaseUrl, String certificateName, + final ServiceCallback serviceCallback) { return getCertificateAsync(vaultBaseUrl, certificateName, "", serviceCallback); } /** * Updates a certificate operation. * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request + * @param updateCertificateOperationRequest + * the grouped properties for updating a certificate operation + * request * @return the CertificateOperation if successful. */ - public CertificateOperation updateCertificateOperation(UpdateCertificateOperationRequest updateCertificateOperationRequest) { - return updateCertificateOperation( - updateCertificateOperationRequest.vaultBaseUrl(), + public CertificateOperation updateCertificateOperation( + UpdateCertificateOperationRequest updateCertificateOperationRequest) { + return updateCertificateOperation(updateCertificateOperationRequest.vaultBaseUrl(), updateCertificateOperationRequest.certificateName(), updateCertificateOperationRequest.cancellationRequested()); } @@ -1283,81 +1746,98 @@ public CertificateOperation updateCertificateOperation(UpdateCertificateOperatio /** * Updates a certificate operation. * - * @param updateCertificateOperationRequest the grouped properties for updating a certificate operation request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param updateCertificateOperationRequest + * the grouped properties for updating a certificate operation + * request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture updateCertificateOperationAsync(UpdateCertificateOperationRequest updateCertificateOperationRequest, final ServiceCallback serviceCallback) { - return updateCertificateOperationAsync( - updateCertificateOperationRequest.vaultBaseUrl(), + public ServiceFuture updateCertificateOperationAsync( + UpdateCertificateOperationRequest updateCertificateOperationRequest, + final ServiceCallback serviceCallback) { + return updateCertificateOperationAsync(updateCertificateOperationRequest.vaultBaseUrl(), updateCertificateOperationRequest.certificateName(), - updateCertificateOperationRequest.cancellationRequested(), - serviceCallback); + updateCertificateOperationRequest.cancellationRequested(), serviceCallback); } /** - * Merges a certificate or a certificate chain with a key pair existing on the server. + * Merges a certificate or a certificate chain with a key pair existing on the + * server. * - * @param mergeCertificateRequest the grouped properties for merging a certificate request + * @param mergeCertificateRequest + * the grouped properties for merging a certificate request * @return the CertificateBundle if successful. */ public CertificateBundle mergeCertificate(MergeCertificateRequest mergeCertificateRequest) { - return mergeCertificate( - mergeCertificateRequest.vaultBaseUrl(), - mergeCertificateRequest.certificateName(), - mergeCertificateRequest.x509Certificates(), - mergeCertificateRequest.certificateAttributes(), + return mergeCertificate(mergeCertificateRequest.vaultBaseUrl(), mergeCertificateRequest.certificateName(), + mergeCertificateRequest.x509Certificates(), mergeCertificateRequest.certificateAttributes(), mergeCertificateRequest.tags()); } /** - * Merges a certificate or a certificate chain with a key pair existing on the server. + * Merges a certificate or a certificate chain with a key pair existing on the + * server. * - * @param mergeCertificateRequest the grouped properties for merging a certificate request - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param mergeCertificateRequest + * the grouped properties for merging a certificate request + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, final ServiceCallback serviceCallback) { - return mergeCertificateAsync( - mergeCertificateRequest.vaultBaseUrl(), - mergeCertificateRequest.certificateName(), - mergeCertificateRequest.x509Certificates(), - mergeCertificateRequest.certificateAttributes(), - mergeCertificateRequest.tags(), - serviceCallback); + public ServiceFuture mergeCertificateAsync(MergeCertificateRequest mergeCertificateRequest, + final ServiceCallback serviceCallback) { + return mergeCertificateAsync(mergeCertificateRequest.vaultBaseUrl(), mergeCertificateRequest.certificateName(), + mergeCertificateRequest.x509Certificates(), mergeCertificateRequest.certificateAttributes(), + mergeCertificateRequest.tags(), serviceCallback); } /** * Gets the pending certificate signing request response. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate * @return the String if successful. */ public String getPendingCertificateSigningRequest(String vaultBaseUrl, String certificateName) { - return getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking().single().body(); + return getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName).toBlocking() + .single().body(); } /** * Gets the pending certificate signing request response. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate - * @param serviceCallback the async ServiceCallback to handle successful and failed responses. + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate + * @param serviceCallback + * the async ServiceCallback to handle successful and failed + * responses. * @return the {@link ServiceFuture} object */ - public ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, final ServiceCallback serviceCallback) { - return ServiceFuture.fromResponse(getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName), serviceCallback); + public ServiceFuture getPendingCertificateSigningRequestAsync(String vaultBaseUrl, String certificateName, + final ServiceCallback serviceCallback) { + return ServiceFuture.fromResponse( + getPendingCertificateSigningRequestWithServiceResponseAsync(vaultBaseUrl, certificateName), + serviceCallback); } /** * Gets the pending certificate signing request response. * - * @param vaultBaseUrl The vault name, e.g. https://myvault.vault.azure.net - * @param certificateName The name of the certificate + * @param vaultBaseUrl + * The vault name, e.g. https://myvault.vault.azure.net + * @param certificateName + * The name of the certificate * @return the observable to the String object */ - private Observable> getPendingCertificateSigningRequestWithServiceResponseAsync(String vaultBaseUrl, String certificateName) { + private Observable> getPendingCertificateSigningRequestWithServiceResponseAsync( + String vaultBaseUrl, String certificateName) { if (vaultBaseUrl == null) { throw new IllegalArgumentException("Parameter vaultBaseUrl is required and cannot be null."); } @@ -1368,12 +1848,15 @@ private Observable> getPendingCertificateSigningRequestW throw new IllegalArgumentException("Parameter this.apiVersion() is required and cannot be null."); } String parameterizedHost = Joiner.on(", ").join("{vaultBaseUrl}", vaultBaseUrl); - return service.getPendingCertificateSigningRequest(certificateName, this.apiVersion(), this.acceptLanguage(), parameterizedHost, this.userAgent()) + return service + .getPendingCertificateSigningRequest(certificateName, this.apiVersion(), this.acceptLanguage(), + parameterizedHost, this.userAgent()) .flatMap(new Func1, Observable>>() { @Override public Observable> call(Response response) { try { - ServiceResponse clientResponse = new ServiceResponse(response.body().string(), response); + ServiceResponse clientResponse = new ServiceResponse( + response.body().string(), response); return Observable.just(clientResponse); } catch (Throwable t) { return Observable.error(t); @@ -1382,76 +1865,77 @@ public Observable> call(Response response) }); } - @Override - public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, - List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKey(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); - } - - @Override - public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, - Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, - ServiceCallback serviceCallback) { - return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null, serviceCallback); - } - - @Override - public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, - Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { - return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, (JsonWebKeyCurveName) null); - } - - @Override - public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, - JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, - Map tags) { - return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); - } - - @Override - public PagedList getCertificates(String vaultBaseUrl, Integer maxresults) { - return getCertificates(vaultBaseUrl, maxresults, false); - } - - @Override - public ServiceFuture> getCertificatesAsync(String vaultBaseUrl, Integer maxresults, - ListOperationCallback serviceCallback) { - return getCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); - } - - @Override - public Observable> getCertificatesAsync(String vaultBaseUrl, Integer maxresults) { - return getCertificatesAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public Observable>> getCertificatesWithServiceResponseAsync( - String vaultBaseUrl, Integer maxresults) { - return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public PagedList getDeletedCertificates(String vaultBaseUrl, Integer maxresults) { - return getDeletedCertificates(vaultBaseUrl, maxresults, false); - } - - @Override - public ServiceFuture> getDeletedCertificatesAsync(String vaultBaseUrl, - Integer maxresults, ListOperationCallback serviceCallback) { - return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); - } - - @Override - public Observable> getDeletedCertificatesAsync(String vaultBaseUrl, - Integer maxresults) { - return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false); - } - - @Override - public Observable>> getDeletedCertificatesWithServiceResponseAsync( - String vaultBaseUrl, Integer maxresults) { - return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); - } + @Override + public KeyBundle createKey(String vaultBaseUrl, String keyName, JsonWebKeyType kty, Integer keySize, + List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKey(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null); + } + @Override + public ServiceFuture createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, + Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags, + ServiceCallback serviceCallback) { + return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, null, serviceCallback); + } + + @Override + public Observable createKeyAsync(String vaultBaseUrl, String keyName, JsonWebKeyType kty, + Integer keySize, List keyOps, KeyAttributes keyAttributes, Map tags) { + return createKeyAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, + (JsonWebKeyCurveName) null); + } + + @Override + public Observable> createKeyWithServiceResponseAsync(String vaultBaseUrl, String keyName, + JsonWebKeyType kty, Integer keySize, List keyOps, KeyAttributes keyAttributes, + Map tags) { + return createKeyWithServiceResponseAsync(vaultBaseUrl, keyName, kty, keySize, keyOps, keyAttributes, tags, + null); + } + + @Override + public PagedList getCertificates(String vaultBaseUrl, Integer maxresults) { + return getCertificates(vaultBaseUrl, maxresults, false); + } + + @Override + public ServiceFuture> getCertificatesAsync(String vaultBaseUrl, Integer maxresults, + ListOperationCallback serviceCallback) { + return getCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); + } + + @Override + public Observable> getCertificatesAsync(String vaultBaseUrl, Integer maxresults) { + return getCertificatesAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public Observable>> getCertificatesWithServiceResponseAsync( + String vaultBaseUrl, Integer maxresults) { + return getCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public PagedList getDeletedCertificates(String vaultBaseUrl, Integer maxresults) { + return getDeletedCertificates(vaultBaseUrl, maxresults, false); + } + + @Override + public ServiceFuture> getDeletedCertificatesAsync(String vaultBaseUrl, + Integer maxresults, ListOperationCallback serviceCallback) { + return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false, serviceCallback); + } + + @Override + public Observable> getDeletedCertificatesAsync(String vaultBaseUrl, + Integer maxresults) { + return getDeletedCertificatesAsync(vaultBaseUrl, maxresults, false); + } + + @Override + public Observable>> getDeletedCertificatesWithServiceResponseAsync( + String vaultBaseUrl, Integer maxresults) { + return getDeletedCertificatesWithServiceResponseAsync(vaultBaseUrl, maxresults, false); + } } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/package-info.java new file mode 100644 index 0000000..9ddd63a --- /dev/null +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/implementation/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for +// license information. + +/** + * This package contains the classes for KeyVaultClient. Performs cryptographic + * key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.implementation; \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java index 0e669f8..ae55d1e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/HttpMessageSecurity.java @@ -4,33 +4,33 @@ * license information. */ - package com.microsoft.azure.keyvault.messagesecurity; +package com.microsoft.azure.keyvault.messagesecurity; -import com.microsoft.azure.keyvault.cryptography.*; +import java.io.IOException; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.util.UUID; +import java.util.concurrent.ExecutionException; + +import org.apache.commons.lang3.tuple.Pair; +import org.apache.commons.lang3.tuple.Triple; +import com.microsoft.azure.keyvault.cryptography.RsaKey; +import com.microsoft.azure.keyvault.cryptography.SymmetricKey; import com.microsoft.azure.keyvault.webkey.JsonWebKey; + +import okhttp3.MediaType; import okhttp3.Request; import okhttp3.RequestBody; -import okhttp3.MediaType; import okhttp3.Response; import okhttp3.ResponseBody; - -import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.lang3.tuple.Triple; - -import java.io.IOException; -import java.security.MessageDigest; -import java.security.SecureRandom; -import java.security.NoSuchAlgorithmException; -import java.util.UUID; -import java.util.concurrent.ExecutionException; import okhttp3.internal.http.HttpHeaders; - import okio.Buffer; /** - * Implements message security protocol. - * Encrypts requests & decrypts responses. + * Implements message security protocol. Encrypts requests & decrypts + * responses. */ public class HttpMessageSecurity { private static final String AUTHENTICATE = "Authorization"; @@ -44,55 +44,69 @@ public class HttpMessageSecurity { private JsonWebKey serverEncryptionKey; /** - * Constructor + * Constructor. * - * @param _clientSecurityToken - * pop or bearer authentication token. - * @param _clientSignatureKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _serverEncryptionKeyString - * string with server encryption key (public only) or null if not supported - * @param _serverSignatureKeyString - * string with server signing key (public only) or null if not supported + * @param clientSecurityToken + * pop or bearer authentication token. + * @param clientSignatureKeyString + * string with client signing key (public + private parts) or null if + * not supported + * @param serverEncryptionKeyString + * string with server encryption key (public only) or null if not + * supported + * @param serverSignatureKeyString + * string with server signing key (public only) or null if not + * supported + * @throws IOException + * throws IOException */ - public HttpMessageSecurity(String _clientSecurityToken, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString) throws IOException{ + public HttpMessageSecurity(String clientSecurityToken, String clientSignatureKeyString, + String serverEncryptionKeyString, String serverSignatureKeyString) throws IOException { - this.clientSecurityToken = _clientSecurityToken; + this.clientSecurityToken = clientSecurityToken; - if (_clientSignatureKeyString != null && !_clientSignatureKeyString.equals("")){ - this.clientSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_clientSignatureKeyString); + if (clientSignatureKeyString != null && !clientSignatureKeyString.equals("")) { + this.clientSignatureKey = MessageSecurityHelper.jsonWebKeyFromString(clientSignatureKeyString); } - if (_serverSignatureKeyString != null && !_serverSignatureKeyString.equals("")){ - this.serverSignatureKey = MessageSecurityHelper.JsonWebKeyFromString(_serverSignatureKeyString); + if (serverSignatureKeyString != null && !serverSignatureKeyString.equals("")) { + this.serverSignatureKey = MessageSecurityHelper.jsonWebKeyFromString(serverSignatureKeyString); } - if (_serverEncryptionKeyString != null && !_serverEncryptionKeyString.equals("")){ - this.serverEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_serverEncryptionKeyString); + if (serverEncryptionKeyString != null && !serverEncryptionKeyString.equals("")) { + this.serverEncryptionKey = MessageSecurityHelper.jsonWebKeyFromString(serverEncryptionKeyString); } - this.clientEncryptionKey = MessageSecurityHelper.GenerateJsonWebKey(); + this.clientEncryptionKey = MessageSecurityHelper.generateJsonWebKey(); } /** - * Constructor (tests only) + * Constructor (tests only). * - * @param _clientSecurityToken - * pop or bearer authentication token. - * @param _clientEncryptionKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _clientSignatureKeyString - * string with client signing key (public + private parts) or null if not supported - * @param _serverEncryptionKeyString - * string with server encryption key (public only) or null if not supported - * @param _serverSignatureKeyString - * string with server signing key (public only) or null if not supported + * @param clientSecurityToken + * pop or bearer authentication token. + * @param clientEncryptionString + * string with client signing key (public + private parts) or null if + * not supported + * @param clientSignatureKeyString + * string with client signing key (public + private parts) or null if + * not supported + * @param serverEncryptionKeyString + * string with server encryption key (public only) or null if not + * supported + * @param serverSignatureKeyString + * string with server signing key (public only) or null if not + * supported * @param testMode - * true for test mode (uses 0 for timestamp) + * true for test mode (uses 0 for timestamp) + * @throws IOException + * throws IOException */ - public HttpMessageSecurity(String _clientSecurityToken, String _clientEncryptionKeyString, String _clientSignatureKeyString, String _serverEncryptionKeyString, String _serverSignatureKeyString, boolean testMode) throws IOException{ - this(_clientSecurityToken, _clientSignatureKeyString, _serverEncryptionKeyString, _serverSignatureKeyString); + public HttpMessageSecurity(String clientSecurityToken, String clientEncryptionString, + String clientSignatureKeyString, String serverEncryptionKeyString, String serverSignatureKeyString, + boolean testMode) throws IOException { + this(clientSecurityToken, clientSignatureKeyString, serverEncryptionKeyString, serverSignatureKeyString); this.testMode = testMode; - if (_clientEncryptionKeyString != null && !_clientEncryptionKeyString.equals("")){ - this.clientEncryptionKey = MessageSecurityHelper.JsonWebKeyFromString(_clientEncryptionKeyString); + if (clientEncryptionString != null && !clientEncryptionString.equals("")) { + this.clientEncryptionKey = MessageSecurityHelper.jsonWebKeyFromString(clientEncryptionString); } } @@ -100,16 +114,18 @@ public HttpMessageSecurity(String _clientSecurityToken, String _clientEncryption * Protects existing request. Replaces its body with encrypted version. * * @param request - * existing request. + * existing request. * - * @return - * new request with encrypted body if supported or existing request. + * @return new request with encrypted body if supported or existing request. + * + * @throws IOException throws IOException */ public Request protectRequest(Request request) throws IOException { - try{ - Request result = request.newBuilder().header(AUTHENTICATE, BEARER_TOKEP_REFIX + clientSecurityToken).build(); + try { + Request result = request.newBuilder().header(AUTHENTICATE, BEARER_TOKEP_REFIX + clientSecurityToken) + .build(); - if(!supportsProtection()) { + if (!supportsProtection()) { return result; } @@ -117,22 +133,19 @@ public Request protectRequest(Request request) throws IOException { request.body().writeTo(buffer); String currentbody = buffer.readUtf8(); - if (currentbody == null || currentbody.length() == 0){ + if (currentbody == null || currentbody.length() == 0) { return result; } - JsonWebKey clientPublicEncryptionKey = MessageSecurityHelper.GetJwkWithPublicKeyOnly(clientEncryptionKey); + JsonWebKey clientPublicEncryptionKey = MessageSecurityHelper.getJwkWithPublicKeyOnly(clientEncryptionKey); - String payload = currentbody.substring(0, currentbody.length() - 1) + ",\"rek\":{\"jwk\":" + clientPublicEncryptionKey.toString() + "}}"; + String payload = currentbody.substring(0, currentbody.length() - 1) + ",\"rek\":{\"jwk\":" + + clientPublicEncryptionKey.toString() + "}}"; JWEObject jweObject = protectPayload(payload); - JWSHeader jwsHeader = new JWSHeader("RS256", - clientSignatureKey.kid(), - clientSecurityToken, - getCurrentTimestamp(), - "PoP", - null); + JWSHeader jwsHeader = new JWSHeader("RS256", clientSignatureKey.kid(), clientSecurityToken, + getCurrentTimestamp(), "PoP", null); String jwsHeaderJsonb64 = MessageSecurityHelper.stringToBase64Url(jwsHeader.serialize()); String protectedPayload = MessageSecurityHelper.stringToBase64Url(jweObject.serialize()); @@ -141,20 +154,19 @@ public Request protectRequest(Request request) throws IOException { RsaKey clientSignatureRsaKey = new RsaKey(clientSignatureKey.kid(), clientSignatureKey.toRSA(true)); Pair signature = clientSignatureRsaKey.signAsync(getSha256(data), "RS256").get(); - JWSObject jwsObject = new JWSObject(jwsHeader, - protectedPayload, + JWSObject jwsObject = new JWSObject(jwsHeader, protectedPayload, MessageSecurityHelper.bytesToBase64Url(signature.getKey())); RequestBody body = RequestBody.create(MediaType.parse("application/jose+json"), jwsObject.serialize()); return result.newBuilder().method(request.method(), body).build(); - } catch (ExecutionException e){ + } catch (ExecutionException e) { // unexpected; return null; - } catch (InterruptedException e){ + } catch (InterruptedException e) { // unexpected; return null; - } catch (NoSuchAlgorithmException e){ + } catch (NoSuchAlgorithmException e) { // unexpected; return null; } @@ -164,34 +176,35 @@ public Request protectRequest(Request request) throws IOException { * Unprotects response if needed. Replaces its body with unencrypted version. * * @param response - * server response. + * server response. * - * @return - * new response with unencrypted body if supported or existing response. + * @return new response with unencrypted body if supported or existing response. + * + * @throws IOException throws IOException */ - public Response unprotectResponse(Response response) throws IOException{ - try{ - if (!supportsProtection() || !HttpHeaders.hasBody(response)){ + public Response unprotectResponse(Response response) throws IOException { + try { + if (!supportsProtection() || !HttpHeaders.hasBody(response)) { return response; } - if (!response.header("content-type").toLowerCase().contains("application/jose+json")){ + if (!response.header("content-type").toLowerCase().contains("application/jose+json")) { return response; } JWSObject jwsObject = JWSObject.deserialize(response.body().string()); JWSHeader jwsHeader = jwsObject.jwsHeader(); - if(!jwsHeader.kid().equals(serverSignatureKey.kid()) || !jwsHeader.alg().equals("RS256")){ + if (!jwsHeader.kid().equals(serverSignatureKey.kid()) || !jwsHeader.alg().equals("RS256")) { throw new IOException("Invalid protected response"); } - byte[] data = (jwsObject.original_protected() + "." + jwsObject.payload()).getBytes(); + byte[] data = (jwsObject.originalProtected() + "." + jwsObject.payload()).getBytes(); byte[] signature = MessageSecurityHelper.base64UrltoByteArray(jwsObject.signature()); RsaKey serverSignatureRsaKey = new RsaKey(serverSignatureKey.kid(), serverSignatureKey.toRSA(false)); boolean signed = serverSignatureRsaKey.verifyAsync(getSha256(data), signature, "RS256").get(); - if (!signed){ + if (!signed) { throw new IOException("Wrong signature."); } @@ -200,13 +213,13 @@ public Response unprotectResponse(Response response) throws IOException{ MediaType contentType = response.body().contentType(); ResponseBody body = ResponseBody.create(contentType, decrypted); return response.newBuilder().body(body).build(); - } catch (ExecutionException e){ + } catch (ExecutionException e) { // unexpected; return null; - } catch (InterruptedException e){ + } catch (InterruptedException e) { // unexpected; return null; - } catch (NoSuchAlgorithmException e){ + } catch (NoSuchAlgorithmException e) { // unexpected; return null; } @@ -215,11 +228,10 @@ public Response unprotectResponse(Response response) throws IOException{ /** * Return current timestamp. Returns always 0 for tests. * - * @return - * current timestamp or 0 for test mode. + * @return current timestamp or 0 for test mode. */ - private long getCurrentTimestamp(){ - if (testMode){ + private long getCurrentTimestamp() { + if (testMode) { return 0; } else { return System.currentTimeMillis() / 1000; @@ -229,27 +241,24 @@ private long getCurrentTimestamp(){ /** * Check if HttmMessageSecurity has all required keys. * - * @return - * true if there is client signature key and two server keys. + * @return true if there is client signature key and two server keys. */ - private boolean supportsProtection(){ - return this.clientSignatureKey != null && - this.serverSignatureKey != null && - this.serverEncryptionKey != null; + private boolean supportsProtection() { + return this.clientSignatureKey != null && this.serverSignatureKey != null && this.serverEncryptionKey != null; } - /** * Encrypt provided payload and return proper JWEObject. * * @param payload - * string to be encrypted. + * string to be encrypted. * - * @return - * JWEObject with encrypted payload. + * @return JWEObject with encrypted payload. + * + * @throws IOException throws IOException */ - private JWEObject protectPayload(String payload) throws IOException{ - try{ + private JWEObject protectPayload(String payload) throws IOException { + try { JWEHeader jweHeader = new JWEHeader("RSA-OAEP", serverEncryptionKey.kid(), "A128CBC-HS256"); byte[] aesKeyBytes = generateAesKey(); @@ -259,28 +268,28 @@ private JWEObject protectPayload(String payload) throws IOException{ byte[] iv = generateAesIv(); RsaKey serverEncryptionRsaKey = new RsaKey(serverEncryptionKey.kid(), serverEncryptionKey.toRSA(false)); - Triple encrypted_key = serverEncryptionRsaKey.encryptAsync(aesKeyBytes, null, null, "RSA-OAEP").get(); + Triple encryptedKey = serverEncryptionRsaKey + .encryptAsync(aesKeyBytes, null, null, "RSA-OAEP").get(); - Triple cipher = aesKey.encryptAsync( - payload.getBytes(), - iv, - MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()).getBytes(), - "A128CBC-HS256").get(); + Triple cipher = aesKey + .encryptAsync(payload.getBytes(), iv, + MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()).getBytes(), "A128CBC-HS256") + .get(); JWEObject jweObject = new JWEObject(jweHeader, - MessageSecurityHelper.bytesToBase64Url((!testMode) ? encrypted_key.getLeft() : "key".getBytes()), + MessageSecurityHelper.bytesToBase64Url((!testMode) ? encryptedKey.getLeft() : "key".getBytes()), MessageSecurityHelper.bytesToBase64Url(iv), MessageSecurityHelper.bytesToBase64Url(cipher.getLeft()), MessageSecurityHelper.bytesToBase64Url(cipher.getMiddle())); return jweObject; - } catch (ExecutionException e){ + } catch (ExecutionException e) { // unexpected; return null; - } catch (InterruptedException e){ + } catch (InterruptedException e) { // unexpected; return null; - } catch (NoSuchAlgorithmException e){ + } catch (NoSuchAlgorithmException e) { // unexpected; return null; } @@ -290,19 +299,17 @@ private JWEObject protectPayload(String payload) throws IOException{ * Unencrypt encrypted payload. * * @param payload - * base64url serialized JWEObject. + * base64url serialized JWEObject. * - * @return - * Unencrypted message. + * @return Unencrypted message. */ private String unprotectPayload(String payload) throws IOException { try { JWEObject jweObject = JWEObject.deserialize(MessageSecurityHelper.base64UrltoString(payload)); JWEHeader jweHeader = jweObject.jweHeader(); - if (!clientEncryptionKey.kid().equals(jweHeader.kid()) || - !jweHeader.alg().equals("RSA-OAEP") || - !jweHeader.enc().equals("A128CBC-HS256")) { + if (!clientEncryptionKey.kid().equals(jweHeader.kid()) || !jweHeader.alg().equals("RSA-OAEP") + || !jweHeader.enc().equals("A128CBC-HS256")) { throw new IOException("Invalid protected response"); } @@ -314,18 +321,17 @@ private String unprotectPayload(String payload) throws IOException { SymmetricKey aesKey = new SymmetricKey(UUID.randomUUID().toString(), aesKeyBytes); byte[] result = aesKey.decryptAsync(MessageSecurityHelper.base64UrltoByteArray(jweObject.cipherText()), MessageSecurityHelper.base64UrltoByteArray(jweObject.iv()), - jweObject.original_protected().getBytes(), - MessageSecurityHelper.base64UrltoByteArray(jweObject.tag()), - "A128CBC-HS256").get(); + jweObject.originalProtected().getBytes(), + MessageSecurityHelper.base64UrltoByteArray(jweObject.tag()), "A128CBC-HS256").get(); return new String(result); - } catch (ExecutionException e){ + } catch (ExecutionException e) { // unexpected; return null; - } catch (InterruptedException e){ + } catch (InterruptedException e) { // unexpected; return null; - } catch (NoSuchAlgorithmException e){ + } catch (NoSuchAlgorithmException e) { // unexpected; return null; } @@ -335,12 +341,11 @@ private String unprotectPayload(String payload) throws IOException { * Get SHA256 hash for byte array. * * @param data - * byte array. + * byte array. * - * @return - * byte array with sha256 hash. + * @return byte array with sha256 hash. */ - private byte[] getSha256(byte[] data) throws NoSuchAlgorithmException{ + private byte[] getSha256(byte[] data) throws NoSuchAlgorithmException { MessageDigest digest = MessageDigest.getInstance("SHA-256"); return digest.digest(data); } @@ -348,12 +353,11 @@ private byte[] getSha256(byte[] data) throws NoSuchAlgorithmException{ /** * Generates AES key. * - * @return - * Random AES key or pre-defined value for test mode. + * @return Random AES key or pre-defined value for test mode. */ - private byte[] generateAesKey(){ + private byte[] generateAesKey() { byte[] bytes = new byte[32]; - if (!testMode){ + if (!testMode) { SecureRandom random = new SecureRandom(); random.nextBytes(bytes); } else { @@ -365,12 +369,11 @@ private byte[] generateAesKey(){ /** * Generates initialization vector for AES encryption. * - * @return - * Random IV or pre-defined value for test mode. + * @return Random IV or pre-defined value for test mode. */ - private byte[] generateAesIv(){ + private byte[] generateAesIv() { byte[] bytes = new byte[16]; - if (!testMode){ + if (!testMode) { SecureRandom random = new SecureRandom(); random.nextBytes(bytes); } else { diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java index 962664b..c687b1d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEHeader.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.util.Objects; /** * Json Web Encryption Header class. @@ -24,7 +25,7 @@ class JWEHeader { /** * Constructor. */ - public JWEHeader(){ + JWEHeader() { } @@ -32,13 +33,13 @@ public JWEHeader(){ * Constructor. * * @param alg - * Encryption algorithm (for key). (Supported: RSA-OAEP) + * Encryption algorithm (for key). (Supported: RSA-OAEP) * @param kid - * Key Id + * Key Id * @param enc - * Encryption algorithm (for data). (Supported: A128CBC-HS256) + * Encryption algorithm (for data). (Supported: A128CBC-HS256) */ - public JWEHeader(String alg, String kid, String enc){ + JWEHeader(String alg, String kid, String enc) { this.alg = alg; this.kid = kid; this.enc = enc; @@ -47,20 +48,25 @@ public JWEHeader(String alg, String kid, String enc){ /** * Compare two JWEHeaders. * - * @return - * true if JWEHeaders are identical. + * @return true if JWEHeaders are identical. */ - public boolean equals(JWEHeader other){ - return this.alg.equals(other.alg) && - this.kid.equals(other.kid) && - this.enc.equals(other.enc); + public boolean equals(JWEHeader other) { + return this.alg.equals(other.alg) && this.kid.equals(other.kid) && this.enc.equals(other.enc); + } + + /** + * Hash code for objects. + * + * @return hashcode + */ + public int hashCode() { + return Objects.hash(this.alg, this.kid, this.enc); } /** * Serialize JWEHeader to json string. * - * @return - * Json string with serialized JWEHeader. + * @return Json string with serialized JWEHeader. */ public String serialize() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); @@ -71,26 +77,24 @@ public String serialize() throws JsonProcessingException { * Construct JWEHeader from json string. * * @param json - * json string. + * json string. * - * @return - * Constructed JWEHeader + * @return Constructed JWEHeader */ - public static JWEHeader deserialize(String json) throws IOException{ + public static JWEHeader deserialize(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWEHeader.class); + return mapper.readValue(json, JWEHeader.class); } /** * Construct JWEHeader from base64url string. * * @param base64 - * base64 url string. + * base64 url string. * - * @return - * Constructed JWEHeader + * @return Constructed JWEHeader */ - public static JWEHeader fromBase64String(String base64) throws IOException{ + public static JWEHeader fromBase64String(String base64) throws IOException { String json = MessageSecurityHelper.base64UrltoString(base64); return deserialize(json); } @@ -104,7 +108,7 @@ public String alg() { } /** - * Key Id + * Key Id. */ @JsonProperty("kid") public String kid() { @@ -112,7 +116,7 @@ public String kid() { } /** - * Encryption algorithm (for data). (Supported: A128CBC-HS256) + * Encryption algorithm (for data). (Supported: A128CBC-HS256) */ @JsonProperty("enc") public String enc() { diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java index 085d670..4a4ebde 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWEObject.java @@ -12,13 +12,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.util.Objects; /** * Json Web Encryption object class. */ class JWEObject { private JWEHeader jweHeader; - private String original_protected; + private String originalProtected; private String encryptedKey; private String iv; private String cipherText; @@ -28,17 +29,17 @@ class JWEObject { * Constructor. * * @param jweHeader - * Corresponding jweHeader object. + * Corresponding jweHeader object. * @param encryptedKey - * base64url encrypted key. + * base64url encrypted key. * @param iv - * base64url iv. + * base64url iv. * @param cipherText - * base64url encrypted data. + * base64url encrypted data. * @param tag - * base64url authorization tag. + * base64url authorization tag. */ - public JWEObject(JWEHeader jweHeader, String encryptedKey, String iv, String cipherText, String tag){ + JWEObject(JWEHeader jweHeader, String encryptedKey, String iv, String cipherText, String tag) { this.jweHeader = jweHeader; this.encryptedKey = encryptedKey; this.iv = iv; @@ -50,24 +51,22 @@ public JWEObject(JWEHeader jweHeader, String encryptedKey, String iv, String cip * Constructor. * * @param jweHeaderB64 - * base64url json with serialized jweHeader. + * base64url json with serialized jweHeader. * @param encryptedKey - * base64url encrypted key. + * base64url encrypted key. * @param iv - * base64url iv. + * base64url iv. * @param cipherText - * base64url encrypted data. + * base64url encrypted data. * @param tag - * base64url authorization tag. + * base64url authorization tag. */ @JsonCreator - public JWEObject(@JsonProperty("protected") String jweHeaderB64, - @JsonProperty("encrypted_key") String encryptedKey, - @JsonProperty("iv") String iv, - @JsonProperty("ciphertext") String cipherText, - @JsonProperty("tag") String tag) throws Exception{ + JWEObject(@JsonProperty("protected") String jweHeaderB64, @JsonProperty("encrypted_key") String encryptedKey, + @JsonProperty("iv") String iv, @JsonProperty("ciphertext") String cipherText, + @JsonProperty("tag") String tag) throws Exception { this.jweHeader = JWEHeader.fromBase64String(jweHeaderB64); - this.original_protected = jweHeaderB64; + this.originalProtected = jweHeaderB64; this.encryptedKey = encryptedKey; this.iv = iv; this.cipherText = cipherText; @@ -77,22 +76,26 @@ public JWEObject(@JsonProperty("protected") String jweHeaderB64, /** * Compare two JweObject. * - * @return - * true if JWEObject are identical. + * @return true if JWEObject are identical. */ - public boolean equals(JWEObject other){ - return jweHeader.equals(other.jweHeader) && - encryptedKey.equals(other.encryptedKey) && - iv.equals(other.iv) && - cipherText.equals(other.cipherText) && - tag.equals(other.tag); + public boolean equals(JWEObject other) { + return jweHeader.equals(other.jweHeader) && encryptedKey.equals(other.encryptedKey) && iv.equals(other.iv) + && cipherText.equals(other.cipherText) && tag.equals(other.tag); + } + + /** + * Hash code for objects. + * + * @return hashcode + */ + public int hashCode() { + return Objects.hash(this.jweHeader, this.encryptedKey, this.iv, this.cipherText, this.tag); } /** * Serialize JWEObject to json string. * - * @return - * Json string with serialized JWEObject. + * @return Json string with serialized JWEObject. */ public String serialize() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); @@ -103,20 +106,19 @@ public String serialize() throws JsonProcessingException { * Construct JWEObject from json string. * * @param json - * json string. + * json string. * - * @return - * Constructed JWEObject + * @return Constructed JWEObject */ public static JWEObject deserialize(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWEObject.class); + return mapper.readValue(json, JWEObject.class); } /** * JWEHeader object. */ - public JWEHeader jweHeader(){ + public JWEHeader jweHeader() { return jweHeader; } @@ -124,15 +126,16 @@ public JWEHeader jweHeader(){ * base64url json with serialized jweHeader. */ @JsonProperty("protected") - public String protectedB64() throws Exception{ + public String protectedB64() throws Exception { return MessageSecurityHelper.stringToBase64Url(jweHeader.serialize()); } /** - * Original base64url with serialized jweHeader (when constructed from json string). + * Original base64url with serialized jweHeader (when constructed from json + * string). */ - public String original_protected(){ - return original_protected; + public String originalProtected() { + return originalProtected; } /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java index 9dd29a5..59595cd 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSHeader.java @@ -11,6 +11,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.util.Objects; /** * Json Web Signature header class. @@ -26,26 +27,27 @@ class JWSHeader { /** * Constructor. - */ - public JWSHeader(){} + */ + JWSHeader() { + } /** * Constructor. * * @param alg - * signing algorithm (RS256). + * signing algorithm (RS256). * @param kid - * signing key id. + * signing key id. * @param at - * authorization token. + * authorization token. * @param ts - * timestamp. + * timestamp. * @param typ - * authorization type (PoP). + * authorization type (PoP). * @param p - * p + * p */ - public JWSHeader(String alg, String kid, String at, long ts, String typ, String p){ + JWSHeader(String alg, String kid, String at, long ts, String typ, String p) { this.alg = alg; this.kid = kid; this.at = at; @@ -57,23 +59,26 @@ public JWSHeader(String alg, String kid, String at, long ts, String typ, String /** * Compare two JwsHeader. * - * @return - * true if JWSHeaders are identical. + * @return true if JWSHeaders are identical. */ - public boolean equals(JWSHeader other){ - return this.alg.equals(other.alg) && - this.kid.equals(other.kid) && - this.at.equals(other.at) && - this.ts == other.ts && - this.p.equals(other.p) && - this.typ.equals(other.typ); + public boolean equals(JWSHeader other) { + return this.alg.equals(other.alg) && this.kid.equals(other.kid) && this.at.equals(other.at) + && this.ts == other.ts && this.p.equals(other.p) && this.typ.equals(other.typ); } + /** + * Hash code for objects. + * + * @return hashcode + */ + public int hashCode() { + return Objects.hash(this.alg, this.kid, this.at, this.ts, this.p, this.typ); + } + /** * Serialize JWSHeader to json string. * - * @return - * Json string with serialized JWSHeader. + * @return Json string with serialized JWSHeader. */ public String serialize() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); @@ -84,29 +89,27 @@ public String serialize() throws JsonProcessingException { * Construct JWSHeader from json string. * * @param json - * json string. + * json string. * - * @return - * Constructed JWSHeader + * @return Constructed JWSHeader */ - public static JWSHeader deserialize(String json) throws IOException{ + public static JWSHeader deserialize(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSHeader.class); + return mapper.readValue(json, JWSHeader.class); } /** * Construct JWSHeader from base64url string. * * @param base64 - * base64 url string. + * base64 url string. * - * @return - * Constructed JWSHeader + * @return Constructed JWSHeader */ public static JWSHeader fromBase64String(String base64) throws IOException { String json = MessageSecurityHelper.base64UrltoString(base64); ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSHeader.class); + return mapper.readValue(json, JWSHeader.class); } /** @@ -150,7 +153,7 @@ public String typ() { } /** - * p + * p . */ @JsonProperty("p") public String p() { diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java index a175170..871f5b6 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/JWSObject.java @@ -12,13 +12,14 @@ import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; +import java.util.Objects; /** * Json Web Signature object class. */ class JWSObject { private JWSHeader jwsHeader; - private String original_protected; + private String originalProtected; private String payload; private String signature; @@ -26,13 +27,13 @@ class JWSObject { * Constructor. * * @param JWSHeader - * JWSHeader. + * JWSHeader. * @param payload - * base64url protected payload (JWEObject). + * base64url protected payload (JWEObject). * @param signature - * base64url signature for (protected + "." + payload) data. + * base64url signature for (protected + "." + payload) data. */ - public JWSObject(JWSHeader jwsHeader, String payload, String signature){ + JWSObject(JWSHeader jwsHeader, String payload, String signature) { this.jwsHeader = jwsHeader; this.payload = payload; this.signature = signature; @@ -42,19 +43,17 @@ public JWSObject(JWSHeader jwsHeader, String payload, String signature){ * Constructor. * * @param jwsHeaderB64 - * base64 json string with JWSHeader. + * base64 json string with JWSHeader. * @param payload - * base64url protected payload (JWEObject). + * base64url protected payload (JWEObject). * @param signature - * base64url signature for (protected + "." + payload) data. + * base64url signature for (protected + "." + payload) data. */ @JsonCreator - public JWSObject( - @JsonProperty("protected") String jwsHeaderB64, - @JsonProperty("payload") String payload, - @JsonProperty("signature") String signature) throws Exception{ + JWSObject(@JsonProperty("protected") String jwsHeaderB64, @JsonProperty("payload") String payload, + @JsonProperty("signature") String signature) throws Exception { this.jwsHeader = JWSHeader.fromBase64String(jwsHeaderB64); - this.original_protected = jwsHeaderB64; + this.originalProtected = jwsHeaderB64; this.payload = payload; this.signature = signature; } @@ -62,20 +61,26 @@ public JWSObject( /** * Compare two JWSObject. * - * @return - * true if JWSObjects are identical. + * @return true if JWSObjects are identical. */ - public boolean equals(JWSObject other){ - return this.payload.equals(other.payload) && - this.jwsHeader.equals(other.jwsHeader) && - this.signature.equals(other.signature); + public boolean equals(JWSObject other) { + return this.payload.equals(other.payload) && this.jwsHeader.equals(other.jwsHeader) + && this.signature.equals(other.signature); + } + + /** + * Hash code for objects. + * + * @return hashcode + */ + public int hashCode() { + return Objects.hash(this.payload, this.jwsHeader, this.signature); } /** * Serialize JWSObject to json string. * - * @return - * Json string with serialized JWSObject. + * @return Json string with serialized JWSObject. */ public String serialize() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); @@ -86,28 +91,28 @@ public String serialize() throws JsonProcessingException { * Construct JWSObject from json string. * * @param json - * json string. + * json string. * - * @return - * Constructed JWSObject + * @return Constructed JWSObject */ public static JWSObject deserialize(String json) throws IOException { ObjectMapper mapper = new ObjectMapper(); - return mapper.readValue(json,JWSObject.class); + return mapper.readValue(json, JWSObject.class); } /** * Retrieve JWSHeader object. */ - public JWSHeader jwsHeader(){ + public JWSHeader jwsHeader() { return jwsHeader; } /** - * Original base64url with serialized jwsHeader (when constructed from json string). + * Original base64url with serialized jwsHeader (when constructed from json + * string). */ - public String original_protected(){ - return original_protected; + public String originalProtected() { + return originalProtected; } /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java index c3675ca..7ded268 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/MessageSecurityHelper.java @@ -30,25 +30,23 @@ class MessageSecurityHelper { * Convert base64Url string to bytes array. * * @param base64url - * Base64Url string. + * Base64Url string. * - * @returns - * Decoded bytes array. + * @returns Decoded bytes array. */ - public static byte[] base64UrltoByteArray(String base64url){ + public static byte[] base64UrltoByteArray(String base64url) { return Base64.decodeBase64(base64url.replace('-', '+').replace('_', '/')); } - + /** * Convert base64Url string to String. * * @param base64url - * Base64Url string. + * Base64Url string. * - * @returns - * Decoded string. + * @returns Decoded string. */ - public static String base64UrltoString(String base64url){ + public static String base64UrltoString(String base64url) { return new String(base64UrltoByteArray(base64url)); } @@ -56,63 +54,55 @@ public static String base64UrltoString(String base64url){ * Convert bytes array to Base64Url string. * * @param bytes - * bytes array. + * bytes array. * - * @returns - * Encoded string. + * @returns Encoded string. */ - public static String bytesToBase64Url(byte[] bytes){ - String result = (new String(Base64.encodeBase64(bytes))) - .replace("=", "") - .replace("\\", "") - .replace('+', '-') - .replace('/', '_'); - return result; + public static String bytesToBase64Url(byte[] bytes) { + String result = (new String(Base64.encodeBase64(bytes))).replace("=", "").replace("\\", "").replace('+', '-') + .replace('/', '_'); + return result; } /** * Convert bytes array to Base64Url string. * * @param str - * string. + * string. * - * @returns - * Encoded string. + * @returns Encoded string. */ - public static String stringToBase64Url(String str){ + public static String stringToBase64Url(String str) { return bytesToBase64Url(str.getBytes()); - } + } /** * Convert serialized JsonWebKey string to JsonWebKey object. * * @param jwkString - * serialized JsonWebKey. + * serialized JsonWebKey. * - * @returns - * JsonWebKey object. + * @returns JsonWebKey object. */ - public static JsonWebKey JsonWebKeyFromString(String jwkString) throws IOException{ + public static JsonWebKey jsonWebKeyFromString(String jwkString) throws IOException { ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(jwkString, JsonWebKey.class); - } + } /** * Generates new JsonWebKey with random KeyID. * - * @returns - * JsonWebKey object. + * @returns JsonWebKey object. */ - public static JsonWebKey GenerateJsonWebKey(){ - try{ + public static JsonWebKey generateJsonWebKey() { + try { final KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA"); generator.initialize(2048); - KeyPair clientRsaKeyPair = generator.generateKeyPair(); + KeyPair clientRsaKeyPair = generator.generateKeyPair(); JsonWebKey result = JsonWebKey.fromRSA(clientRsaKeyPair); result.withKid(UUID.randomUUID().toString()); return result; - } - catch (NoSuchAlgorithmException e){ + } catch (NoSuchAlgorithmException e) { // Unexpected. Should never be thrown. return null; } @@ -122,15 +112,15 @@ public static JsonWebKey GenerateJsonWebKey(){ * Converts JsonWebKey with private key to JsonWebKey with public key only. * * @param jwk - * JsonWebKey with private key. - * @returns - * JsonWebKey object with public key only. + * JsonWebKey with private key. + * @returns JsonWebKey object with public key only. */ - public static JsonWebKey GetJwkWithPublicKeyOnly(JsonWebKey jwk){ + public static JsonWebKey getJwkWithPublicKeyOnly(JsonWebKey jwk) { KeyPair publicOnly = jwk.toRSA(false); JsonWebKey jsonkeyPublic = JsonWebKey.fromRSA(publicOnly); jsonkeyPublic.withKid(jwk.kid()); - jsonkeyPublic.withKeyOps(Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY)); + jsonkeyPublic.withKeyOps( + Arrays.asList(JsonWebKeyOperation.ENCRYPT, JsonWebKeyOperation.WRAP_KEY, JsonWebKeyOperation.VERIFY)); return jsonkeyPublic; } diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/package-info.java new file mode 100644 index 0000000..c487c40 --- /dev/null +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/messagesecurity/package-info.java @@ -0,0 +1,9 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for +// license information. + +/** + * This package contains the classes for KeyVaultClient. Performs cryptographic + * key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.messagesecurity; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateBundle.java index fe70143..85b6eee 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateBundle.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.models.custom; import com.fasterxml.jackson.annotation.JsonProperty; @@ -10,6 +16,9 @@ import java.io.IOException; +/** + * A certificate bundle consists of a certificate (X509) plus its attributes. + */ public class CertificateBundle { /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateOperation.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateOperation.java index fd4089b..b04553b 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateOperation.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/CertificateOperation.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.models.custom; import com.fasterxml.jackson.annotation.JsonProperty; @@ -8,6 +14,9 @@ import java.io.IOException; +/** + * A certificate operation is returned in case of asynchronous requests. + */ public class CertificateOperation { /** * The certificate id. diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/IssuerBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/IssuerBundle.java index bc065c0..09d0bdd 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/IssuerBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/IssuerBundle.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.models.custom; import com.fasterxml.jackson.annotation.JsonProperty; @@ -8,6 +14,9 @@ import java.io.IOException; +/** + * The issuer for Key Vault certificate. + */ public class IssuerBundle { /** * Identifier for the issuer object. diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/KeyBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/KeyBundle.java index a115095..2990cb8 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/KeyBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/KeyBundle.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.models.custom; import com.fasterxml.jackson.annotation.JsonProperty; @@ -9,6 +15,9 @@ import java.io.IOException; +/** + * A KeyBundle consisting of a WebKey plus its attributes. + */ public class KeyBundle { /** @@ -38,6 +47,7 @@ public KeyIdentifier keyIdentifier() { return new KeyIdentifier(key().kid()); } + @Override public String toString() { ObjectMapper mapper = new ObjectMapper(); try { diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/SecretBundle.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/SecretBundle.java index 4f1696b..643ae12 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/SecretBundle.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/SecretBundle.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.models.custom; import com.fasterxml.jackson.annotation.JsonProperty; @@ -8,6 +14,9 @@ import java.io.IOException; +/** + * A secret consisting of a value, id and its attributes. + */ public class SecretBundle { diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/package-info.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/package-info.java new file mode 100644 index 0000000..0ae4922 --- /dev/null +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/models/custom/package-info.java @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT License. See License.txt in the project root for +// license information. +// + +/** + * This package contains the classes for KeyVaultClient. Performs cryptographic + * key operations and vault operations against the Key Vault service. + */ +package com.microsoft.azure.keyvault.models.custom; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java index 4331163..5340938 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateCertificateRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java index 452d446..ce15d4c 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/CreateKeyRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; @@ -50,9 +56,9 @@ public static class Builder { * @param keyName * The name of the key in the given vault * @param keyType - * The type of key to create. Valid key types, see JsonWebKeyType. - * Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, Octet. - * Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' + * The type of key to create. Valid key types, see JsonWebKeyType. + * Supported JsonWebKey key types (kty) for Elliptic Curve, RSA, HSM, + * Octet. Possible values include: 'EC', 'RSA', 'RSA-HSM', 'oct' */ public Builder(String vaultBaseUrl, String keyName, JsonWebKeyType keyType) { this.vaultBaseUrl = vaultBaseUrl; @@ -100,8 +106,7 @@ public Builder withAttributes(Attributes attributes) { * Set the tags value. * * @param tags - * Application-specific metadata in the form of key-value - * pairs. + * Application-specific metadata in the form of key-value pairs. * @return the Builder object itself. */ public Builder withTags(Map tags) { @@ -112,7 +117,8 @@ public Builder withTags(Map tags) { /** * Set the curve value. * - * @param curve Defines values for JsonWebKeyCurveName; + * @param curve + * Defines values for JsonWebKeyCurveName; * * @return the Builder object itself. */ @@ -152,8 +158,7 @@ private CreateKeyRequest(Builder builder) { if (builder.tags != null) { tags = Collections.unmodifiableMap(builder.tags); - } - else { + } else { tags = null; } @@ -216,5 +221,7 @@ public Map tags() { /** * @return the curve */ - public JsonWebKeyCurveName curve() {return curve; } + public JsonWebKeyCurveName curve() { + return curve; + } } \ No newline at end of file diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java index b139986..a39eac1 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportCertificateRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java index 323eb8a..c8fd594 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/ImportKeyRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java index 16b3b1c..8b97e06 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/MergeCertificateRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java index 4622e59..ba6a779 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetCertificateIssuerRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java index dc37e71..79caf1d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/SetSecretRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.Collections; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java index 6ce9ad2..6ec959a 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateIssuerRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java index 86cec5f..b1e736d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateOperationRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; /** diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java index 571ed26..0888898 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificatePolicyRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java index 7d86cd1..236c31d 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateCertificateRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java index ab7dec4..429ee4e 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateKeyRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.ArrayList; diff --git a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java index f59c101..547c3d6 100644 --- a/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java +++ b/azure-keyvault/src/main/java/com/microsoft/azure/keyvault/requests/UpdateSecretRequest.java @@ -1,3 +1,9 @@ +/** + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for + * license information. + */ + package com.microsoft.azure.keyvault.requests; import java.util.Collections; From 275502c658ff3966ec6d831fb2fe95623d8ee6a1 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Thu, 28 Jun 2018 13:07:30 -0700 Subject: [PATCH 5/7] Created history.md Release history --- history.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 history.md diff --git a/history.md b/history.md new file mode 100644 index 0000000..451e453 --- /dev/null +++ b/history.md @@ -0,0 +1,17 @@ +# Release History + +## 1.1 +* Moving azure-keyvault to stable API version 7.0 +* Renaming curve SECP256K1 and algorithm ECDSA256 to P-256K and ES256K respectively + +### 1.1-beta-1 +* Added elliptic curve key support +* Added message encryption support for message encryption enabled vaults + +### 1.1-alpha-1 +* Adding managed storage account key backup, restore and soft-delete support +* Added certificate backup and restore support +* Added managed storage account SasDefintion creation + +## 1.0.0 +* Initial release From 1a93917c5c0d4134b13180aa7a6d9cb680edc4e5 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Thu, 28 Jun 2018 15:03:02 -0700 Subject: [PATCH 6/7] Updated Readme --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e321375..95768d8 100644 --- a/README.md +++ b/README.md @@ -15,27 +15,27 @@ To get the binaries of this library as distributed by Microsoft, ready for use w com.microsoft.azure azure-keyvault - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-cryptography - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-extensions - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-core - 1.1-beta-1 + 1.1 com.microsoft.azure azure-keyvault-webkey - 1.1-beta-1 + 1.1 ``` From d5068ebcfea8bb9571c5b6a72d7cd17666f1e865 Mon Sep 17 00:00:00 2001 From: tiffanyachen Date: Thu, 28 Jun 2018 16:06:38 -0700 Subject: [PATCH 7/7] Moved scopes for some dependencies to test only --- azure-keyvault-extensions/pom.xml | 8 +++++++- azure-keyvault/pom.xml | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/azure-keyvault-extensions/pom.xml b/azure-keyvault-extensions/pom.xml index 5f56dc3..03610bf 100644 --- a/azure-keyvault-extensions/pom.xml +++ b/azure-keyvault-extensions/pom.xml @@ -85,7 +85,13 @@ azure-keyvault-webkey 1.1
- + + com.microsoft.azure + azure + 1.3.0 + test + + com.microsoft.azure azure-mgmt-resources 1.3.1-SNAPSHOT diff --git a/azure-keyvault/pom.xml b/azure-keyvault/pom.xml index 33a4e0e..ee2adb5 100644 --- a/azure-keyvault/pom.xml +++ b/azure-keyvault/pom.xml @@ -62,6 +62,7 @@ the MIT License. See License.txt in the project root for license information. -- com.microsoft.azure azure 1.3.0 + test com.microsoft.azure @@ -80,6 +81,13 @@ the MIT License. See License.txt in the project root for license information. -- system ${basedir}/../azure-keyvault-cryptography/target/azure-keyvault-cryptography-1.1.jar + + com.microsoft.azure + azure-keyvault-core + 1.1 + system + ${basedir}/../azure-keyvault-core/target/azure-keyvault-core-1.1.jar + com.microsoft.azure azure-keyvault-webkey