## section-photo

section-photo

## Functions

void | flickcurl_free_photo ()
void | flickcurl_free_photos ()
const char * | flickcurl_get_photo_field_label ()
char * | flickcurl_photo_as_page_uri ()
char * | flickcurl_photo_as_short_uri ()
char * | flickcurl_photo_as_source_uri ()
char * | flickcurl_photo_as_user_icon_uri ()
char * | flickcurl_photo_id_as_short_uri ()
char * | flickcurl_source_uri_as_photo_id ()
int | flickcurl_photos_addTags ()
char * | flickcurl_photos_comments_addComment ()
int | flickcurl_photos_comments_deleteComment ()
int | flickcurl_photos_comments_editComment ()
flickcurl_comment ** | flickcurl_photos_comments_getList ()
flickcurl_photos_list * | flickcurl_photos_comments_getRecentForContacts_params ()
int | flickcurl_photos_delete ()
int | flickcurl_photos_geo_batchCorrectLocation ()
int | flickcurl_photos_geo_correctLocation ()
flickcurl_location * | flickcurl_photos_geo_getLocation ()
flickcurl_perms * | flickcurl_photos_geo_getPerms ()
flickcurl_photo ** | flickcurl_photos_geo_photosForLocation ()
flickcurl_photos_list * | flickcurl_photos_geo_photosForLocation_params ()
int | flickcurl_photos_geo_removeLocation ()
int | flickcurl_photos_geo_setContext ()
int | flickcurl_photos_geo_setLocation ()
int | flickcurl_photos_geo_setPerms ()
flickcurl_context ** | flickcurl_photos_getAllContexts ()
flickcurl_photo ** | flickcurl_photos_getContactsPhotos ()
flickcurl_photos_list * | flickcurl_photos_getContactsPhotos_params ()
flickcurl_photo ** | flickcurl_photos_getContactsPublicPhotos ()
flickcurl_photos_list * | flickcurl_photos_getContactsPublicPhotos_params ()
flickcurl_context ** | flickcurl_photos_getContext ()
int ** | flickcurl_photos_getCounts ()
flickcurl_exif ** | flickcurl_photos_getExif ()
flickcurl_person ** | flickcurl_photos_getFavorites ()
flickcurl_photo * | flickcurl_photos_getInfo ()
flickcurl_photo * | flickcurl_photos_getInfo2 ()
flickcurl_photo ** | flickcurl_photos_getNotInSet ()
flickcurl_photos_list * | flickcurl_photos_getNotInSet_params ()
flickcurl_perms * | flickcurl_photos_getPerms ()
flickcurl_photo ** | flickcurl_photos_getRecent ()
flickcurl_photos_list * | flickcurl_photos_getRecent_params ()
flickcurl_size ** | flickcurl_photos_getSizes ()
flickcurl_photo ** | flickcurl_photos_getUntagged ()
flickcurl_photos_list * | flickcurl_photos_getUntagged_params ()
flickcurl_photo ** | flickcurl_photos_getWithGeoData ()
flickcurl_photos_list * | flickcurl_photos_getWithGeoData_params ()
flickcurl_photo ** | flickcurl_photos_getWithoutGeoData ()
flickcurl_photos_list * | flickcurl_photos_getWithoutGeoData_params ()
flickcurl_license ** | flickcurl_photos_licenses_getInfo ()
flickcurl_license * | flickcurl_photos_licenses_getInfo_by_id ()
int | flickcurl_photos_licenses_setLicense ()
char * | flickcurl_photos_notes_add ()
int | flickcurl_photos_notes_delete ()
int | flickcurl_photos_notes_edit ()
flickcurl_photo ** | flickcurl_photos_recentlyUpdated ()
flickcurl_photos_list * | flickcurl_photos_recentlyUpdated_params ()
int | flickcurl_photos_removeTag ()
flickcurl_upload_status * | flickcurl_photos_replace ()
flickcurl_photo ** | flickcurl_photos_search ()
flickcurl_photos_list * | flickcurl_photos_search_params ()
int | flickcurl_search_params_init ()
int | flickcurl_photos_setContentType ()
int | flickcurl_photos_setDates ()
int | flickcurl_photos_setMeta ()
int | flickcurl_photos_setPerms ()
int | flickcurl_photos_setSafetyLevel ()
int | flickcurl_photos_setTags ()
int | flickcurl_photos_transform_rotate ()
flickcurl_ticket ** | flickcurl_photos_upload_checkTickets ()
flickcurl_upload_status * | flickcurl_photos_upload_params ()

## Types and Values

| flickcurl_photo
| flickcurl_photo_field
enum | flickcurl_photo_field_type
enum | flickcurl_field_value_type
| flickcurl_search_params

## Description

## Functions

### flickcurl_free_photo ()

    void
    flickcurl_free_photo (flickcurl_photo *photo);

Destructor for photo object

#### Parameters

photo | photo object |

### flickcurl_free_photos ()

    void
    flickcurl_free_photos (flickcurl_photo **photos);

Destructor for array of photo objects

#### Parameters

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.

#### Parameters

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

#### Parameters

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/

#### Parameters

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

#### Parameters

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

#### Parameters

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/

#### Parameters

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}

#### Parameters

uri | source uri |

#### Returns

new photo ID string or NULL on failure

### 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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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.

#### Parameters

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

#### Parameters

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

#### Parameters

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)

#### Parameters

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)

#### Parameters

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);

`flickcurl_photos_getInfo` is deprecated and should not be used in newly-written code.

Get information about a photo

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

#### Parameters

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)

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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.

#### Parameters

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)

#### Parameters

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)

#### Parameters

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.

#### Parameters

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

#### Parameters

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_init ()

    int
    flickcurl_search_params_init (flickcurl_search_params *params);

Initialise an existing search parameters structure

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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)

#### Parameters

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);

`flickcurl_photos_upload_params` is deprecated and should not be used in newly-written code.

Uploads a photo with safety level and content type

#### Parameters

fc | flickcurl context |
params | upload parameters |

#### Returns

flickcurl_upload_status or NULL on failure

## Types and Values

### 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.

#### Members

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_photo_field

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

Field of a photo structure

#### Members

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

Fields of a flickcurl_photo*

#### Members

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

Field data types

#### Members

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_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()`

#### Members

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. |