package com.kryptnostic.v2.storage.api; import java.util.Set; import java.util.UUID; import com.kryptnostic.v2.constants.Names; import com.kryptnostic.v2.storage.models.VersionedObjectKey; import retrofit.http.GET; import retrofit.http.Path; /** * This API is used for retrieving paged lists of objects for a user. Ordering is not guaranteed across calls. * * @author Matthew Tamayo-Rios <matthew@kryptnostic.com> * */ public interface ObjectListingApi { String CONTROLLER = "/listing"; String OBJECTS = "/objects"; String VERSIONED = "/versioned"; String TYPE = "type"; String PAGE = Names.PAGE_FIELD; String PAGE_SIZE = Names.SIZE_FIELD; String ID = Names.ID_FIELD; String LATEST_PATH = "/latest"; String USER_ID_PATH = "/{" + ID + "}"; String TYPE_ID_PATH = "/type/{" + TYPE + "}"; String TYPE_NAME_PATH = "/typename/{" + TYPE + "}"; String PAGE_SIZE_PATH = "/{" + PAGE_SIZE + "}"; String PAGE_PATH = "/{" + PAGE + "}"; /** * Retrieves all objects owned by a given a user. This is a slow call / uncached call. * * @param userId The userId for which to return the list of paged objects. * @return The UUID of all objects owned by the user. */ @GET( CONTROLLER + OBJECTS + USER_ID_PATH ) Set<UUID> getAllObjectIds( @Path( ID ) UUID userId); @GET( CONTROLLER + OBJECTS + USER_ID_PATH + PAGE_SIZE_PATH + PAGE_PATH ) Set<UUID> getAllObjectIdsPaged( @Path( ID ) UUID userId, @Path( PAGE ) Integer offset, @Path( PAGE_SIZE ) Integer pageSize); @GET( CONTROLLER + VERSIONED + OBJECTS + USER_ID_PATH + TYPE_ID_PATH ) Set<VersionedObjectKey> getVersionedObjectKeysByType( @Path( ID ) UUID userId, @Path( TYPE ) UUID type); @GET( CONTROLLER + OBJECTS + USER_ID_PATH + TYPE_ID_PATH ) Iterable<UUID> getObjectIdsByType( @Path( ID ) UUID userId, @Path( TYPE ) UUID type); @GET( CONTROLLER + OBJECTS + USER_ID_PATH + TYPE_ID_PATH + PAGE_SIZE_PATH + PAGE_PATH ) Set<UUID> getObjectIdsByTypePaged( @Path( ID ) UUID userId, @Path( TYPE ) UUID typeId, @Path( PAGE ) Integer offset, @Path( PAGE_SIZE ) Integer pageSize); @GET( CONTROLLER + VERSIONED + OBJECTS + USER_ID_PATH + TYPE_ID_PATH + PAGE_SIZE_PATH + PAGE_PATH ) Set<VersionedObjectKey> getVersionedObjectKeysByTypePaged( @Path( ID ) UUID userId, @Path( TYPE ) UUID typeId, @Path( PAGE ) Integer offset, @Path( PAGE_SIZE ) Integer pageSize); /** * @deprecated Use {@link TypesApi} * @param typeName * @return */ @Deprecated @GET( CONTROLLER + OBJECTS + TYPE_NAME_PATH ) UUID getTypeForName( @Path( TYPE ) String typeName); }