/**
 * Appcelerator Platform SDK
 * Copyright (c) 2014 by Appcelerator, Inc. All Rights Reserved.
 * Proprietary and Confidential - This source code is not for redistribution
 */

#import <Foundation/Foundation.h>
#import "APSCloud.h"


/**
 * The PhotoCollections object represents a collection of photos.
 * The REST object of this class contains the following fields:<ul>
 * <li>counts (NSDictionary): Object with fields:


photos: Number. </li>
 * <li>cover_photo (APSPhotos): Photo to use as a cover photo for the collection.</li>
 * <li>created_at (NSString): Creation date for this user object.</li>
 * <li>id (NSString): Generated ID for this object.</li>
 * <li>name (NSString): Name of the collection.</li>
 * <li>parent_collection (APSPhotoCollections): Collection object that contains this subcollection.</li>
 * <li>updated_at (NSString): Last update time for this user object.</li>
 * <li>user (APSUsers): Owner of this collection.</li>
 * </ul>
 * For more details about the underlying REST object, see the [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections).
 */

@interface APSPhotoCollections : NSObject




/**
 * Collections contain one or more photos and/or sub-collections. 
 *
 * To use this method, **a user must be logged in before calling this method.**
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-create).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>name (NSString): Name of the collection.</li>
 * <li>parent_collection_id (NSString): Parent collection ID.</li>
 * <li>cover_photo_id (NSString): ID of the photo to use as a cover photo.</li>
 * <li>custom_fields (NSString/NSDictionary): User defined fields.</li>
 * <li>acl_name (NSString): Name of an ACLs to associate with this collection.</li>
 * <li>acl_id (NSString): ID of an ACLs to associate with this collection.</li>
 * <li>user_id (NSString): User ID to create the collection on behalf of.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): Single-element array containing the newly-created photo collection.</li>
 * </ul>
 */

+ (void)create:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Shows information about a collection including the cover photo, owner, parent collection, and counts of its contents. 
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-show).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>collection_id (NSString): ID of the collection to retrieve photos from. (required)</li>
 * <li>response_json_depth (NSNumber): Nested object depth level counts in the response JSON.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): Single-element array containing the photo collection object.</li>
 * </ul>
 */

+ (void)show:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Updates a photo collection. 
 *
 * To use this method, **a user must be logged in before calling this method.**
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-update).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>collection_id (NSString): ID of the collection to update.</li>
 * <li>name (NSString): New name of the collection.</li>
 * <li>parent_collection_id (NSString): Parent collection ID.</li>
 * <li>cover_photo_id (NSString): ID of the photo to use as a cover photo.</li>
 * <li>custom_fields (NSString/NSDictionary): User defined fields.</li>
 * <li>acl_name (NSString): Name of an ACLs to associate with this collection.</li>
 * <li>acl_id (NSString): ID of an ACLs to associate with this collection.</li>
 * <li>user_id (NSString): User ID to update the collection on behalf of.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): Single-element array containing the updated collection.</li>
 * </ul>
 */

+ (void)update:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Search for top-level collections owned by the given user. 
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-search).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>user_id (NSString): ID of the user to find collections for. (required)</li>
 * <li>page (NSNumber): Request page number, default is 1.</li>
 * <li>per_page (NSNumber): Number of results per page, default is 10.</li>
 * <li>response_json_depth (NSNumber): Nested object depth level counts in response JSON.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): List of photos in the collection.</li>
 * </ul>
 */

+ (void)search:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Show subcollections of a collection. 
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-show_subcollections).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>collection_id (NSString): ID of the collection to retrieve photos from. (required)</li>
 * <li>page (NSNumber): Request page number, default is 1.</li>
 * <li>per_page (NSNumber): Number of results per page, default is 10.</li>
 * <li>response_json_depth (NSNumber): Nested object depth level counts in the response JSON.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): List of subcollections in this collection.</li>
 * </ul>
 */

+ (void)showSubcollections:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Show photos in a collection. 
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-show_photos).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>collection_id (NSString): ID of the collection to retrieve photos from. (required)</li>
 * <li>page (NSNumber): Request page number, default is 1.</li>
 * <li>per_page (NSNumber): Number of results per page, default is 10.</li>
 * <li>response_json_depth (NSNumber): Nested object depth level counts in the response JSON.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 * The response data returns the following method-specific properties:<ul>
 * <li>collections (APSPhotoCollections[]): List of photos in the collection.</li>
 * </ul>
 */

+ (void)showPhotos:(NSDictionary *)data withBlock:(APSResponseHandler)handler;




/**
 * Delete an empty collection. 
 *
 * To use this method, **a user must be logged in before calling this method.**
 *
 * For more details about the underlying REST method, see the
 * [ACS API Docs](http://docs.appcelerator.com/cloud/latest/#!/api/PhotoCollections-method-delete).
 * @param data Method parameters specified as an NSDictionary with the following key-value pairs:<ul> 
 * <li>collection_id (NSString): ID of the collection to delete. (required)</li>
 * <li>user_id (NSString): User ID to delete the collection on behalf of.</li>
 * </ul>
 * @param handler Callback to handle the server response. See the Callback section in APSClient.
 */

+ (void)remove:(NSDictionary *)data withBlock:(APSResponseHandler)handler;



@end
