# Flickcurl: Flickr API coverage

## Dave Beckett

This page summarizes the Flickr API calls that are supported by Flickcurl. API calls are marked as follows as supported or unsupported.

Current Flickr API coverage by Flickcurl: 90.4% (188/208)

## Flickr API

### Photo Upload API

- Uploading Photos (0.10): `POST` to http://api.flickr.com/services/upload/
- Replacing Photos (0.10): `POST` to http://api.flickr.com/services/replace/
- Asynchronous Uploading (0.10): synchronous `POST` upload with async=1 then use `flickr.photos.upload.checkTickets` to check it has completed

### activity

- flickr.activity.userComments (1.0)
- flickr.activity.userPhotos (1.0)

### auth

- flickr.auth.checkToken (0.9)
- flickr.auth.getFrob (0.9)
- flickr.auth.getFullToken (0.5)
- flickr.auth.getToken (0.9)

### auth.oauth

- flickr.auth.oauth.checkToken
- flickr.auth.oauth.getAccessToken (1.23)

### blogs

- flickr.blogs.getList (1.0)
- flickr.blogs.getServices (1.12)
- flickr.blogs.postPhoto (1.0)

### cameras

- flickr.cameras.getBrandModels
- flickr.cameras.getBrands

### collections

- flickr.collections.getInfo (1.12)
- flickr.collections.getTree (1.12)

### commons

- flickr.commons.getInstitutions (1.8)

### contacts

- flickr.contacts.getList (0.11)
- flickr.contacts.getListRecentlyUploaded (1.8)
- flickr.contacts.getPublicList (0.11)
- flickr.contacts.getTaggingSuggestions (1.25)

### favorites

- flickr.favorites.add (1.0)
- flickr.favorites.getContext (1.22)
- flickr.favorites.getList (1.0)
- flickr.favorites.getPublicList (1.0)
- flickr.favorites.remove (1.0)

### galleries

- flickr.galleries.addPhoto (1.17)
- flickr.galleries.create (1.18)
- flickr.galleries.editMeta (1.18)
- flickr.galleries.editPhoto (1.18)
- flickr.galleries.editPhotos (1.18)
- flickr.galleries.getInfo (1.18)
- flickr.galleries.getList (1.17)
- flickr.galleries.getListForPhoto (1.17)
- flickr.galleries.getPhotos (1.18)

### groups

- flickr.groups.browse (0.13)
- flickr.groups.getInfo (0.13)
- flickr.groups.join (1.25)
- flickr.groups.joinRequest (1.25)
- flickr.groups.leave (1.25)
- flickr.groups.search (0.13)

### groups.discuss.replies

- flickr.groups.discuss.replies.add
- flickr.groups.discuss.replies.delete
- flickr.groups.discuss.replies.edit
- flickr.groups.discuss.replies.getInfo
- flickr.groups.discuss.replies.getList

### groups.discuss.topics

- flickr.groups.discuss.topics.add
- flickr.groups.discuss.topics.getInfo
- flickr.groups.discuss.topics.getList

### groups.members

- flickr.groups.members.getList (1.9)

### groups.pools

- flickr.groups.pools.add (0.12)
- flickr.groups.pools.getContext (0.7)
- flickr.groups.pools.getGroups (0.12)
- flickr.groups.pools.getPhotos (0.12)
- flickr.groups.pools.remove (0.12)

### interestingness

- flickr.interestingness.getList (0.13)

### machinetags

- flickr.machinetags.getNamespaces (1.7)
- flickr.machinetags.getPairs (1.7)
- flickr.machinetags.getPredicates (1.7)
- flickr.machinetags.getValues (1.7)
- flickr.machinetags.getRecentValues (1.12)

### panda

- flickr.panda.getPhotos (1.9)
- flickr.panda.getList (1.9)

### people

- flickr.people.findByEmail (0.8)
- flickr.people.findByUsername (0.8)
- flickr.people.getGroups (1.25)
- flickr.people.getInfo (0.6)
- flickr.people.getPhotos (1.18)
- flickr.people.getPhotosOf (1.17)
- flickr.people.getPublicGroups (0.13)
- flickr.people.getPublicPhotos (0.12)
- flickr.people.getUploadStatus (0.13)

### photos

- flickr.photos.addTags (0.9)
- flickr.photos.delete (0.9)
- flickr.photos.getAllContexts (0.7)
- flickr.photos.getContactsPhotos (0.11)
- flickr.photos.getContactsPublicPhotos (0.12)
- flickr.photos.getContext (0.7)
- flickr.photos.getCounts (0.13)
- flickr.photos.getExif (0.12)
- flickr.photos.getFavorites (0.12)
- flickr.photos.getInfo (0.5)
- flickr.photos.getNotInSet (0.12)
- flickr.photos.getPerms (0.11)
- flickr.photos.getRecent (0.12)
- flickr.photos.getSizes (0.13)
- flickr.photos.getUntagged (0.12)
- flickr.photos.getWithGeoData (0.12)
- flickr.photos.getWithoutGeoData (0.12)
- flickr.photos.recentlyUpdated (0.12)
- flickr.photos.removeTag (0.9)
- flickr.photos.search (0.11)
- flickr.photos.setContentType (0.11)
- flickr.photos.setDates (0.11)
- flickr.photos.setMeta (0.11)
- flickr.photos.setPerms (0.11)
- flickr.photos.setSafetyLevel (0.11)
- flickr.photos.setTags (0.9)

### photos.comments

- flickr.photos.comments.addComment (0.10)
- flickr.photos.comments.deleteComment (0.10)
- flickr.photos.comments.editComment (0.10)
- flickr.photos.comments.getList (0.10)
- flickr.photos.comments.getRecentForContacts (1.12)

### photos.geo

- flickr.photos.geo.batchCorrectLocation (1.8)
- flickr.photos.geo.correctLocation (1.8)
- flickr.photos.geo.getLocation (0.12)
- flickr.photos.geo.getPerms (0.12)
- flickr.photos.geo.photosForLocation (1.8)
- flickr.photos.geo.removeLocation (0.12)
- flickr.photos.geo.setContext (1.8)
- flickr.photos.geo.setLocation (0.12)
- flickr.photos.geo.setPerms (0.12)

### photos.licenses

- flickr.photos.licenses.getInfo (0.6)
- flickr.photos.licenses.setLicense (0.12)

### photos.notes

- flickr.photos.notes.add (0.12)
- flickr.photos.notes.delete (0.12)
- flickr.photos.notes.edit (0.12)

### photos.people

- flickr.photos.people.add (1.17)
- flickr.photos.people.delete (1.17)
- flickr.photos.people.deleteCoords (1.17)
- flickr.photos.people.editCoords (1.17)
- flickr.photos.people.getList (1.17)

### photos.suggestions

- flickr.photos.suggestions.approveSuggestion
- flickr.photos.suggestions.getList
- flickr.photos.suggestions.rejectSuggestion
- flickr.photos.suggestions.removeSuggestion
- flickr.photos.suggestions.suggestLocation

### photos.transform

- flickr.photos.transform.rotate (0.13)

### photos.upload

- flickr.photos.upload.checkTickets (0.13)

### photosets

- flickr.photosets.addPhoto (0.13)
- flickr.photosets.create (0.13)
- flickr.photosets.delete (0.13)
- flickr.photosets.editMeta (0.13)
- flickr.photosets.editPhotos (0.13)
- flickr.photosets.getContext (0.7)
- flickr.photosets.getInfo (0.13)
- flickr.photosets.getList (0.13)
- flickr.photosets.getPhotos (0.13)
- flickr.photosets.orderSets (0.13)
- flickr.photosets.removePhoto (0.13)
- flickr.photosets.removePhotos (1.19)
- flickr.photosets.reorderPhotos (1.19)
- flickr.photosets.setPrimaryPhoto (1.19)

### photosets.comments

- flickr.photosets.comments.addComment (0.10)
- flickr.photosets.comments.deleteComment (0.10)
- flickr.photosets.comments.editComment (0.10)
- flickr.photosets.comments.getList (0.10)

### places

- flickr.places.find (1.1)
- flickr.places.findByLatLon (1.1)
- flickr.places.getChildrenWithPhotosPublic (1.7)
- flickr.places.getInfo (1.7)
- flickr.places.getInfoByUrl (1.7)
- flickr.places.getPlaceTypes (1.8)
- flickr.places.getShapeHistory (1.8)
- flickr.places.getTopPlacesList (1.12)
- flickr.places.placesForBoundingBox (1.8)
- flickr.places.placesForContacts (1.8)
- flickr.places.placesForTags (1.8)
- flickr.places.placesForUser (1.6)
- flickr.places.resolvePlaceId (1.0)
- flickr.places.resolvePlaceURL (1.0)
- flickr.places.tagsForPlace (1.8)

### prefs

- flickr.prefs.getContentType (1.3)
- flickr.prefs.getGeoPerms (1.4)
- flickr.prefs.getHidden (1.3)
- flickr.prefs.getPrivacy (1.3)
- flickr.prefs.getSafetyLevel (1.3)

### push

- flickr.push.getSubscriptions
- flickr.push.getTopics
- flickr.push.subscribe
- flickr.push.unsubscribe

### reflection

- flickr.reflection.getMethodInfo (0.10)
- flickr.reflection.getMethods (0.10)

### stats

- flickr.stats.getCollectionDomains (1.17)
- flickr.stats.getCollectionReferrers (1.17)
- flickr.stats.getCollectionStats (1.17)
- flickr.stats.getCSVFiles (1.19)
- flickr.stats.getPhotoDomains (1.17)
- flickr.stats.getPhotoReferrers (1.17)
- flickr.stats.getPhotosetDomains (1.17)
- flickr.stats.getPhotosetReferrers (1.17)
- flickr.stats.getPhotosetStats (1.17)
- flickr.stats.getPhotoStats (1.17)
- flickr.stats.getPhotostreamDomains (1.17)
- flickr.stats.getPhotostreamReferrers (1.17)
- flickr.stats.getPhotostreamStats (1.17)
- flickr.stats.getPopularPhotos (1.17)
- flickr.stats.getTotalViews (1.17)

### tags

- flickr.tags.getClusterPhotos (1.7)
- flickr.tags.getClusters (1.5)
- flickr.tags.getHotList (0.9)
- flickr.tags.getListPhoto (0.9)
- flickr.tags.getListUser (0.9)
- flickr.tags.getListUserPopular (0.9)
- flickr.tags.getListUserRaw (0.9)
- flickr.tags.getMostFrequentlyUsed (1.25)
- flickr.tags.getRelated (0.9)

### test

- flickr.test.echo (0.5)
- flickr.test.login (1.0)
- flickr.test.null (1.0)

### urls

- flickr.urls.getGroup (0.9)
- flickr.urls.getUserPhotos (0.9)
- flickr.urls.getUserProfile (0.9)
- flickr.urls.lookupGallery (1.18)
- flickr.urls.lookupGroup (0.9)
- flickr.urls.lookupUser (0.6)

## Changes

1.25: flickr.contacts.getTaggingSuggestions, flickr.groups.join, flickr.groups.joinRequest, flickr.groups.leave, flickr.people.getGroups, flickr.tags.getMostFrequentlyUsed (6 new)

    flickcurl_contact** flickcurl_contacts_getTaggingSuggestions(flickcurl* fc, const char* include_self, const char* include_address_book, int page, int per_page);
    int flickcurl_groups_join(flickcurl* fc, const char* group_id, const char* accept_rules);
    int flickcurl_groups_joinRequest(flickcurl* fc, const char* group_id, const char* message, const char* accept_rules);
    int flickcurl_groups_leave(flickcurl* fc, const char* group_id, const char* delete_photos);
    flickcurl_group** flickcurl_people_getGroups(flickcurl* fc, const char* user_id, const char* extras);
    flickcurl_tag** flickcurl_tags_getMostFrequentlyUsed(flickcurl* fc);

1.23: flickr.auth.oauth.getAccessToken (1 new)

    int flickcurl_auth_oauth_getAccessToken(flickcurl* fc);

1.22: flickr.favorites.getContext (1 new)

    flickcurl_photos_list** flickcurl_favorites_getContext(flickcurl* fc, const char* photo_id, const char* user_id, int num_prev, int num_next, const char* extras);

1.19: flickr.photosets.removePhotos, flickr.photosets.reorderPhotos, flickr.photosets.setPrimaryPhoto, flickr.stats.getCSVFiles (4 new)

    int flickcurl_photosets_removePhotos(flickcurl* fc, const char* photoset_id, const char** photo_ids_array);
    int flickcurl_photosets_reorderPhotos(flickcurl* fc, const char* photoset_id, const char** photo_ids_array);
    int flickcurl_photosets_setPrimaryPhoto(flickcurl* fc, const char* photoset_id, const char* photo_id);
    int flickcurl_stats_getCSVFiles(flickcurl* fc);

1.18: flickr.galleries.create, flickr.galleries.editMeta, flickr.galleries.editPhoto, flickr.galleries.editPhotos, flickr.galleries.getInfo, flickr.galleries.getPhotos, flickr.people.getPhotos, flickr.urls.lookupGallery (8 new)

    char* flickcurl_galleries_create(flickcurl* fc, const char* title, const char* description, const char* primary_photo_id, char** gallery_url_p);
    int flickcurl_galleries_editMeta(flickcurl* fc, const char* gallery_id, const char* title, const char* description);
    int flickcurl_galleries_editPhoto(flickcurl* fc, const char* gallery_id, const char* photo_id, const char* new_comment);
    int flickcurl_galleries_editPhotos(flickcurl* fc, const char* gallery_id, const char* primary_photo_id, const char** photo_ids_array);
    flickcurl_gallery* flickcurl_galleries_getInfo(flickcurl* fc, const char* gallery_id);
    flickcurl_photo** flickcurl_galleries_getPhotos(flickcurl* fc, const char* gallery_id, const char* extras, int per_page, int page);
    flickcurl_photo** flickcurl_people_getPhotos(flickcurl* fc, const char* user_id, int safe_search, const char* min_upload_date, const char* max_upload_date, const char* min_taken_date, const char* max_taken_date, int content_type, int privacy_filter, const char* extras, int per_page, int page);
    char* flickcurl_urls_lookupGallery(flickcurl* fc, const char* url);

1.17: flickr.galleries.addPhoto, flickr.galleries.getList, flickr.galleries.getListForPhoto, flickr.people.getPhotosOf, flickr.photos.people.add, flickr.photos.people.delete, flickr.photos.people.deleteCoords, flickr.photos.people.editCoords, flickr.photos.people.getList, flickr.stats.getCollectionDomains, flickr.stats.getCollectionReferrers, flickr.stats.getCollectionStats, flickr.stats.getPhotoDomains, flickr.stats.getPhotoReferrers, flickr.stats.getPhotosetDomains, flickr.stats.getPhotosetReferrers, flickr.stats.getPhotosetStats, flickr.stats.getPhotoStats, flickr.stats.getPhotostreamDomains, flickr.stats.getPhotostreamReferrers, flickr.stats.getPhotostreamStats, flickr.stats.getPopularPhotos, flickr.stats.getTotalViews (23 new)

    int flickcurl_galleries_addPhoto(flickcurl* fc, const char* gallery_id, const char* photo_id, const char* comment_text);
    flickcurl_gallery** flickcurl_galleries_getList(flickcurl* fc, const char* user_id, int per_page, int page);
    flickcurl_gallery** flickcurl_galleries_getListForPhoto(flickcurl* fc, const char* photo_id, int per_page, int page);
    flickcurl_photo** flickcurl_people_getPhotosOf(flickcurl* fc, const char* user_id, const char* extras, int per_page, int page);
    int flickcurl_photos_people_add(flickcurl* fc, const char* photo_id, const char* user_id, int person_x, int person_y, int person_w, int person_h);
    int flickcurl_photos_people_delete(flickcurl* fc, const char* photo_id, const char* user_id);
    int flickcurl_photos_people_deleteCoords(flickcurl* fc, const char* photo_id, const char* user_id);
    int flickcurl_photos_people_editCoords(flickcurl* fc, const char* photo_id, const char* user_id, int person_x, int person_y, int person_w, int person_h);
    flickcurl_person** flickcurl_photos_people_getList(flickcurl* fc, const char* photo_id);
    flickcurl_stat** flickcurl_stats_getCollectionDomains(flickcurl* fc, const char* date, const char* collection_id, int per_page, int page);
    flickcurl_stat** flickcurl_stats_getCollectionReferrers(flickcurl* fc, const char* date, const char* domain, const char* collection_id, int per_page, int page);
    int flickcurl_stats_getCollectionStats(flickcurl* fc, const char* date, const char* collection_id);
    flickcurl_stat** flickcurl_stats_getPhotoDomains(flickcurl* fc, const char* date, const char* photo_id, int per_page, int page);
    flickcurl_stat** flickcurl_stats_getPhotoReferrers(flickcurl* fc, const char* date, const char* domain, const char* photo_id, int per_page, int page);
    flickcurl_stat** flickcurl_stats_getPhotosetDomains(flickcurl* fc, const char* date, const char* photoset_id, int per_page, int page);
    flickcurl_stat** flickcurl_stats_getPhotosetReferrers(flickcurl* fc, const char* date, const char* domain, const char* photoset_id, int per_page, int page);
    int flickcurl_stats_getPhotosetStats(flickcurl* fc, const char* date, const char* photoset_id);
    flickcurl_stat* flickcurl_stats_getPhotoStats(flickcurl* fc, const char* date, const char* photo_id);
    flickcurl_stat** flickcurl_stats_getPhotostreamDomains(flickcurl* fc, const char* date, int per_page, int page);
    flickcurl_stat** flickcurl_stats_getPhotostreamReferrers(flickcurl* fc, const char* date, const char* domain, int per_page, int page);
    int flickcurl_stats_getPhotostreamStats(flickcurl* fc, const char* date);
    flickcurl_photo** flickcurl_stats_getPopularPhotos(flickcurl* fc, const char* date, const char* sort, int per_page, int page, const char* extras);
    flickcurl_view_stats* flickcurl_stats_getTotalViews(flickcurl* fc, const char* date);

1.12: flickr.blogs.getServices, flickr.collections.getInfo, flickr.collections.getTree, flickr.machinetags.getRecentValues, flickr.photos.comments.getRecentForContacts, flickr.places.getTopPlacesList (6 new)

    flickcurl_blog_service** flickcurl_blogs_getServices(flickcurl* fc);
    flickcurl_collection* flickcurl_collections_getInfo(flickcurl* fc, const char* collection_id);
    flickcurl_collection* flickcurl_collections_getTree(flickcurl* fc, const char* collection_id, const char* user_id);
    flickcurl_tag_predicate_value** flickcurl_machinetags_getRecentValues(flickcurl* fc, const char *nspace, const char* predicate, int added_since);
    flickcurl_photos_list* flickcurl_photos_comments_getRecentForContacts_params(flickcurl* fc, int date_lastcomment, const char* contacts_filter, flickcurl_photos_list_params* list_params);
    flickcurl_place** flickcurl_places_getTopPlacesList(flickcurl* fc, flickcurl_place_type place_type, const char* date, int woe_id, const char* place_id);

1.9: flickr.groups.members.getList, flickr.panda.getList, flickr.panda.getPhotos (3 new)

    flickcurl_member** flickcurl_groups_members_getList(flickcurl* fc, const char* group_id, const char* membertypes, int per_page, int page);
    char** flickcurl_panda_getList(flickcurl* fc);
    flickcurl_photo** flickcurl_panda_getPhotos(flickcurl *fc, const char *panda_name);

1.8: flickr.commons.getInstitutions, flickr.contacts.getListRecentlyUploaded, flickr.photos.geo.batchCorrectLocation, flickr.photos.geo.correctLocation, flickr.photos.geo.photosForLocation, flickr.photos.geo.setContext, flickr.places.getPlaceTypes, flickr.places.getShapeHistory, flickr.places.placesForBoundingBox, flickr.places.placesForContacts, flickr.places.placesForTags, flickr.places.tagsForPlace (12 new)

    flickcurl_institution** flickcurl_commons_getInstitutions(flickcurl* fc);
    flickcurl_contact** flickcurl_contacts_getListRecentlyUploaded(flickcurl* fc, int date_lastupload, const char* filter);
    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_photo** flickcurl_photos_geo_photosForLocation(flickcurl* fc, flickcurl_location* location, const char* extras, int per_page, int page);
    int flickcurl_photos_geo_setContext(flickcurl* fc, const char* photo_id, int context);
    flickcurl_place_type_info** flickcurl_places_getPlaceTypes(flickcurl* fc);
    flickcurl_shapedata** flickcurl_places_getShapeHistory(flickcurl* fc, const char* place_id, int woe_id);
    flickcurl_place** flickcurl_places_placesForBoundingBox(flickcurl* fc, flickcurl_place_type place_type, double minimum_longitude, double minimum_latitude, double maximum_longitude, double maximum_latitude);
    flickcurl_place** flickcurl_places_placesForContacts(flickcurl* fc, flickcurl_place_type place_type, int woe_id, const char* place_id, int threshold, const char* contacts, int min_upload_date, int max_upload_date, int min_taken_date, int max_taken_date);
    int flickcurl_places_placesForTags(flickcurl* fc, flickcurl_place_type place_type, int woe_id, const char* place_id, const char* threshold, const char* tags, const char* tag_mode, const char* machine_tags, const char* machine_tag_mode, const char* min_upload_date, const char* max_upload_date, const char* min_taken_date, const char* max_taken_date);
    flickcurl_tag** flickcurl_places_tagsForPlace(flickcurl* fc, int woe_id, const char* place_id, int min_upload_date, int max_upload_date, int min_taken_date, int max_taken_date);

1.7: flickr.machinetags.getNamespaces, flickr.machinetags.getPairs, flickr.machinetags.getPredicates, flickr.machinetags.getValues, flickr.places.getChildrenWithPhotosPublic, flickr.places.getInfo, flickr.places.getInfoByUrl, flickr.tags.getClusterPhotos (8 new)

    flickcurl_tag_namespace** flickcurl_machinetags_getNamespaces(flickcurl* fc, const char* predicate, int per_page, int page);
    flickcurl_tag_predicate_value** flickcurl_machinetags_getPairs(flickcurl* fc, const char *nspace, const char* predicate, int per_page, int page);
    flickcurl_tag_predicate_value** flickcurl_machinetags_getPredicates(flickcurl* fc, const char *nspace, int per_page, int page);
    flickcurl_tag_predicate_value** flickcurl_machinetags_getValues(flickcurl* fc, const char *nspace, const char* predicate, int per_page, int page);
    flickcurl_place** flickcurl_places_getChildrenWithPhotosPublic(flickcurl* fc, const char* place_id, const char* woe_id);
    flickcurl_place* flickcurl_places_getInfo(flickcurl* fc, const char* place_id, const char* woe_id);
    flickcurl_place* flickcurl_places_getInfoByUrl(flickcurl* fc, const char* url);
    flickcurl_photos_list* flickcurl_tags_getClusterPhotos(flickcurl* fc, const char* tag, const char* cluster_id, flickcurl_photos_list_params* list_params);

1.6: flickr.places.placesForUser (1 new)

    flickcurl_place** flickcurl_places_placesForUser(flickcurl* fc, flickcurl_place_type place_type, int woe_id, const char* place_id, int threshold);

1.5: flickr.tags.getClusters (1 new)

    flickcurl_tag_clusters* flickcurl_tags_getClusters(flickcurl* fc, const char* tag);

1.4: flickr.prefs.getGeoPerms (1 new)

    int flickcurl_prefs_getGeoPerms(flickcurl* fc);

1.3: flickr.prefs.getContentType, flickr.prefs.getHidden, flickr.prefs.getPrivacy, flickr.prefs.getSafetyLevel (4 new)

    int flickcurl_prefs_getContentType(flickcurl* fc);
    int flickcurl_prefs_getHidden(flickcurl* fc);
    int flickcurl_prefs_getPrivacy(flickcurl* fc);
    int flickcurl_prefs_getSafetyLevel(flickcurl* fc);

1.1: flickr.places.find, flickr.places.findByLatLon (2 new)

    flickcurl_place** flickcurl_places_find(flickcurl* fc, const char* query);
    flickcurl_place* flickcurl_places_findByLatLon(flickcurl* fc, double lat, double lon, int accuracy);

1.0: flickr.activity.userComments, flickr.activity.userPhotos, flickr.blogs.getList, flickr.blogs.postPhoto, flickr.favorites.add, flickr.favorites.getList, flickr.favorites.getPublicList, flickr.favorites.remove, flickr.places.resolvePlaceId, flickr.places.resolvePlaceURL, flickr.test.login, flickr.test.null (12 new)

    flickcurl_activity** flickcurl_activity_userComments(flickcurl* fc, int per_page, int page);
    flickcurl_activity** flickcurl_activity_userPhotos(flickcurl* fc, const char* timeframe, int per_page, int page);
    flickcurl_blog** flickcurl_blogs_getList(flickcurl* fc);
    int flickcurl_blogs_postPhoto(flickcurl* fc, const char* blog_id, const char* photo_id, const char* title, const char* description, const char* blog_password);
    int flickcurl_favorites_add(flickcurl* fc, const char* photo_id);
    flickcurl_photos_list* flickcurl_favorites_getList_params(flickcurl* fc, const char* user_id, flickcurl_photos_list_params* list_params);
    flickcurl_photos_list* flickcurl_favorites_getPublicList_params(flickcurl* fc, const char* user_id, flickcurl_photos_list_params* list_params);
    int flickcurl_favorites_remove(flickcurl* fc, const char* photo_id);
    flickcurl_place* flickcurl_places_resolvePlaceId(flickcurl* fc, const char* place_id);
    flickcurl_place* flickcurl_places_resolvePlaceURL(flickcurl* fc, const char* url);
    char* flickcurl_test_login(flickcurl* fc);
    int flickcurl_test_null(flickcurl* fc);

0.13: flickr.groups.browse, flickr.groups.getInfo, flickr.groups.search, flickr.interestingness.getList, flickr.people.getPublicGroups, flickr.people.getUploadStatus, flickr.photos.getCounts, flickr.photos.getSizes, flickr.photos.transform.rotate, flickr.photos.upload.checkTickets, flickr.photosets.addPhoto, flickr.photosets.create, flickr.photosets.delete, flickr.photosets.editMeta, flickr.photosets.editPhotos, flickr.photosets.getInfo, flickr.photosets.getList, flickr.photosets.getPhotos, flickr.photosets.orderSets, flickr.photosets.removePhoto (20 new)

    flickcurl_category* flickcurl_groups_browse(flickcurl* fc, int cat_id);
    flickcurl_group* flickcurl_groups_getInfo(flickcurl* fc, const char* group_id, const char* lang);
    flickcurl_group** flickcurl_groups_search(flickcurl* fc, const char* text, int per_page, int page);
    flickcurl_photos_list* flickcurl_interestingness_getList_params(flickcurl* fc, const char* date, flickcurl_photos_list_params* list_params);
    flickcurl_group** flickcurl_people_getPublicGroups(flickcurl* fc, const char* user_id);
    flickcurl_user_upload_status* flickcurl_people_getUploadStatus(flickcurl* fc);
    int** flickcurl_photos_getCounts(flickcurl* fc, const char** dates_array, const char** taken_dates_array);
    flickcurl_size** flickcurl_photos_getSizes(flickcurl* fc, const char* photo_id);
    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);
    int flickcurl_photosets_addPhoto(flickcurl* fc, const char* photoset_id, const char* photo_id);
    char* flickcurl_photosets_create(flickcurl* fc, const char* title, const char* description, const char* primary_photo_id, char** photoset_url_p);
    int flickcurl_photosets_delete(flickcurl* fc, const char* photoset_id);
    int flickcurl_photosets_editMeta(flickcurl* fc, const char* photoset_id, const char* title, const char* description);
    int flickcurl_photosets_editPhotos(flickcurl* fc, const char* photoset_id, const char* primary_photo_id, const char** photo_ids_array);
    flickcurl_photoset* flickcurl_photosets_getInfo(flickcurl* fc, const char* photoset_id);
    flickcurl_photoset** flickcurl_photosets_getList(flickcurl* fc, const char* user_id);
    flickcurl_photos_list* flickcurl_photosets_getPhotos_params(flickcurl* fc, const char* photoset_id, int privacy_filter, flickcurl_photos_list_params* list_params);
    int flickcurl_photosets_orderSets(flickcurl* fc, const char** photoset_ids_array);
    int flickcurl_photosets_removePhoto(flickcurl* fc, const char* photoset_id, const char* photo_id);

0.12: flickr.groups.pools.add, flickr.groups.pools.getGroups, flickr.groups.pools.getPhotos, flickr.groups.pools.remove, flickr.people.getPublicPhotos, flickr.photos.getContactsPublicPhotos, flickr.photos.getExif, flickr.photos.getFavorites, flickr.photos.getNotInSet, flickr.photos.getRecent, flickr.photos.getUntagged, flickr.photos.getWithGeoData, flickr.photos.getWithoutGeoData, flickr.photos.recentlyUpdated, flickr.photos.geo.getLocation, flickr.photos.geo.getPerms, flickr.photos.geo.removeLocation, flickr.photos.geo.setLocation, flickr.photos.geo.setPerms, flickr.photos.licenses.setLicense, flickr.photos.notes.add, flickr.photos.notes.delete, flickr.photos.notes.edit (23 new)

    int flickcurl_groups_pools_add(flickcurl* fc, const char* photo_id, const char* group_id);
    flickcurl_group** flickcurl_groups_pools_getGroups(flickcurl* fc, int page, int per_page);
    flickcurl_photos_list* flickcurl_groups_pools_getPhotos_params(flickcurl* fc, const char* group_id, const char* tags, const char* user_id, flickcurl_photos_list_params* list_params);
    int flickcurl_groups_pools_remove(flickcurl* fc, const char* photo_id, const char* group_id);
    flickcurl_photos_list* flickcurl_people_getPublicPhotos_params(flickcurl* fc, const char* user_id,  flickcurl_photos_list_params* list_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);
    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_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_photos_list* flickcurl_photos_getRecent_params(flickcurl* fc, flickcurl_photos_list_params* list_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);
    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_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_photos_list* flickcurl_photos_recentlyUpdated_params(flickcurl* fc, int min_date, flickcurl_photos_list_params* list_params);
    flickcurl_location* flickcurl_photos_geo_getLocation(flickcurl* fc, const char* photo_id);
    flickcurl_perms* flickcurl_photos_geo_getPerms(flickcurl* fc, const char* photo_id);
    int flickcurl_photos_geo_removeLocation(flickcurl* fc, const char* photo_id);
    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);
    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);

0.11: flickr.contacts.getList, flickr.contacts.getPublicList, flickr.photos.getContactsPhotos, flickr.photos.getPerms, flickr.photos.search, flickr.photos.setContentType, flickr.photos.setDates, flickr.photos.setMeta, flickr.photos.setPerms, flickr.photos.setSafetyLevel (10 new)

    flickcurl_contact** flickcurl_contacts_getList(flickcurl* fc, const char* filter, int page, int per_page);
    flickcurl_contact** flickcurl_contacts_getPublicList(flickcurl* fc, const char* user_id, int page, int per_page);
    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_perms* flickcurl_photos_getPerms(flickcurl* fc, const char* photo_id);
    flickcurl_photos_list* flickcurl_photos_search_params(flickcurl* fc, flickcurl_search_params* params, flickcurl_photos_list_params* list_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);

0.10: flickr.photos.comments.addComment, flickr.photos.comments.deleteComment, flickr.photos.comments.editComment, flickr.photos.comments.getList, flickr.photosets.comments.addComment, flickr.photosets.comments.deleteComment, flickr.photosets.comments.editComment, flickr.photosets.comments.getList, flickr.reflection.getMethods, flickr.reflection.getMethodInfo, Uploading Photos, Replacing Photos, Asynchronous Uploading (13 new)

    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);
    char* flickcurl_photosets_comments_addComment(flickcurl* fc, const char* photoset_id, const char* comment_text);
    int flickcurl_photosets_comments_deleteComment(flickcurl* fc, const char* comment_id);
    int flickcurl_photosets_comments_editComment(flickcurl* fc, const char* comment_id, const char* comment_text);
    flickcurl_comment** flickcurl_photosets_comments_getList(flickcurl* fc, const char* photoset_id);
    char** flickcurl_reflection_getMethods(flickcurl* fc);
    flickcurl_method* flickcurl_reflection_getMethodInfo(flickcurl* fc, const char* name);

0.9: flickr.auth.checkToken, flickr.auth.getFrob, flickr.auth.getToken, flickr.photos.addTags, flickr.photos.delete, flickr.photos.removeTag, flickr.photos.setTags, flickr.tags.getHotList, flickr.tags.getListPhoto, flickr.tags.getListUser, flickr.tags.getListUserPopular, flickr.tags.getListUserRaw, flickr.tags.getRelated, flickr.urls.getGroup, flickr.urls.getUserPhotos, flickr.urls.getUserProfile, flickr.urls.lookupGroup (17 new)

    char* flickcurl_auth_checkToken(flickcurl* fc, const char* token);
    char* flickcurl_auth_getFrob(flickcurl* fc);
    char* flickcurl_auth_getToken(flickcurl* fc, const char* frob);
    int flickcurl_photos_addTags(flickcurl* fc, const char* photo_id, const char* tags);
    int flickcurl_photos_delete(flickcurl* fc, const char* photo_id);
    int flickcurl_photos_removeTag(flickcurl* fc, const char* tag_id);
    int flickcurl_photos_setTags(flickcurl* fc, const char* photo_id, const char* tags);
    flickcurl_tag** flickcurl_tags_getHotList(flickcurl* fc, const char* period, int tag_count);
    flickcurl_tag** flickcurl_tags_getListPhoto(flickcurl* fc, const char* photo_id);
    flickcurl_tag** flickcurl_tags_getListUser(flickcurl* fc, const char* user_id);
    flickcurl_tag** flickcurl_tags_getListUserPopular(flickcurl* fc, const char* user_id, int pop_count);
    flickcurl_tag** flickcurl_tags_getListUserRaw(flickcurl* fc, const char* tag);
    flickcurl_tag** flickcurl_tags_getRelated(flickcurl* fc, const char* tag);
    char* flickcurl_urls_getGroup(flickcurl* fc, const char* group_id);
    char* flickcurl_urls_getUserPhotos(flickcurl* fc, const char* user_id);
    char* flickcurl_urls_getUserProfile(flickcurl* fc, const char* user_id);
    char* flickcurl_urls_lookupGroup(flickcurl* fc, const char* url);

0.8: flickr.people.findByEmail, flickr.people.findByUsername (2 new)

    char* flickcurl_people_findByEmail(flickcurl* fc, const char* email);
    char* flickcurl_people_findByUsername(flickcurl* fc, const char* username);

0.7: flickr.groups.pools.getContext, flickr.photos.getAllContexts, flickr.photos.getContext, flickr.photosets.getContext (4 new)

    flickcurl_context** flickcurl_groups_pools_getContext(flickcurl* fc, const char* photo_id, const char* group_id);
    flickcurl_context** flickcurl_photos_getAllContexts(flickcurl* fc, const char* photo_id);
    flickcurl_context** flickcurl_photos_getContext(flickcurl* fc, const char* photo_id);
    flickcurl_context** flickcurl_photosets_getContext(flickcurl* fc, const char* photo_id, const char* photoset_id);

0.6: flickr.people.getInfo, flickr.photos.licenses.getInfo, flickr.urls.lookupUser (3 new)

    flickcurl_person* flickcurl_people_getInfo(flickcurl* fc, const char* user_id);
    flickcurl_license** flickcurl_photos_licenses_getInfo(flickcurl *fc);
    char* flickcurl_urls_lookupUser(flickcurl* fc, const char* url);

0.5: flickr.auth.getFullToken, flickr.photos.getInfo, flickr.test.echo (3 new)

    char* flickcurl_auth_getFullToken(flickcurl* fc, const char* frob);
    flickcurl_photo* flickcurl_photos_getInfo(flickcurl *fc, const char* photo_id);
    int flickcurl_test_echo(flickcurl* fc, const char* key, const char* value);

Copyright (C) 2007-2011 Dave Beckett