package com.kryptnostic.v2.storage.api; import java.util.Map; import java.util.UUID; import com.kryptnostic.kodex.v1.constants.Names; import com.kryptnostic.v2.storage.models.Scope; import retrofit.http.GET; import retrofit.http.Path; public interface TypesApi { String CONTROLLER = "/types"; String SCOPE = "scope"; String SCOPE_PATH = "/{" + SCOPE + "}"; String TYPE = Names.TYPE_FIELD; String TYPE_PATH = "/{" + TYPE + "}"; /** * Used to retrieve type information for all available scopes. * * @return A mapping of each scope to a mapping of type names to corresponding {@link UUID}s. */ @GET( "/" ) Map<String, Scope> getScopes(); /** * Used to retrieve type information for a particular scope. * * @return A mapping of type names to corresponding {@link UUID}s. */ @GET( SCOPE_PATH ) Scope getScopeInformation( @Path( SCOPE ) String scope); /** * Resolves as scope and type name to a UUID, creating one if necessary. * * @param scope The name of the scope for which to resolve the type. * @param type The name of the type. * @return A type UUID that is unique across all scopes. */ @GET( SCOPE_PATH + TYPE_PATH ) UUID getOrCreateUUIDForType( @Path( SCOPE ) String scope, @Path( TYPE ) String type); }