package com.kryptnostic.directory.v1.http; import java.util.Set; import java.util.UUID; import com.codahale.metrics.annotation.Timed; import com.google.common.base.Optional; import com.kryptnostic.directory.v1.model.DomainUpdate; import retrofit.client.Response; import retrofit.http.Body; import retrofit.http.DELETE; import retrofit.http.GET; import retrofit.http.POST; import retrofit.http.PUT; import retrofit.http.Path; /** * {@code Domain} management functionality. * * @author Nick Hewitt * @author Yao Pan * */ public interface DomainManagementApi { public static final String DOMAIN = "/domain"; public static final String WHITE_LIST = "/whitelist"; public static final String DOMAIN_LIST = "/domainlist"; public static final String NAME = "name"; public static final String NAME_PATH = "/{" + NAME + "}"; public static final String NAME_WITH_DOT = "/{" + NAME + ":.+}"; public static final String SHARING_POLICY = "/sharingpolicy"; /** * Update domain settings. * * @param request * @return */ @Timed @POST( DOMAIN ) Response updateDomain( @Body DomainUpdate request ); @Timed @GET( DOMAIN + NAME_PATH ) Optional<UUID> getDomainId( @Path( NAME ) String domainName); @GET( DOMAIN + SHARING_POLICY ) String getDomainSharingPolicy(); /** * Update white list settings. * * @param domains * @return */ @PUT( WHITE_LIST ) Response addToDomainWhiteList( @Body Set<String> domains ); @GET( WHITE_LIST ) Set<String> getDomainWhiteList(); @DELETE( WHITE_LIST ) Response removeFromDomainWhiteList( @Body Set<String> domains ); @GET( DOMAIN_LIST ) Set<String> getListableDomainsForWhiteList(); }