blob: 5ae39ba74295006e4f0eb0409cdb886fe4f2c3b2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
package org.jclouds.azurecompute.arm.features;
import java.net.URI;
import java.util.List;
import java.util.Map;
import javax.inject.Named;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.core.MediaType;
import com.google.common.base.Function;
import org.jclouds.Fallbacks.EmptyListOnNotFoundOr404;
import org.jclouds.Fallbacks.FalseOnNotFoundOr404;
import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.azurecompute.arm.config.OAuthResource;
import org.jclouds.azurecompute.arm.domain.Certificate;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateAttributes;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateBundle;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateIssuer;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificateOperation;
import org.jclouds.azurecompute.arm.domain.Certificate.CertificatePolicy;
import org.jclouds.azurecompute.arm.domain.Certificate.Contact;
import org.jclouds.azurecompute.arm.domain.Certificate.Contacts;
import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificate;
import org.jclouds.azurecompute.arm.domain.Certificate.DeletedCertificateBundle;
import org.jclouds.azurecompute.arm.domain.Certificate.IssuerAttributes;
import org.jclouds.azurecompute.arm.domain.Certificate.IssuerBundle;
import org.jclouds.azurecompute.arm.domain.Certificate.IssuerCredentials;
import org.jclouds.azurecompute.arm.domain.Certificate.IssuerParameters;
import org.jclouds.azurecompute.arm.domain.Certificate.KeyProperties;
import org.jclouds.azurecompute.arm.domain.Certificate.LifetimeAction;
import org.jclouds.azurecompute.arm.domain.Certificate.OrganizationDetails;
import org.jclouds.azurecompute.arm.domain.Certificate.SecretProperties;
import org.jclouds.azurecompute.arm.domain.Certificate.X509CertificateProperties;
import org.jclouds.azurecompute.arm.domain.Key;
import org.jclouds.azurecompute.arm.domain.Key.DeletedKeyBundle;
import org.jclouds.azurecompute.arm.domain.Key.JsonWebKey;
import org.jclouds.azurecompute.arm.domain.Key.KeyAttributes;
import org.jclouds.azurecompute.arm.domain.Key.KeyBundle;
import org.jclouds.azurecompute.arm.domain.Key.KeyOperationResult;
import org.jclouds.azurecompute.arm.domain.Secret;
import org.jclouds.azurecompute.arm.domain.Secret.DeletedSecretBundle;
import org.jclouds.azurecompute.arm.domain.Secret.SecretAttributes;
import org.jclouds.azurecompute.arm.domain.Secret.SecretBundle;
import org.jclouds.azurecompute.arm.domain.Vault;
import org.jclouds.azurecompute.arm.domain.Vault.DeletedVault;
import org.jclouds.azurecompute.arm.domain.VaultProperties;
import org.jclouds.azurecompute.arm.filters.ApiVersionFilter;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.oauth.v2.filters.OAuthFilter;
import org.jclouds.rest.annotations.EndpointParam;
import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.MapBinder;
import org.jclouds.rest.annotations.PATCH;
import org.jclouds.rest.annotations.PayloadParam;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;
import org.jclouds.rest.binders.BindToJsonPayload;
import org.jclouds.rest.annotations.ParamParser;
@RequestFilters({ OAuthFilter.class, ApiVersionFilter.class })
@Consumes(MediaType.APPLICATION_JSON)
public interface VaultApi {
static class PrependSlashOrEmptyString implements Function<Object, String> {
public String apply(Object from) {
if ((from == null) || (from.toString().length() == 0)) {
return "";
} else {
return "/" + from.toString();
}
}
}
// Vault operations
@Named("vault:list")
@SelectJson("value")
@GET
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults")
@Fallback(EmptyListOnNotFoundOr404.class)
List<Vault> listVaults();
@Named("vault:create_or_update")
@PUT
@MapBinder(BindToJsonPayload.class)
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}")
Vault createOrUpdateVault(@PathParam("vaultName") String vaultName, @PayloadParam("location") String location,
@PayloadParam("properties") VaultProperties properties, @Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("vault:get")
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}")
@GET
@Fallback(NullOnNotFoundOr404.class)
Vault getVault(@PathParam("vaultName") String vaultName);
@Named("vault:delete")
@Path("/resourcegroups/{resourcegroup}/providers/Microsoft.KeyVault/vaults/{vaultName}")
@DELETE
@Fallback(FalseOnNotFoundOr404.class)
boolean deleteVault(@PathParam("vaultName") String vaultName);
@Named("vault:list_deleted_vaults")
@Path("/providers/Microsoft.KeyVault/deletedVaults")
@GET
@SelectJson("value")
@Fallback(EmptyListOnNotFoundOr404.class)
List<DeletedVault> listDeletedVaults();
@Named("vault:get_deleted")
@GET
@Path("/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}")
@Fallback(NullOnNotFoundOr404.class)
DeletedVault getDeletedVault(@PathParam("location") String location, @PathParam("vaultName") String vaultName);
@Named("vault:purge")
@POST
@Fallback(FalseOnNotFoundOr404.class)
@Path("/providers/Microsoft.KeyVault/locations/{location}/deletedVaults/{vaultName}/purge")
boolean purgeVault(@PathParam("location") String location, @PathParam("vaultName") String vaultName);
// Key operations
@Named("key:list")
@SelectJson("value")
@GET
@Fallback(EmptyListOnNotFoundOr404.class)
@Path("/keys")
@OAuthResource("https://vault.azure.net")
List<Key> listKeys(@EndpointParam URI keyVaultUri);
@Named("key:create")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/keys/{keyName}/create")
@OAuthResource("https://vault.azure.net")
KeyBundle createKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName,
@Nullable @PayloadParam("attributes") KeyAttributes attributes,
@Nullable @PayloadParam("crv") String curveName, @Nullable @PayloadParam("key_ops") List<String> keyOps,
@PayloadParam("key_size") int keySize, @PayloadParam("kty") String keyType,
@Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("key:import")
@PUT
@MapBinder(BindToJsonPayload.class)
@Path("/keys/{keyName}")
@OAuthResource("https://vault.azure.net")
KeyBundle importKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName,
@PayloadParam("Hsm") boolean hsm, @Nullable @PayloadParam("attributes") KeyAttributes attributes,
@Nullable @PayloadParam("key") JsonWebKey key, @Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("key:get")
@GET
@Path("/keys/{keyName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
KeyBundle getKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:delete")
@DELETE
@Path("/keys/{keyName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedKeyBundle deleteKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:get_versions")
@GET
@SelectJson("value")
@Path("/keys/{keyName}/versions")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<Key> getKeyVersions(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:update")
@PATCH
@MapBinder(BindToJsonPayload.class)
@Path("/keys/{keyName}{keyVersion}")
@OAuthResource("https://vault.azure.net")
KeyBundle updateKey(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@Nullable @PayloadParam("attributes") KeyAttributes attributes,
@Nullable @PayloadParam("key_ops") List<String> keyOps,
@Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("key:backup")
@POST
@SelectJson("value")
@Path("/keys/{keyName}/backup")
@OAuthResource("https://vault.azure.net")
String backupKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:restore")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/keys/restore")
@OAuthResource("https://vault.azure.net")
KeyBundle restoreKey(@EndpointParam URI vaultBaseUrl, @PayloadParam("value") String keyInfo);
// Soft-delete key operations
@Named("key:list_deleted")
@GET
@SelectJson("value")
@Path("/deletedkeys")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<DeletedKeyBundle> listDeletedKeys(@EndpointParam URI vaultBaseUrl);
@Named("key:get_deleted")
@GET
@Path("/deletedkeys/{keyName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedKeyBundle getDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:recover_deleted")
@POST
@Path("/deletedkeys/{keyName}/recover")
@OAuthResource("https://vault.azure.net")
KeyBundle recoverDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
@Named("key:purge_deleted")
@DELETE
@Path("/deletedkeys/{keyName}")
@Fallback(FalseOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
boolean purgeDeletedKey(@EndpointParam URI vaultBaseUrl, @PathParam("keyName") String keyName);
// Key cryptographic operations
@Named("key:crypto_encrypt")
@POST
@Path("/keys/{keyName}{keyVersion}/encrypt")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
KeyOperationResult encrypt(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("value") String value);
@Named("key:crypto_decrypt")
@POST
@Path("/keys/{keyName}{keyVersion}/decrypt")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
KeyOperationResult decrypt(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("value") String value);
@Named("key:crypto_sign")
@POST
@Path("/keys/{keyName}{keyVersion}/sign")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
KeyOperationResult sign(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("value") String value);
@Named("key:crypto_verify")
@POST
@Path("/keys/{keyName}{keyVersion}/verify")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
boolean verify(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("digest") String digest,
@PayloadParam("value") String value);
@Named("key:crypto_wrap")
@POST
@Path("/keys/{keyName}{keyVersion}/wrapkey")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
KeyOperationResult wrap(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("value") String value);
@Named("key:crypto_unwrap")
@POST
@Path("/keys/{keyName}{keyVersion}/unwrapkey")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
KeyOperationResult unwrap(@EndpointParam URI vaultBaseUrl,
@PathParam("keyName") String keyName,
@Nullable @PathParam("keyVersion") @ParamParser(PrependSlashOrEmptyString.class) String keyVersion,
@PayloadParam("alg") String algorithm,
@PayloadParam("value") String value);
// Secret operations
@Named("secret:list")
@SelectJson("value")
@GET
@Fallback(EmptyListOnNotFoundOr404.class)
@Path("/secrets")
@OAuthResource("https://vault.azure.net")
List<Secret> listSecrets(@EndpointParam URI keyVaultUri);
@Named("secret:set")
@PUT
@MapBinder(BindToJsonPayload.class)
@Path("/secrets/{secretName}")
@OAuthResource("https://vault.azure.net")
SecretBundle setSecret(@EndpointParam URI keyVaultUri, @PathParam("secretName") String secretName,
@Nullable @PayloadParam("attributes") SecretAttributes attributes,
@Nullable @PayloadParam("contentType") String contentType,
@Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("value") String value);
@Named("secret:get")
@GET
@Path("/secrets/{secretName}{secretVersion}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
SecretBundle getSecret(@EndpointParam URI vaultBaseUrl,
@PathParam("secretName") String secretName,
@Nullable @PathParam("secretVersion") @ParamParser(PrependSlashOrEmptyString.class) String secretVersion);
@Named("secret:delete")
@DELETE
@Path("/secrets/{secretName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedSecretBundle deleteSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
@Named("secret:get_versions")
@GET
@SelectJson("value")
@Path("/secrets/{secretName}/versions")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<Secret> getSecretVersions(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
@Named("secret:update")
@PATCH
@MapBinder(BindToJsonPayload.class)
@Path("/secrets/{secretName}{secretVersion}")
@OAuthResource("https://vault.azure.net")
SecretBundle updateSecret(@EndpointParam URI vaultBaseUrl,
@PathParam("secretName") String secretName,
@Nullable @PathParam("secretVersion") @ParamParser(PrependSlashOrEmptyString.class) String secretVersion,
@Nullable @PayloadParam("attributes") SecretAttributes attributes,
@Nullable @PayloadParam("contentType") String contentType,
@Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("secret:backup")
@POST
@SelectJson("value")
@Path("/secrets/{secretName}/backup")
@OAuthResource("https://vault.azure.net")
String backupSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
@Named("secret:restore")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/secrets/restore")
@OAuthResource("https://vault.azure.net")
SecretBundle restoreSecret(@EndpointParam URI vaultBaseUrl, @PayloadParam("value") String secretInfo);
// Soft-delete secret operations
@Named("secret:list_deleted")
@GET
@SelectJson("value")
@Path("/deletedsecrets")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<DeletedSecretBundle> listDeletedSecrets(@EndpointParam URI vaultBaseUrl);
@Named("secret:get_deleted")
@GET
@Path("/deletedsecrets/{secretName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedSecretBundle getDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
@Named("secret:recover_deleted")
@POST
@Path("/deletedsecrets/{secretName}/recover")
@OAuthResource("https://vault.azure.net")
SecretBundle recoverDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
@Named("secret:purge_deleted")
@DELETE
@Path("/deletedsecrets/{secretName}")
@Fallback(FalseOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
boolean purgeDeletedSecret(@EndpointParam URI vaultBaseUrl, @PathParam("secretName") String secretName);
// Certificate operations
@Named("certificate:create")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/certificates/{certificateName}/create")
@OAuthResource("https://vault.azure.net")
CertificateOperation createCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PayloadParam("attributes") CertificateAttributes attributes,
@Nullable @PayloadParam("policy") CertificatePolicy policy,
@Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("certificate:get")
@GET
@Path("/certificates/{certificateName}{certificateVersion}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
CertificateBundle getCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PathParam("certificateVersion") @ParamParser(PrependSlashOrEmptyString.class) String certificateVersion);
@Named("certificate:delete")
@DELETE
@Path("/certificates/{certificateName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedCertificateBundle deleteCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:list")
@GET
@SelectJson("value")
@Path("/certificates")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<Certificate> getCertificates(@EndpointParam URI vaultBaseUrl);
@Named("certificate:list_deleted")
@GET
@SelectJson("value")
@Path("/deletedcertificates")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<DeletedCertificate> getDeletedCertificates(@EndpointParam URI vaultBaseUrl);
@Named("certificate:get_deleted")
@GET
@Path("/deletedcertificates/{certificateName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
DeletedCertificateBundle getDeletedCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:recover_deleted")
@POST
@Path("/deletedcertificates/{certificateName}/recover")
@OAuthResource("https://vault.azure.net")
CertificateBundle recoverDeletedCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:purge_deleted")
@DELETE
@Path("/deletedcertificates/{certificateName}")
@Fallback(FalseOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
boolean purgeDeletedCertificate(@EndpointParam URI vaultBaseUrl, @PathParam("certificateName") String certificateName);
@Named("certificate:get_versions")
@GET
@SelectJson("value")
@Path("/certificates/{certificateName}/versions")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<Certificate> getCertificateVersions(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:update")
@PATCH
@MapBinder(BindToJsonPayload.class)
@Path("/certificates/{certificateName}{certificateVersion}")
@OAuthResource("https://vault.azure.net")
CertificateBundle updateCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PathParam("certificateVersion") @ParamParser(PrependSlashOrEmptyString.class) String certificateVersion,
@Nullable @PayloadParam("attributes") CertificateAttributes attributes,
@Nullable @PayloadParam("policy") CertificatePolicy policy,
@Nullable @PayloadParam("tags") Map<String, String> tags);
@Named("certificate:import")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/certificates/{certificateName}/import")
@OAuthResource("https://vault.azure.net")
CertificateBundle importCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PayloadParam("attributes") CertificateAttributes attributes,
@Nullable @PayloadParam("policy") CertificatePolicy policy, @Nullable @PayloadParam("pwd") String password,
@Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("value") String value);
@Named("certificate:merge")
@POST
@MapBinder(BindToJsonPayload.class)
@Path("/certificates/{certificateName}/pending/merge")
@OAuthResource("https://vault.azure.net")
CertificateBundle mergeCertificate(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PayloadParam("attributes") CertificateAttributes attributes,
@Nullable @PayloadParam("tags") Map<String, String> tags, @PayloadParam("x5c") List<String> value);
@Named("certificate:get_operation")
@GET
@Path("/certificates/{certificateName}/pending")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
CertificateOperation getCertificateOperation(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:update_operation")
@PATCH
@Path("/certificates/{certificateName}/pending")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
CertificateOperation updateCertificateOperation(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@PayloadParam("cancellation_requested") boolean cancellationRequested);
@Named("certificate:delete_operation")
@DELETE
@Path("/certificates/{certificateName}/pending")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
CertificateOperation deleteCertificateOperation(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:set_issuer")
@PUT
@Path("/certificates/issuers/{issuerName}")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
IssuerBundle setCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName,
@Nullable @PayloadParam("attributes") IssuerAttributes attributes,
@Nullable @PayloadParam("credentials") IssuerCredentials credentials,
@Nullable @PayloadParam("org_details") OrganizationDetails orgDetails,
@PayloadParam("provider") String provider);
@Named("certificate:get_issuers")
@GET
@SelectJson("value")
@Path("/certificates/issuers")
@Fallback(EmptyListOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
List<CertificateIssuer> getCertificateIssuers(@EndpointParam URI vaultBaseUrl);
@Named("certificate:get_issuer")
@GET
@Path("/certificates/issuers/{issuerName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
IssuerBundle getCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName);
@Named("certificate:update_issuer")
@PATCH
@Path("/certificates/issuers/{issuerName}")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
IssuerBundle updateCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName,
@Nullable @PayloadParam("attributes") IssuerAttributes attributes,
@Nullable @PayloadParam("credentials") IssuerCredentials credentials,
@Nullable @PayloadParam("org_details") OrganizationDetails orgDetails,
@PayloadParam("provider") String provider);
@Named("certificate:delete_issuer")
@DELETE
@Path("/certificates/issuers/{issuerName}")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
IssuerBundle deleteCertificateIssuer(@EndpointParam URI vaultBaseUrl, @PathParam("issuerName") String issuerName);
@Named("certificate:get_contacts")
@GET
@Path("/certificates/contacts")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
Contacts getCertificateContacts(@EndpointParam URI vaultBaseUrl);
@Named("certificate:set_contacts")
@PUT
@Path("/certificates/contacts")
@MapBinder(BindToJsonPayload.class)
@OAuthResource("https://vault.azure.net")
Contacts setCertificateContacts(@EndpointParam URI vaultBaseUrl, @PayloadParam("contacts") List<Contact> contacts);
@Named("certificate:delete_contacts")
@DELETE
@Path("/certificates/contacts")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
Contacts deleteCertificateContacts(@EndpointParam URI vaultBaseUrl);
@Named("certificate:get_policy")
@GET
@Path("/certificates/{certificateName}/policy")
@Fallback(NullOnNotFoundOr404.class)
@OAuthResource("https://vault.azure.net")
CertificatePolicy getCertificatePolicy(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName);
@Named("certificate:update_policy")
@PATCH
@MapBinder(BindToJsonPayload.class)
@Path("/certificates/{certificateName}/policy")
@OAuthResource("https://vault.azure.net")
CertificatePolicy updateCertificatePolicy(@EndpointParam URI vaultBaseUrl,
@PathParam("certificateName") String certificateName,
@Nullable @PayloadParam("attributes") CertificateAttributes attributes,
@Nullable @PayloadParam("issuer") IssuerParameters issuer,
@Nullable @PayloadParam("key_props") KeyProperties keyProps,
@Nullable @PayloadParam("lifetime_actions") List<LifetimeAction> lifetimeActions,
@Nullable @PayloadParam("secret_props") SecretProperties secretProps,
@Nullable @PayloadParam("x509_props") X509CertificateProperties x509Props);
}