## Photo

Photo — Photo.

## Synopsis

                        flickcurl_photo;
    void                flickcurl_free_photo                (flickcurl_photo *photo);
    void                flickcurl_free_photos               (flickcurl_photo **photos);
    const char *        flickcurl_get_photo_field_label     (flickcurl_photo_field_type field);
    char *              flickcurl_photo_as_page_uri         (flickcurl_photo *photo);
    char *              flickcurl_photo_as_short_uri        (flickcurl_photo *photo);
    char *              flickcurl_photo_as_source_uri       (flickcurl_photo *photo,
                                                             const char c);
    char *              flickcurl_photo_as_user_icon_uri    (flickcurl_photo *photo);
    char *              flickcurl_photo_id_as_short_uri     (char *photo_id);
    char *              flickcurl_source_uri_as_photo_id    (const char *uri);
                        flickcurl_photo_field;
    enum                flickcurl_photo_field_type;
    enum                flickcurl_field_value_type;
    int                 flickcurl_photos_addTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);
    char *              flickcurl_photos_comments_addComment
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *comment_text);
    int                 flickcurl_photos_comments_deleteComment
                                                            (flickcurl *fc,
                                                             const char *comment_id);
    int                 flickcurl_photos_comments_editComment
                                                            (flickcurl *fc,
                                                             const char *comment_id,
                                                             const char *comment_text);
    flickcurl_comment ** flickcurl_photos_comments_getList  (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photos_list * flickcurl_photos_comments_getRecentForContacts_params
                                                            (flickcurl *fc,
                                                             int date_lastcomment,
                                                             const char *contacts_filter,
                                                             flickcurl_photos_list_params *list_params);
    int                 flickcurl_photos_delete             (flickcurl *fc,
                                                             const char *photo_id);
    int                 flickcurl_photos_geo_batchCorrectLocation
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             const char *place_id,
                                                             int woe_id);
    int                 flickcurl_photos_geo_correctLocation
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *place_id,
                                                             int woe_id);
    flickcurl_location * flickcurl_photos_geo_getLocation   (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_perms *   flickcurl_photos_geo_getPerms       (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo **  flickcurl_photos_geo_photosForLocation
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_geo_photosForLocation_params
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             flickcurl_photos_list_params *list_params);
    int                 flickcurl_photos_geo_removeLocation (flickcurl *fc,
                                                             const char *photo_id);
    int                 flickcurl_photos_geo_setContext     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int context);
    int                 flickcurl_photos_geo_setLocation    (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_location *location);
    int                 flickcurl_photos_geo_setPerms       (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);
    flickcurl_context ** flickcurl_photos_getAllContexts    (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo **  flickcurl_photos_getContactsPhotos  (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);
    flickcurl_photos_list * flickcurl_photos_getContactsPhotos_params
                                                            (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_photo **  flickcurl_photos_getContactsPublicPhotos
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);
    flickcurl_photos_list * flickcurl_photos_getContactsPublicPhotos_params
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_context ** flickcurl_photos_getContext        (flickcurl *fc,
                                                             const char *photo_id);
    int **              flickcurl_photos_getCounts          (flickcurl *fc,
                                                             const char **dates_array,
                                                             const char **taken_dates_array);
    flickcurl_exif **   flickcurl_photos_getExif            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);
    flickcurl_person ** flickcurl_photos_getFavorites       (flickcurl *fc,
                                                             const char *photo_id,
                                                             int page,
                                                             int per_page);
    flickcurl_photo *   flickcurl_photos_getInfo            (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo *   flickcurl_photos_getInfo2           (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);
    flickcurl_photo **  flickcurl_photos_getNotInSet        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_getNotInSet_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_perms *   flickcurl_photos_getPerms           (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo **  flickcurl_photos_getRecent          (flickcurl *fc,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_getRecent_params
                                                            (flickcurl *fc,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_size **   flickcurl_photos_getSizes           (flickcurl *fc,
                                                             const char *photo_id);
    flickcurl_photo **  flickcurl_photos_getUntagged        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_getUntagged_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_photo **  flickcurl_photos_getWithGeoData     (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_getWithGeoData_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_photo **  flickcurl_photos_getWithoutGeoData  (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_getWithoutGeoData_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);
    flickcurl_license ** flickcurl_photos_licenses_getInfo  (flickcurl *fc);
    flickcurl_license * flickcurl_photos_licenses_getInfo_by_id
                                                            (flickcurl *fc,
                                                             int id);
    int                 flickcurl_photos_licenses_setLicense
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             int license_id);
    char *              flickcurl_photos_notes_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);
    int                 flickcurl_photos_notes_delete       (flickcurl *fc,
                                                             const char *note_id);
    int                 flickcurl_photos_notes_edit         (flickcurl *fc,
                                                             const char *note_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);
    flickcurl_photo **  flickcurl_photos_recentlyUpdated    (flickcurl *fc,
                                                             int min_date,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);
    flickcurl_photos_list * flickcurl_photos_recentlyUpdated_params
                                                            (flickcurl *fc,
                                                             int min_date,
                                                             flickcurl_photos_list_params *list_params);
    int                 flickcurl_photos_removeTag          (flickcurl *fc,
                                                             const char *tag_id);
    flickcurl_upload_status * flickcurl_photos_replace      (flickcurl *fc,
                                                             const char *photo_file,
                                                             const char *photo_id,
                                                             int async);
    flickcurl_photo **  flickcurl_photos_search             (flickcurl *fc,
                                                             flickcurl_search_params *params);
    flickcurl_photos_list * flickcurl_photos_search_params  (flickcurl *fc,
                                                             flickcurl_search_params *params,
                                                             flickcurl_photos_list_params *list_params);
                        flickcurl_search_params;
    int                 flickcurl_search_params_init        (flickcurl_search_params *params);
    int                 flickcurl_photos_setContentType     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int content_type);
    int                 flickcurl_photos_setDates           (flickcurl *fc,
                                                             const char *photo_id,
                                                             int date_posted,
                                                             int date_taken,
                                                             int date_taken_granularity);
    int                 flickcurl_photos_setMeta            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *title,
                                                             const char *description);
    int                 flickcurl_photos_setPerms           (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);
    int                 flickcurl_photos_setSafetyLevel     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int safety_level,
                                                             int hidden);
    int                 flickcurl_photos_setTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);
    int                 flickcurl_photos_transform_rotate   (flickcurl *fc,
                                                             const char *photo_id,
                                                             int degrees);
    flickcurl_ticket ** flickcurl_photos_upload_checkTickets
                                                            (flickcurl *fc,
                                                             const char **tickets_ids);
    flickcurl_upload_status * flickcurl_photos_upload_params
                                                            (flickcurl *fc,
                                                             flickcurl_upload_params *params);

## Description

Photo.

## Details

### flickcurl_photo

    typedef struct {
      char *id;
      char *uri;

      flickcurl_tag** tags;
      int tags_count;

      flickcurl_photo_field fields[PHOTO_FIELD_LAST + 1];

      flickcurl_place* place;

      flickcurl_video* video;

      char *media_type;

      flickcurl_note** notes;
      int notes_count;
    } flickcurl_photo;

A photo or video.

char *`id`; | photo/video ID
char *`uri`; | photo/video page URI
flickcurl_tag **`tags`; | array of tags (may be NULL)
int `tags_count`; | size of tags array
flickcurl_photo_field `fields`[PHOTO_FIELD_LAST + 1]; | metadata fields
flickcurl_place *`place`; | place
flickcurl_video *`video`; | video (may be NULL)
char *`media_type`; | "photo" or "video"
flickcurl_note **`notes`; | array of notes (may be NULL)
int `notes_count`; | size of notes array

### flickcurl_free_photo ()

    void                flickcurl_free_photo                (flickcurl_photo *photo);

Destructor for photo object

`photo` : | photo object

### flickcurl_free_photos ()

    void                flickcurl_free_photos               (flickcurl_photo **photos);

Destructor for array of photo objects

`photos` : | photo object array

### flickcurl_get_photo_field_label ()

    const char *        flickcurl_get_photo_field_label     (flickcurl_photo_field_type field);

Get label for photo field.

`field` : | field enum
Returns : | label string or NULL if none valid

### flickcurl_photo_as_page_uri ()

    char *              flickcurl_photo_as_page_uri         (flickcurl_photo *photo);

Get a photo's page URI

`photo` : | photo object
Returns : | new source URI string or NULL on failure

### flickcurl_photo_as_short_uri ()

    char *              flickcurl_photo_as_short_uri        (flickcurl_photo *photo);

Get a short URI for a photo

Encoded based on description given in http://www.flickr.com/groups/api/discuss/72157616713786392/

`photo` : | photo object
Returns : | new short URI string or NULL on failure

### flickcurl_photo_as_source_uri ()

    char *              flickcurl_photo_as_source_uri       (flickcurl_photo *photo,
                                                             const char c);

Get a photo's image source URIs

`c` can be s,m,t,b for sizes, o for original, otherwise default https://www.flickr.com/services/api/misc.urls.html

`photo` : | photo object
`c` : | size s, m, t or b
Returns : | new source URI string or NULL on failure

### flickcurl_photo_as_user_icon_uri ()

    char *              flickcurl_photo_as_user_icon_uri    (flickcurl_photo *photo);

Get the user's icon URI

The icon URI returned is always a 48x48 pixel JPEG

`photo` : | photo object
Returns : | new icon URI string or NULL on failure

### flickcurl_photo_id_as_short_uri ()

    char *              flickcurl_photo_id_as_short_uri     (char *photo_id);

Get a short URI for a photo ID

Encoded based on description given in http://www.flickr.com/groups/api/discuss/72157616713786392/

`photo_id` : | photo ID
Returns : | new short URI string or NULL on failure

### flickcurl_source_uri_as_photo_id ()

    char *              flickcurl_source_uri_as_photo_id    (const char *uri);

Get a photo ID from an image source URI

Turns an URL that points to the photo into a photo ID. i.e. given an URI like these: `https://farm{farm-id}.static.flickr.com/{server-id}/{photo-id}_{o-secret}_o.(jpg|gif|png)` or `https://farm{farm-id}.static.flickr.com/{server-id}/{photo-id}_{secret}_[mstb].jpg` `https://farm{farm-id}.static.flickr.com/{server-id}/{photo-id}_{secret}.jpg` (or the same with staticflickr.com) returns the {photo-id}

`uri` : | source uri
Returns : | new photo ID string or NULL on failure

### flickcurl_photo_field

    typedef struct {
      char* string;
      flickcurl_photo_field_type integer;
      flickcurl_field_value_type type;
    } flickcurl_photo_field;

Field of a photo structure

char *`string`; | string field value
flickcurl_photo_field_type `integer`; | integer field value
flickcurl_field_value_type `type`; | field type

### enum flickcurl_photo_field_type

    typedef enum {
      PHOTO_FIELD_none,
      PHOTO_FIELD_dateuploaded,
      PHOTO_FIELD_farm,
      PHOTO_FIELD_isfavorite,
      PHOTO_FIELD_license,
      PHOTO_FIELD_originalformat,
      PHOTO_FIELD_rotation,
      PHOTO_FIELD_server,
      PHOTO_FIELD_dates_lastupdate,
      PHOTO_FIELD_dates_posted,
      PHOTO_FIELD_dates_taken,
      PHOTO_FIELD_dates_takengranularity,
      PHOTO_FIELD_description,
      PHOTO_FIELD_editability_canaddmeta,
      PHOTO_FIELD_editability_cancomment,
      PHOTO_FIELD_geoperms_iscontact,
      PHOTO_FIELD_geoperms_isfamily,
      PHOTO_FIELD_geoperms_isfriend,
      PHOTO_FIELD_geoperms_ispublic,
      PHOTO_FIELD_location_accuracy,
      PHOTO_FIELD_location_latitude,
      PHOTO_FIELD_location_longitude,
      PHOTO_FIELD_owner_location,
      PHOTO_FIELD_owner_nsid,
      PHOTO_FIELD_owner_realname,
      PHOTO_FIELD_owner_username,
      PHOTO_FIELD_title,
      PHOTO_FIELD_visibility_isfamily,
      PHOTO_FIELD_visibility_isfriend,
      PHOTO_FIELD_visibility_ispublic,
      PHOTO_FIELD_secret,
      PHOTO_FIELD_originalsecret,
      PHOTO_FIELD_location_neighbourhood,
      PHOTO_FIELD_location_neighborhood = PHOTO_FIELD_location_neighbourhood,
      PHOTO_FIELD_location_locality,
      PHOTO_FIELD_location_county,
      PHOTO_FIELD_location_region,
      PHOTO_FIELD_location_country,
      PHOTO_FIELD_location_placeid,
      PHOTO_FIELD_neighbourhood_placeid,
      PHOTO_FIELD_neighborhood_placeid = PHOTO_FIELD_neighbourhood_placeid,
      PHOTO_FIELD_locality_placeid,
      PHOTO_FIELD_county_placeid,
      PHOTO_FIELD_region_placeid,
      PHOTO_FIELD_country_placeid,
      PHOTO_FIELD_location_woeid,
      PHOTO_FIELD_neighbourhood_woeid,
      PHOTO_FIELD_neighborhood_woeid  = PHOTO_FIELD_neighbourhood_woeid,
      PHOTO_FIELD_locality_woeid,
      PHOTO_FIELD_county_woeid,
      PHOTO_FIELD_region_woeid,
      PHOTO_FIELD_country_woeid,
      PHOTO_FIELD_usage_candownload,
      PHOTO_FIELD_usage_canblog,
      PHOTO_FIELD_usage_canprint,
      PHOTO_FIELD_owner_iconserver,
      PHOTO_FIELD_owner_iconfarm,
      PHOTO_FIELD_original_width,
      PHOTO_FIELD_original_height,
      PHOTO_FIELD_views,
      PHOTO_FIELD_comments,
      PHOTO_FIELD_favorites,
      PHOTO_FIELD_gallery_comment,
      PHOTO_FIELD_FIRST = PHOTO_FIELD_dateuploaded,
      PHOTO_FIELD_LAST = PHOTO_FIELD_gallery_comment
    } flickcurl_photo_field_type;

Fields of a flickcurl_photo*

`PHOTO_FIELD_none` | internal
`PHOTO_FIELD_dateuploaded` | date uploaded
`PHOTO_FIELD_farm` | farm number
`PHOTO_FIELD_isfavorite` | is favorite boolean
`PHOTO_FIELD_license` | license
`PHOTO_FIELD_originalformat` | original format
`PHOTO_FIELD_rotation` | rotation
`PHOTO_FIELD_server` | server
`PHOTO_FIELD_dates_lastupdate` | last update date
`PHOTO_FIELD_dates_posted` | posted date
`PHOTO_FIELD_dates_taken` | taken date
`PHOTO_FIELD_dates_takengranularity` | taken granularity
`PHOTO_FIELD_description` | description
`PHOTO_FIELD_editability_canaddmeta` | can add metadata boolean
`PHOTO_FIELD_editability_cancomment` | can comment boolean
`PHOTO_FIELD_geoperms_iscontact` | geo perms are for contacts
`PHOTO_FIELD_geoperms_isfamily` | geo perms are for family
`PHOTO_FIELD_geoperms_isfriend` | geo perms are for frind
`PHOTO_FIELD_geoperms_ispublic` | geo perms are for public
`PHOTO_FIELD_location_accuracy` | location accuracy
`PHOTO_FIELD_location_latitude` | location latitude
`PHOTO_FIELD_location_longitude` | location longitude
`PHOTO_FIELD_owner_location` | owner location
`PHOTO_FIELD_owner_nsid` | owner NSID
`PHOTO_FIELD_owner_realname` | owner real name
`PHOTO_FIELD_owner_username` | owner user name
`PHOTO_FIELD_title` | title
`PHOTO_FIELD_visibility_isfamily` | visibility is for family
`PHOTO_FIELD_visibility_isfriend` | visibility is for friend
`PHOTO_FIELD_visibility_ispublic` | visibility is for public
`PHOTO_FIELD_secret` | photo secret
`PHOTO_FIELD_originalsecret` | photo original secret
`PHOTO_FIELD_location_neighbourhood` | location neighbourhood
`PHOTO_FIELD_location_neighborhood` | deprecated
`PHOTO_FIELD_location_locality` | location locality
`PHOTO_FIELD_location_county` | location county
`PHOTO_FIELD_location_region` | location region
`PHOTO_FIELD_location_country` | location country
`PHOTO_FIELD_location_placeid` | location place ID
`PHOTO_FIELD_neighbourhood_placeid` | neighborhood place ID
`PHOTO_FIELD_neighborhood_placeid` | dprecated
`PHOTO_FIELD_locality_placeid` | locality place ID
`PHOTO_FIELD_county_placeid` | county place ID
`PHOTO_FIELD_region_placeid` | region place ID
`PHOTO_FIELD_country_placeid` | country place ID
`PHOTO_FIELD_location_woeid` | location WOE ID
`PHOTO_FIELD_neighbourhood_woeid` | neighborhood WOE ID
`PHOTO_FIELD_neighborhood_woeid` | deprecated
`PHOTO_FIELD_locality_woeid` | locality WOE ID
`PHOTO_FIELD_county_woeid` | county WOE ID
`PHOTO_FIELD_region_woeid` | region WOE ID
`PHOTO_FIELD_country_woeid` | country WOE ID
`PHOTO_FIELD_usage_candownload` | can download
`PHOTO_FIELD_usage_canblog` | can blog
`PHOTO_FIELD_usage_canprint` | can print
`PHOTO_FIELD_owner_iconserver` | server of owner's icon
`PHOTO_FIELD_owner_iconfarm` | farm of owner's icon
`PHOTO_FIELD_original_width` | original photo width
`PHOTO_FIELD_original_height` | original photo height
`PHOTO_FIELD_views` | number of photo views
`PHOTO_FIELD_comments` | number of photo comments
`PHOTO_FIELD_favorites` | number of photo favorites
`PHOTO_FIELD_gallery_comment` | comment on the photo when used in a gallery
`PHOTO_FIELD_FIRST` | internal offset to first in enum list
`PHOTO_FIELD_LAST` | internal offset to last in enum list

### enum flickcurl_field_value_type

    typedef enum {
      VALUE_TYPE_NONE, /* empty field */
      VALUE_TYPE_PHOTO_ID, /* internal */
      VALUE_TYPE_PHOTO_URI, /* internal */
      VALUE_TYPE_UNIXTIME,
      VALUE_TYPE_BOOLEAN,
      VALUE_TYPE_DATETIME,
      VALUE_TYPE_FLOAT,
      VALUE_TYPE_INTEGER,
      VALUE_TYPE_STRING,
      VALUE_TYPE_URI,
      VALUE_TYPE_PERSON_ID, /* internal */
      VALUE_TYPE_MEDIA_TYPE, /* internal */
      VALUE_TYPE_TAG_STRING, /* internal */
      VALUE_TYPE_COLLECTION_ID, /* internal */
      VALUE_TYPE_ICON_PHOTOS, /* internal */
      VALUE_TYPE_LAST = VALUE_TYPE_ICON_PHOTOS
    } flickcurl_field_value_type;

Field data types

`VALUE_TYPE_NONE` | internal
`VALUE_TYPE_PHOTO_ID` | internal
`VALUE_TYPE_PHOTO_URI` | internal
`VALUE_TYPE_UNIXTIME` | a unixtime
`VALUE_TYPE_BOOLEAN` | boolean
`VALUE_TYPE_DATETIME` | date time
`VALUE_TYPE_FLOAT` | floating point number
`VALUE_TYPE_INTEGER` | integer
`VALUE_TYPE_STRING` | string
`VALUE_TYPE_URI` | URI
`VALUE_TYPE_PERSON_ID` | person ID
`VALUE_TYPE_MEDIA_TYPE` | internal
`VALUE_TYPE_TAG_STRING` | internal
`VALUE_TYPE_COLLECTION_ID` | internal
`VALUE_TYPE_ICON_PHOTOS` | internal
`VALUE_TYPE_LAST` | internal offset to last in enum list

### flickcurl_photos_addTags ()

    int                 flickcurl_photos_addTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);

Add tags to a photo.

Implements flickr.photos.addTags (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
`tags` : | tags to add as a space-separated list
Returns : | non-0 on failure

### flickcurl_photos_comments_addComment ()

    char *              flickcurl_photos_comments_addComment
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *comment_text);

Add comment to a photo as the currently authenticated user.

Implements flickr.photos.comments.addComment (0.10)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to add a comment to.
`comment_text` : | Text of the comment
Returns : | new comment ID or non-NULL on failure

### flickcurl_photos_comments_deleteComment ()

    int                 flickcurl_photos_comments_deleteComment
                                                            (flickcurl *fc,
                                                             const char *comment_id);

Delete a comment as the currently authenticated user.

Implements flickr.photos.comments.deleteComment (0.10)

`fc` : | flickcurl context
`comment_id` : | The id of the comment to edit.
Returns : | non-0 on failure

### flickcurl_photos_comments_editComment ()

    int                 flickcurl_photos_comments_editComment
                                                            (flickcurl *fc,
                                                             const char *comment_id,
                                                             const char *comment_text);

Edit the text of a comment as the currently authenticated user.

Implements flickr.photos.comments.editComment (0.10)

`fc` : | flickcurl context
`comment_id` : | The id of the comment to edit.
`comment_text` : | Update the comment to this text.
Returns : | non-0 on failure

### flickcurl_photos_comments_getList ()

    flickcurl_comment ** flickcurl_photos_comments_getList  (flickcurl *fc,
                                                             const char *photo_id);

Returns the comments for a photo

Implements flickr.photos.comments.getList (0.10)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch comments for.
Returns : | array of comments or NULL on failure

### flickcurl_photos_comments_getRecentForContacts_params ()

    flickcurl_photos_list * flickcurl_photos_comments_getRecentForContacts_params
                                                            (flickcurl *fc,
                                                             int date_lastcomment,
                                                             const char *contacts_filter,
                                                             flickcurl_photos_list_params *list_params);

Return the list of photos belonging to your contacts that have been commented on recently.

Implements flickr.photos.comments.getRecentForContacts (1.12)

`fc` : | flickcurl context
`date_lastcomment` : | Limits the resultset to photos that have been commented on since this date. The date should be in the form of a Unix timestamp. The default, and maximum, offset is (1) hour (or <0)
`contacts_filter` : | A comma-separated list of contact NSIDs to limit the scope of the query to (or NULL)
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | list of photos or NULL on failure

### flickcurl_photos_delete ()

    int                 flickcurl_photos_delete             (flickcurl *fc,
                                                             const char *photo_id);

Delete a photo.

Implements flickr.photos.delete (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | non-0 on failure

### flickcurl_photos_geo_batchCorrectLocation ()

    int                 flickcurl_photos_geo_batchCorrectLocation
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             const char *place_id,
                                                             int woe_id);

Correct the places hierarchy for all the photos for a user at a given location (latitude, longitude and accuracy).

You must pass either a valid Places ID in `place_id` or a WOE ID in `woe_id`.

Batch corrections are processed in a delayed queue so it may take a few minutes before the changes are reflected in a user's photos.

Implements flickr.photos.geo.batchCorrectLocation (1.8)

`fc` : | flickcurl context
`location` : | The location (lat, long, accuracy) of the photos to update.
`place_id` : | A Flickr Places ID (or NULL)
`woe_id` : | A Where On Earth (WOE) ID (or 0)
Returns : | non-0 on failure

### flickcurl_photos_geo_correctLocation ()

    int                 flickcurl_photos_geo_correctLocation
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *place_id,
                                                             int woe_id);

Correct a photo location.

You must pass either a valid Places ID in `place_id` or a WOE ID in `woe_id`.

Implements flickr.photos.geo.correctLocation (1.8)

`fc` : | flickcurl context
`photo_id` : | The ID of the photo whose WOE location is being corrected.
`place_id` : | A Flickr Places ID (or NULL)
`woe_id` : | A Where On Earth (WOE) ID (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_geo_getLocation ()

    flickcurl_location * flickcurl_photos_geo_getLocation   (flickcurl *fc,
                                                             const char *photo_id);

Get the geo data (latitude and longitude and the accuracy level) for a photo.

Implements flickr.photos.geo.getLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo you want to retrieve location data for.
Returns : | non-0 on failure

### flickcurl_photos_geo_getPerms ()

    flickcurl_perms *   flickcurl_photos_geo_getPerms       (flickcurl *fc,
                                                             const char *photo_id);

Get permissions for who may view geo data for a photo.

Implements flickr.photos.geo.getPerms (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
Returns : | non-0 on failure

### flickcurl_photos_geo_photosForLocation ()

    flickcurl_photo **  flickcurl_photos_geo_photosForLocation
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Get a list of photos for a user at a specific location (latitude, longitude and accuracy)

Implements flickr.photos.geo.photosForLocation (1.8)

`fc` : | flickcurl context
`location` : | The location (lat, long, accuracy) of the photos
`extras` : | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags, o_dims, views, media (or NULL)
`per_page` : | Number of photos to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500 (or NULL)
`page` : | The page of results to return. If this argument is omitted, it defaults to 1 (or NULL)
Returns : | list of photos or NULL on failure

### flickcurl_photos_geo_photosForLocation_params ()

    flickcurl_photos_list * flickcurl_photos_geo_photosForLocation_params
                                                            (flickcurl *fc,
                                                             flickcurl_location *location,
                                                             flickcurl_photos_list_params *list_params);

Get a list of photos for a user at a specific location (latitude, longitude and accuracy)

`fc` : | flickcurl context
`location` : | The location (lat, long, accuracy) of the photos
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | list of photos or NULL on failure

### flickcurl_photos_geo_removeLocation ()

    int                 flickcurl_photos_geo_removeLocation (flickcurl *fc,
                                                             const char *photo_id);

Removes the geo data associated with a photo.

Implements flickr.photos.geo.removeLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo you want to remove location data from.
Returns : | non-0 on failure

### flickcurl_photos_geo_setContext ()

    int                 flickcurl_photos_geo_setContext     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int context);

Indicate the state of a photo's geotagginess beyond latitude and longitude.

Note : photos passed to this method must already be geotagged using the `flickcurl_photos_geo_setLocation()` method.

Implements flickr.photos.geo.setContext (1.8)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set context data for.
`context` : | Context is a numeric value representing the photo's geotagginess beyond latitude and longitude. The current values are: 0: not defined, 1: indoors, 2: outdoors.
Returns : | non-0 on failure

### flickcurl_photos_geo_setLocation ()

    int                 flickcurl_photos_geo_setLocation    (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_location *location);

Sets the geo data (latitude and longitude and, optionally, the accuracy level) for a photo.

Implements flickr.photos.geo.setLocation (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set location data for.
`location` : | The location
Returns : | non-0 on failure

### flickcurl_photos_geo_setPerms ()

    int                 flickcurl_photos_geo_setPerms       (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);

Set the permission for who may view the geo data associated with a photo.

Implements flickr.photos.geo.setPerms (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
`perms` : | Geo permissions
Returns : | non-0 on failure

### flickcurl_photos_getAllContexts ()

    flickcurl_context ** flickcurl_photos_getAllContexts    (flickcurl *fc,
                                                             const char *photo_id);

Get all visible sets and pools the photo belongs to.

Implements flickr.photos.getAllContexts (0.7)

Returns an array of size 3 [prev, next, NULL] flickcurl_context* or NULL on error

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | prev, next contexts or NULL

### flickcurl_photos_getContactsPhotos ()

    flickcurl_photo **  flickcurl_photos_getContactsPhotos  (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);

Fetch a list of recent photos from the calling users' contacts.

See `flickcurl_photos_getContactsPhotos()` for details of parameters.

Implements flickr.photos.getContactsPhotos (0.11)

`fc` : | flickcurl context
`contact_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts).
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the calling user.
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_getContactsPhotos_params ()

    flickcurl_photos_list * flickcurl_photos_getContactsPhotos_params
                                                            (flickcurl *fc,
                                                             int contact_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             flickcurl_photos_list_params *list_params);

Fetch a list of recent photos from the calling users' contacts.

Currently supported extras fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update

Optional extra type 'media' that will return an extra media = VALUE for VALUE "photo" or "video". API addition 2008-04-07.

`fc` : | flickcurl context
`contact_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts).
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the calling user.
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_getContactsPublicPhotos ()

    flickcurl_photo **  flickcurl_photos_getContactsPublicPhotos
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             const char *extras);

Fetch a list of recent public photos from a users' contacts.

See `flickcurl_photos_getContactsPublicPhotos()` for details of parameters.

Implements flickr.photos.getContactsPublicPhotos (0.12)

`fc` : | flickcurl context
`user_id` : | The NSID of the user to fetch photos for.
`photo_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts)
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the user specified by user_id.
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getContactsPublicPhotos_params ()

    flickcurl_photos_list * flickcurl_photos_getContactsPublicPhotos_params
                                                            (flickcurl *fc,
                                                             const char *user_id,
                                                             int photo_count,
                                                             int just_friends,
                                                             int single_photo,
                                                             int include_self,
                                                             flickcurl_photos_list_params *list_params);

Fetch a list of recent public photos from a users' contacts.

Currently supported extras fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update.

Optional extra type 'media' that will return an extra media = VALUE for VALUE "photo" or "video". API addition 2008-04-07.

`fc` : | flickcurl context
`user_id` : | The NSID of the user to fetch photos for.
`photo_count` : | Number of photos to return (Default 10, maximum 50)
`just_friends` : | Set to non-0 to only show photos from friends and family (excluding regular contacts)
`single_photo` : | Set to non-0 to only fetch one photo (the latest) per contact, instead of all photos in chronological order.
`include_self` : | Set to non-0 to include photos from the user specified by user_id.
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getContext ()

    flickcurl_context ** flickcurl_photos_getContext        (flickcurl *fc,
                                                             const char *photo_id);

Get next and previous photos for a photo in a photostream.

Implements flickr.photos.getContext (0.7)

Returns an array of size 3 [prev, next, NULL] flickcurl_context* or NULL on error

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | prev, next contexts or NULL

### flickcurl_photos_getCounts ()

    int **              flickcurl_photos_getCounts          (flickcurl *fc,
                                                             const char **dates_array,
                                                             const char **taken_dates_array);

Gets a list of photo counts for the given date ranges for the calling user.

Implements flickr.photos.getCounts (0.13)

The return array fields are: [0] count [1] fromdate as unixtime [2] todate as unixtime

`fc` : | flickcurl context
`dates_array` : | A comma delimited list of unix timestamps, denoting the periods to return counts for. They should be specified smallest first. (or NULL)
`taken_dates_array` : | A comma delimited list of mysql datetimes, denoting the periods to return counts for. They should be specified mallest first. (or NULL)
Returns : | array of int[3] or NULL on failure

### flickcurl_photos_getExif ()

    flickcurl_exif **   flickcurl_photos_getExif            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);

Retrieves a list of EXIF/TIFF/GPS tags for a given photo.

Implements flickr.photos.getExif (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch information for.
`secret` : | The secret for the photo (or NULL) If the correct secret is passed then permissions checking is skipped. This enables the 'sharing' of individual photos by passing around the id and secret.
Returns : | non-0 on failure

### flickcurl_photos_getFavorites ()

    flickcurl_person ** flickcurl_photos_getFavorites       (flickcurl *fc,
                                                             const char *photo_id,
                                                             int page,
                                                             int per_page);

Returns the list of people who have favorited a given photo.

Implements flickr.photos.getFavorites (0.12)

`fc` : | flickcurl context
`photo_id` : | The ID of the photo to fetch the favoriters list for.
`page` : | The page of results to return (default 1)
`per_page` : | Number of users to return per page (default 10, max 50)
Returns : | non-0 on failure

### flickcurl_photos_getInfo ()

    flickcurl_photo *   flickcurl_photos_getInfo            (flickcurl *fc,
                                                             const char *photo_id);

Get information about a photo

Deprecated for `flickcurl_photos_getInfo2()` that allows passing the optional secret.

`fc` : | flickcurl context
`photo_id` : | photo ID
Returns : | flickcurl_photo or NULL on failure

### flickcurl_photos_getInfo2 ()

    flickcurl_photo *   flickcurl_photos_getInfo2           (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *secret);

Get information about a photo

Implements flickr.photos.getInfo (0.5)

`fc` : | flickcurl context
`photo_id` : | photo ID
`secret` : | secret (or NULL)
Returns : | flickcurl_photo or NULL on failure

### flickcurl_photos_getNotInSet ()

    flickcurl_photo **  flickcurl_photos_getNotInSet        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos that are not part of any sets.

See `flickcurl_photos_getNotInSet_params()` for details of parameters.

Implements flickr.photos.getNotInSet (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL).
`max_taken_date` : | Maximum taken date (or NULL).
`privacy_filter` : | Return photos only matching a certain privacy level. Valid privacy values are: 1 public, 2 friends, 3 family, 4 friends and family, 5 private
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
`per_page` : | Number of photos to return per page (default 100, max 500).
`page` : | The page of results to return (default 1).
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getNotInSet_params ()

    flickcurl_photos_list * flickcurl_photos_getNotInSet_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);

Returns a list of your photos that are not part of any sets.

Currently supported extras fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL).
`max_taken_date` : | Maximum taken date (or NULL).
`privacy_filter` : | Return photos only matching a certain privacy level.
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getPerms ()

    flickcurl_perms *   flickcurl_photos_getPerms           (flickcurl *fc,
                                                             const char *photo_id);

Get permissions for a photo.

Implements flickr.photos.getPerms (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to get permissions for.
Returns : | permissions or NULL on failure

### flickcurl_photos_getRecent ()

    flickcurl_photo **  flickcurl_photos_getRecent          (flickcurl *fc,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of the latest public photos uploaded to flickr.

See `flickcurl_photos_getRecent_params()` for details of parameters.

Implements flickr.photos.getRecent (0.12)

`fc` : | flickcurl context
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
`per_page` : | Number of photos to return per page (default 100, max 500)
`page` : | The page of results to return (default 1)
Returns : | non-0 on failure

### flickcurl_photos_getRecent_params ()

    flickcurl_photos_list * flickcurl_photos_getRecent_params
                                                            (flickcurl *fc,
                                                             flickcurl_photos_list_params *list_params);

Returns a list of the latest public photos uploaded to flickr.

Currently supported extras fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.

Optional extra type 'media' that will return an extra media = VALUE for VALUE "photo" or "video". API addition 2008-04-07.

`fc` : | flickcurl context
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_getSizes ()

    flickcurl_size **   flickcurl_photos_getSizes           (flickcurl *fc,
                                                             const char *photo_id);

Returns the available sizes for a photo. The calling user must have permission to view the photo.

Implements flickr.photos.getSizes (0.13)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to fetch size information for.
Returns : | non-0 on failure

### flickcurl_photos_getUntagged ()

    flickcurl_photo **  flickcurl_photos_getUntagged        (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos with no tags.

See `flickcurl_photos_getUntagged_params()` for details of parameters.

Implements flickr.photos.getUntagged (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL)
`max_taken_date` : | Maximum taken date (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid privacy values are: 1 public, 2 friends, 3 family, 4 friends and family, 5 private
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
`per_page` : | Number of photos to return per page (default 100, max 500).
`page` : | The page of results to return (default 1).
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getUntagged_params ()

    flickcurl_photos_list * flickcurl_photos_getUntagged_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);

Returns a list of your photos with no tags.

Currently supported extras fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date.
`max_upload_date` : | Maximum upload date.
`min_taken_date` : | Minimum taken date (or NULL)
`max_taken_date` : | Maximum taken date (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid privacy values are: 1 public, 2 friends, 3 family, 4 friends and family, 5 private
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | a list of photos or NULL on failure

### flickcurl_photos_getWithGeoData ()

    flickcurl_photo **  flickcurl_photos_getWithGeoData     (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your geo-tagged photos.

See `flickcurl_photos_getWithGeoData_params()` for details of parameters.

Implements flickr.photos.getWithGeoData (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`extras` : | A comma-delimited list of extra information to fetch for each returned record.
`per_page` : | Number of photos to return per page.
`page` : | The page of results to return.
Returns : | non-0 on failure

### flickcurl_photos_getWithGeoData_params ()

    flickcurl_photos_list * flickcurl_photos_getWithGeoData_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);

Returns a list of your geo-tagged photos.

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_getWithoutGeoData ()

    flickcurl_photo **  flickcurl_photos_getWithoutGeoData  (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of your photos which haven't been geo-tagged.

See `flickcurl_photos_getWithoutGeoData_params()` for details of parameters.

Implements flickr.photos.getWithoutGeoData (0.12)

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`extras` : | A comma-delimited list of extra information to fetch for each returned record.
`per_page` : | Number of photos to return per page.
`page` : | The page of results to return.
Returns : | non-0 on failure

### flickcurl_photos_getWithoutGeoData_params ()

    flickcurl_photos_list * flickcurl_photos_getWithoutGeoData_params
                                                            (flickcurl *fc,
                                                             int min_upload_date,
                                                             int max_upload_date,
                                                             const char *min_taken_date,
                                                             const char *max_taken_date,
                                                             int privacy_filter,
                                                             flickcurl_photos_list_params *list_params);

Returns a list of your photos which haven't been geo-tagged.

`fc` : | flickcurl context
`min_upload_date` : | Minimum upload date. Photos with an upload date greater than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`max_upload_date` : | Maximum upload date. Photos with an upload date less than or equal to this value will be returned. The date should be in the form of a unix timestamp. (or NULL)
`min_taken_date` : | Minimum taken date. Photos with an taken date greater than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`max_taken_date` : | Maximum taken date. Photos with an taken date less than or equal to this value will be returned. The date should be in the form of a mysql datetime. (or NULL)
`privacy_filter` : | Return photos only matching a certain privacy level. Valid values are: 1 public photos; 2 private photos visible to friends; 3 private photos visible to family; 4 private photos visible to friends and family; 5 completely private photos. (or NULL)
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_licenses_getInfo ()

    flickcurl_license ** flickcurl_photos_licenses_getInfo  (flickcurl *fc);

Get a list of available photo licenses for Flickr.

Implements flickr.photos.licenses.getInfo (0.6)

`fc` : | flickcurl context
Returns : | an array of flickcurl_license or NULL on failure

### flickcurl_photos_licenses_getInfo_by_id ()

    flickcurl_license * flickcurl_photos_licenses_getInfo_by_id
                                                            (flickcurl *fc,
                                                             int id);

Get an individual photo license by ID

Not part of the Flickr API.

`fc` : | flickcurl context
`id` : | license ID
Returns : | a flickcurl_license or NULL on failure

### flickcurl_photos_licenses_setLicense ()

    int                 flickcurl_photos_licenses_setLicense
                                                            (flickcurl *fc,
                                                             const char *photo_id,
                                                             int license_id);

Sets the license for a photo.

Implements flickr.photos.licenses.setLicense (0.12)

`fc` : | flickcurl context
`photo_id` : | The photo to update the license for.
`license_id` : | The license to apply, or 0 (zero) to remove the current license.
Returns : | non-0 on failure

### flickcurl_photos_notes_add ()

    char *              flickcurl_photos_notes_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);

Add a note to a photo.

Coordinates and sizes are in pixels, based on the 500px image size shown on individual photo pages.

Implements flickr.photos.notes.add (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to add a note to
`note_x` : | The left coordinate of the note
`note_y` : | The top coordinate of the note
`note_w` : | The width of the note
`note_h` : | The height of the note
`note_text` : | The description of the note
Returns : | note ID or NULL on failure

### flickcurl_photos_notes_delete ()

    int                 flickcurl_photos_notes_delete       (flickcurl *fc,
                                                             const char *note_id);

Delete a note from a photo.

Implements flickr.photos.notes.delete (0.12)

`fc` : | flickcurl context
`note_id` : | The id of the note to delete
Returns : | non-0 on failure

### flickcurl_photos_notes_edit ()

    int                 flickcurl_photos_notes_edit         (flickcurl *fc,
                                                             const char *note_id,
                                                             int note_x,
                                                             int note_y,
                                                             int note_w,
                                                             int note_h,
                                                             const char *note_text);

Edit a note on a photo. Coordinates and sizes are in pixels, based on the 500px image size shown on individual photo pages.

Implements flickr.photos.notes.edit (0.12)

`fc` : | flickcurl context
`note_id` : | The id of the note to edit
`note_x` : | The left coordinate of the note
`note_y` : | The top coordinate of the note
`note_w` : | The width of the note
`note_h` : | The height of the note
`note_text` : | The description of the note
Returns : | non-0 on failure

### flickcurl_photos_recentlyUpdated ()

    flickcurl_photo **  flickcurl_photos_recentlyUpdated    (flickcurl *fc,
                                                             int min_date,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Return a list of your photos that have been recently created or which have been recently modified

See `flickcurl_photos_recentlyUpdated()` for details of parameters.

Implements flickr.photos.recentlyUpdated (0.12)

`fc` : | flickcurl context
`min_date` : | A Unix timestamp indicating the date from which modifications should be compared.
`extras` : | A comma-delimited list of extra information to fetch for each returned record (or NULL)
`per_page` : | Number of photos to return per page (default 100, max 500)
`page` : | The page of results to return (default 1)
Returns : | non-0 on failure

### flickcurl_photos_recentlyUpdated_params ()

    flickcurl_photos_list * flickcurl_photos_recentlyUpdated_params
                                                            (flickcurl *fc,
                                                             int min_date,
                                                             flickcurl_photos_list_params *list_params);

Return a list of your photos that have been recently created or which have been recently modified

Recently modified may mean that the photo's metadata (title, description, tags) may have been changed or a comment has been added (or just modified somehow :-)

Currently supported extra fields are: license, date_upload, date_taken, owner_name, icon_server, original_format, last_update, geo, tags, machine_tags.

Optional extra type 'media' that will return an extra media = VALUE for VALUE "photo" or "video". API addition 2008-04-07.

`fc` : | flickcurl context
`min_date` : | A Unix timestamp indicating the date from which modifications should be compared.
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_photos_removeTag ()

    int                 flickcurl_photos_removeTag          (flickcurl *fc,
                                                             const char *tag_id);

Remove a tag from a photo.

The `tag_id` is returned such as from `flickcurl_photos_getInfo()`

Implements flickr.photos.removeTag (0.9)

`fc` : | flickcurl context
`tag_id` : | tag ID to remove from the photo
Returns : | non-0 on failure

### flickcurl_photos_replace ()

    flickcurl_upload_status * flickcurl_photos_replace      (flickcurl *fc,
                                                             const char *photo_file,
                                                             const char *photo_id,
                                                             int async);

Replace a photo with a new file.

Implements Replacing Photos (0.10) Implements Asynchronous Uploading (0.10)

`fc` : | flickcurl context
`photo_file` : | photo filename
`photo_id` : | photo ID to replace
`async` : | upload asynchronously boolean (non-0 true)
Returns : | flickcurl_upload_status or NULL on failure

### flickcurl_photos_search ()

    flickcurl_photo **  flickcurl_photos_search             (flickcurl *fc,
                                                             flickcurl_search_params *params);

Return a list of photos matching some criteria.

Only photos visible to the calling user will be returned. To return private or semi-private photos, the caller must be authenticated with 'read' permissions, and have permission to view the photos. Unauthenticated calls will only return public photos.

Implements flickr.photos.search (0.11)

Flickcurl 1.0: Added place_id for places API as announced 2008-01-11 http://tech.groups.yahoo.com/group/yws-flickr/message/3688

See `flickcurl_photos_search_params()` for details on the the search parameters.

Ensure the `params` object is propertly initialized to zeros/NULLs or use `flickcurl_search_params_init()` to initialize this.

`fc` : | flickcurl context
`params` : | flickcurl_search_params search parameters
Returns : | an array of flickcurl_photo pointers (may be length 0) or NULL on failure

### flickcurl_photos_search_params ()

    flickcurl_photos_list * flickcurl_photos_search_params  (flickcurl *fc,
                                                             flickcurl_search_params *params,
                                                             flickcurl_photos_list_params *list_params);

Return a photos list or raw content matching some criteria.

Only photos visible to the calling user will be returned. To return private or semi-private photos, the caller must be authenticated with 'read' permissions, and have permission to view the photos. Unauthenticated calls will only return public photos.

Ensure the `params` object is propertly initialized to zeros/NULLs or use `flickcurl_search_params_init()` to initialize this.

Flickcurl 1.15; Added in_gallery search parameter as announced 2010-04-08 http://code.flickr.com/blog/2010/04/08/galleries-apis/

Flickcurl 1.14: Added geo_context and is_commons search parameters to flickcurl_search_params. Added more extras to docs.

Flickcurl 1.6: Added `list_params` beyond `flickcurl_photos_search()` to allow returning raw content if `list_params` is present and field `format` is not NULL as announced 2008-08-25 http://code.flickr.com/blog/2008/08/25/api-responses-as-feeds/

NOTE: The `params` fields: extras, per_page and page are ignored - the values are taken from the `list_params` fields.

Flickcurl 1.0: Added place_id for places API as announced 2008-01-11 http://tech.groups.yahoo.com/group/yws-flickr/message/3688

Optional parameter "media" that defaults to "all" but can also be set to "photos" or "videos" to filter results by media type. API addition 2008-04-07.

Optional parameter "has_geo" for any photo that has been geotagged. As announced 2008-06-27 http://tech.groups.yahoo.com/group/yws-flickr/message/4146

Optional parameters "lat", "lon", "radius" and "radius_units" added for doing radial geo queries from point (lat, lon) within radius/radius_units. radius_units default is "km". As announced 2008-06-27 http://tech.groups.yahoo.com/group/yws-flickr/message/4146

(Experimental) Optional parameter "contacts" requires requires that the "user_id" field also is set. Valid values are "all" or "ff" for just friends and family. As announced 2008-06-30 http://tech.groups.yahoo.com/group/yws-flickr/message/4162

`fc` : | flickcurl context
`params` : | flickcurl_search_params search parameters
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | a photos list or NULL

### flickcurl_search_params

    typedef struct {
      char* user_id;
      char* tags;
      char* tag_mode;
      char* text;
      int min_upload_date;
      int max_upload_date;
      char* min_taken_date;
      char* max_taken_date;
      char* license;
      char* sort;
      char* privacy_filter;
      char* bbox;
      int accuracy;
      int safe_search;
      int content_type;
      char* machine_tags;
      char* machine_tag_mode;
      char* group_id;
      char* extras;
      int per_page;
      int page;
      char* place_id;
      char* media;
      int has_geo;
      double lat;
      double lon;
      double radius;
      char* radius_units;
      char* contacts;
      int woe_id;
      int geo_context;
      int is_commons;
      int in_gallery;
    } flickcurl_search_params;

Search parameters for `flickcurl_photos_search()`

char *`user_id`; | The NSID of the user who's photo to search (or "me" or NULL).
char *`tags`; | A comma-delimited list of tags (or NULL)
char *`tag_mode`; | Either 'any' for an OR combination of tags, or 'all' for an AND combination. Defaults to 'any' if not specified (or NULL)
char *`text`; | Free text search (or NULL)
int `min_upload_date`; | Minimum upload date as a unix timestamp (or 0)
int `max_upload_date`; | Maximum upload date as a unix timestamp (or 0)
char *`min_taken_date`; | Minimum taken date in the form of a mysql datetime (or NULL)
char *`max_taken_date`; | Maximum taken date in the form of a mysql datetime (or NULL)
char *`license`; | Comma-separated list of photo licenses (or NULL)
char *`sort`; | The order in which to sort returned photos. Defaults to date-posted-desc. The possible values are: date-posted-asc, date-posted-desc, date-taken-asc, date-taken-desc, interestingness-desc, interestingness-asc, and relevance (or NULL)
char *`privacy_filter`; | Return photos only matching a certain privacy level.
char *`bbox`; | A comma-delimited list of 4 values defining the Bounding Box of the area that will be searched.
int `accuracy`; | Recorded accuracy level of the location information. Current range is 1-16
int `safe_search`; | Safe search setting: 1 safe, 2 moderate, 3 restricted (or 0).
int `content_type`; | Content Type setting: 1 for photos only, 2 for screenshots only, 3 for 'other' only, 4 for all types. (or 0)
char *`machine_tags`; | Machine tag search syntax
char *`machine_tag_mode`; | Either 'any' for an OR combination of tags, or 'all' for an AND combination. Defaults to 'any' if not specified.
char *`group_id`; | The id of a group who's pool to search. If specified, only matching photos posted to the group's pool will be returned. (or NULL)
char *`extras`; | A comma-delimited list of extra information to fetch for each returned record. Currently supported fields are: `license`, `date_upload`, `date_taken`, `owner_name`, `icon_server`, `original_format`, `last_update`, `geo`, `tags`, `machine_tags`, `o_dims`, `views`, `media`, `path_alias`, `url_sq`, `url_t`, `url_s`, `url_m`, `url_o`. (or NULL)
int `per_page`; | Number of photos to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500. (or 0)
int `page`; | The page of results to return. If this argument is omitted, it defaults to 1. (or 0)

char *`place_id`;

A Flickr place id. (only used if bbox argument isn't present). Experimental. Geo queries require some sort of limiting agent in order to prevent the database from crying. This is basically like the check against "parameterless searches" for queries without a geo component. A tag, for instance, is considered a limiting agent as are user defined min_date_taken and min_date_upload parameters - If no limiting factor is passed we return only photos added in the last 12 hours (though we may extend the limit in the future) (or NULL)

char *`media`; | "photos" or "videos" (or NULL)
int `has_geo`; | non-0 if a photo has been geotagged (or 0)
double `lat`; | A valid latitude, in decimal format, for doing radial geo queries (or ignored if radius is 0.0)
double `lon`; | A valid longitude, in decimal format, for doing radial geo queries (or ignored if radius is 0.0)
double `radius`; | A valid radius used for geo queries, greater than zero and less than 20 miles (or 32 kilometers), for use with point-based geo queries. The default value is 5 (km) (or 0.0 for not used)
char *`radius_units`; | The unit of measure when doing radial geo queries. Valid options are "mi" (miles) and "km" (kilometers). The default is "km" (or NULL)
char *`contacts`; | (Experimental) Requires `user_id` field be set and limits queries to photos beloing to that user's photos. Valid arguments are 'all' or 'ff' for just friends and family.
int `woe_id`; | A 32-bit identifier that uniquely represents spatial entities. (not used if bbox argument is present). Same restrictions as `place_id` (or 0)
int `geo_context`; | A numeric value representing the photo's geotagginess beyond latitude and longitude. The current list of context IDs is 0: not defined, 1: indoors and 2: outdoors. Geo queries require some sort of limiting agent in order to prevent the database from crying (or 0)
int `is_commons`; | Limit the scope of the search to only photos that are part of the Flickr Commons project. Default is false (or 0)
int `in_gallery`; | Limit the scope of the search to only photos that are in a gallery. Default is false, search all photos.

### flickcurl_search_params_init ()

    int                 flickcurl_search_params_init        (flickcurl_search_params *params);

Initialise an existing search parameters structure

`params` : | search params to init
Returns : | non-0 on failure

### flickcurl_photos_setContentType ()

    int                 flickcurl_photos_setContentType     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int content_type);

Set the content type of a photo.

Implements flickr.photos.setContentType (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set the adultness of.
`content_type` : | The content type of the photo: 1 for Photo, 2 for Screenshot, and 3 for Other.
Returns : | non-0 on failure

### flickcurl_photos_setDates ()

    int                 flickcurl_photos_setDates           (flickcurl *fc,
                                                             const char *photo_id,
                                                             int date_posted,
                                                             int date_taken,
                                                             int date_taken_granularity);

Set one or both of the dates for a photo.

Implements flickr.photos.setDates (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to edit dates for.
`date_posted` : | The date the photo was uploaded to flickr as a unix time (or -1)
`date_taken` : | The date the photo was taken as a unix time (or -1)
`date_taken_granularity` : | The granularity of the date the photo was taken: 0 second, 4 month, 6 year (or -1)
Returns : | non-0 on failure

### flickcurl_photos_setMeta ()

    int                 flickcurl_photos_setMeta            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *title,
                                                             const char *description);

Set the meta information for a photo.

Implements flickr.photos.setMeta (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set information for.
`title` : | The title for the photo.
`description` : | The description for the photo.
Returns : | non-0 on failure

### flickcurl_photos_setPerms ()

    int                 flickcurl_photos_setPerms           (flickcurl *fc,
                                                             const char *photo_id,
                                                             flickcurl_perms *perms);

Set permissions for a photo.

Implements flickr.photos.setPerms (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set permissions for.
`perms` : | The flickcurl_perms photo permissions
Returns : | non-0 on failure

### flickcurl_photos_setSafetyLevel ()

    int                 flickcurl_photos_setSafetyLevel     (flickcurl *fc,
                                                             const char *photo_id,
                                                             int safety_level,
                                                             int hidden);

Set the safety level of a photo.

Implements flickr.photos.setSafetyLevel (0.11)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to set the adultness of.
`safety_level` : | The safety level of the photo. 1 for Safe, 2 for Moderate, and 3 for Restricted (or <0 for no change)
`hidden` : | >0 to hide the photo from public searches. 0 to not. <0 for no change.
Returns : | non-0 on failure

### flickcurl_photos_setTags ()

    int                 flickcurl_photos_setTags            (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *tags);

Set the tags for a photo.

Note that this replaces all existing tags with the `tags` here.

Implements flickr.photos.setTags (0.9)

`fc` : | flickcurl context
`photo_id` : | photo ID
`tags` : | all tags for the photo as a space-separated list
Returns : | non-0 on failure

### flickcurl_photos_transform_rotate ()

    int                 flickcurl_photos_transform_rotate   (flickcurl *fc,
                                                             const char *photo_id,
                                                             int degrees);

Rotate a photo.

Implements flickr.photos.transform.rotate (0.13)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to rotate.
`degrees` : | The amount of degrees by which to rotate the photo (clockwise) from it's current orientation. Valid values are 90, 180 and 270.
Returns : | non-0 on failure

### flickcurl_photos_upload_checkTickets ()

    flickcurl_ticket ** flickcurl_photos_upload_checkTickets
                                                            (flickcurl *fc,
                                                             const char **tickets_ids);

Checks the status of one or more asynchronous photo upload tickets.

Implements flickr.photos.upload.checkTickets (0.13)

`fc` : | flickcurl context
`tickets_ids` : | Array of ticket ids
Returns : | non-0 on failure

### flickcurl_photos_upload_params ()

    flickcurl_upload_status * flickcurl_photos_upload_params
                                                            (flickcurl *fc,
                                                             flickcurl_upload_params *params);

Uploads a photo with safety level and content type

`fc` : | flickcurl context
`params` : | upload parameters
Returns : | flickcurl_upload_status or NULL on failure