package denominator.denominatord; import java.util.List; import denominator.model.ResourceRecordSet; import denominator.model.Zone; import feign.Headers; import feign.Param; import feign.RequestLine; import feign.Response; /** * Defines the interface of {@link DenominatorD}, where all responses are in json. <p/> All * responses throw a 400 if there is a problem with the request data. <p/> 404 would be unexpected * as that implies a malformed request. */ public interface DenominatorDApi { @RequestLine("GET /healthcheck") Response healthcheck(); @RequestLine("GET /zones") List<Zone> zones(); @RequestLine("GET /zones?name={name}") List<Zone> zonesByName(@Param("name") String name); @RequestLine("PUT /zones") @Headers("Content-Type: application/json") Response putZone(Zone update); @RequestLine("DELETE /zones/{zoneId}") void deleteZone(@Param("zoneId") String zoneId); @RequestLine("GET /zones/{zoneId}/recordsets") List<ResourceRecordSet<?>> recordSets(@Param("zoneId") String zoneId); @RequestLine("GET /zones/{zoneId}/recordsets?name={name}") List<ResourceRecordSet<?>> recordSetsByName(@Param("zoneId") String zoneId, @Param("name") String name); @RequestLine("GET /zones/{zoneId}/recordsets?name={name}&type={type}") List<ResourceRecordSet<?>> recordSetsByNameAndType(@Param("zoneId") String zoneId, @Param("name") String name, @Param("type") String type); @RequestLine("GET /zones/{zoneId}/recordsets?name={name}&type={type}&qualifier={qualifier}") List<ResourceRecordSet<?>> recordsetsByNameAndTypeAndQualifier( @Param("zoneId") String zoneId, @Param("name") String name, @Param("type") String type, @Param("qualifier") String qualifier); @RequestLine("PUT /zones/{zoneId}/recordsets?name={name}") @Headers("Content-Type: application/json") void putRecordSet(@Param("zoneId") String zoneId, ResourceRecordSet<?> update); @RequestLine("DELETE /zones/{zoneId}/recordsets?name={name}&type={type}") void deleteRecordSetByNameAndType(@Param("zoneId") String zoneId, @Param("name") String name, @Param("type") String type); @RequestLine("DELETE /zones/{zoneId}/recordsets?name={name}&type={type}&qualifier={qualifier}") void deleteRecordSetByNameTypeAndQualifier(@Param("zoneId") String zoneId, @Param("name") String name, @Param("type") String type, @Param("qualifier") String qualifier); }