## Groups

Groups — Groups of users.

## Synopsis

                        flickcurl_group;
    void                flickcurl_free_group                (flickcurl_group *group);
    void                flickcurl_free_groups               (flickcurl_group **groups_object);
    flickcurl_category * flickcurl_groups_browse            (flickcurl *fc,
                                                             int cat_id);
    flickcurl_group *   flickcurl_groups_getInfo            (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *lang);
    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_member;
    void                flickcurl_free_member               (flickcurl_member *member_object);
    void                flickcurl_free_members              (flickcurl_member **members_object);
    flickcurl_member ** flickcurl_groups_members_getList    (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *membertypes,
                                                             int per_page,
                                                             int page);
    int                 flickcurl_groups_pools_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *group_id);
    flickcurl_context ** flickcurl_groups_pools_getContext  (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *group_id);
    flickcurl_group **  flickcurl_groups_pools_getGroups    (flickcurl *fc,
                                                             int page,
                                                             int per_page);
    flickcurl_photo **  flickcurl_groups_pools_getPhotos    (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *tags,
                                                             const char *user_id,
                                                             const char *extras,
                                                             int per_page,
                                                             int 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_group **  flickcurl_groups_search             (flickcurl *fc,
                                                             const char *text,
                                                             int per_page,
                                                             int page);

## Description

Groups of users.

## Details

### flickcurl_group

    typedef struct {
      char* nsid;
      char* name;
      char* description;
      char* lang;
      int is_admin;
      int is_pool_moderated;
      int is_eighteenplus;
      int privacy;
      int photos;
      int iconserver;
      int members;
      int throttle_count;
      char* throttle_mode;
      int throttle_remaining;
      int iconfarm;
      int is_moderator;
      int is_member;
      char* rules;
      int pool_count;
      int topic_count;
      int photos_ok;
      int videos_ok;
      int images_ok;
      int screens_ok;
      int art_ok;
      int safe_ok;
      int moderate_ok;
      int restricted_ok;
      int has_geo;
    } flickcurl_group;

A group.

char *`nsid`; | NSID
char *`name`; | Group Name
char *`description`; | Description
char *`lang`; | Language
int `is_admin`; | user is a group admin
int `is_pool_moderated`; | is the pool moderated
int `is_eighteenplus`; | NOT USED (will always be 0)
int `privacy`; | privacy level
int `photos`; | photos in group count
int `iconserver`; | icon server ID
int `members`; | member count
int `throttle_count`; | throttle count
char *`throttle_mode`; | throttle mode (day, ...)
int `throttle_remaining`; | throttle remaining
int `iconfarm`; | icon farm ID
int `is_moderator`; | user is a moderator
int `is_member`; | user is a member
char *`rules`; | group rules
int `pool_count`; | pool count
int `topic_count`; | topic count
int `photos_ok`; | photos are ok
int `videos_ok`; | videos are ok
int `images_ok`; | images are ok
int `screens_ok`; | screens are ok
int `art_ok`; | art is ok
int `safe_ok`; | safe content is ok
int `moderate_ok`; | moderate content is ok
int `restricted_ok`; | restricted content is ok
int `has_geo`; | has geolocation

### flickcurl_free_group ()

    void                flickcurl_free_group                (flickcurl_group *group);

Destructor for group object

`group` : | group object

### flickcurl_free_groups ()

    void                flickcurl_free_groups               (flickcurl_group **groups_object);

Destructor for array of group object

`groups_object` : | group object array

### flickcurl_groups_browse ()

    flickcurl_category * flickcurl_groups_browse            (flickcurl *fc,
                                                             int cat_id);

Browse the group category tree, finding groups and sub-categories.

Implements flickr.groups.browse (0.13)

`fc` : | flickcurl context
`cat_id` : | The category id to fetch a list of groups and sub-categories for. If not specified, it defaults to zero, the root of the category tree. (or NULL)
Returns : | non-0 on failure

### flickcurl_groups_getInfo ()

    flickcurl_group *   flickcurl_groups_getInfo            (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *lang);

Get information about a group.

Implements flickr.groups.getInfo (0.13)

`fc` : | flickcurl context
`group_id` : | The NSID of the group to fetch information for.
`lang` : | The language of the group name and description to fetch. If the language is not found, the primary language of the group will be returned (or NULL)
Returns : | non-0 on failure

### flickcurl_groups_join ()

    int                 flickcurl_groups_join               (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *accept_rules);

Join a public group as a member.

Implements flickr.groups.join (1.25)

`fc` : | flickcurl context
`group_id` : | The NSID of the Group in question
`accept_rules` : | If the group has rules, they must be displayed to the user prior to joining. Passing a true value for this argument specifies that the application has displayed the group rules to the user, and that the user has agreed to them. (See flickr.groups.getInfo). Probably takes a '1' or '0' value (or NULL)
Returns : | non-0 on failure

### flickcurl_groups_joinRequest ()

    int                 flickcurl_groups_joinRequest        (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *message,
                                                             const char *accept_rules);

Request to join a group that is invitation-only.

Implements flickr.groups.joinRequest (1.25)

`fc` : | flickcurl context
`group_id` : | The NSID of the group to request joining.
`message` : | Message to the administrators.
`accept_rules` : | If the group has rules, they must be displayed to the user prior to joining. Passing a true value for this argument specifies that the application has displayed the group rules to the user, and that the user has agreed to them. (See flickr.groups.getInfo). Probably takes a '1' or '0' value.
Returns : | non-0 on failure

### flickcurl_groups_leave ()

    int                 flickcurl_groups_leave              (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *delete_photos);

Leave a group.

If the user is the only administrator left, and there are other members, the oldest member will be promoted to administrator.

If the user is the last person in the group, the group will be deleted.

Implements flickr.groups.leave (1.25)

`fc` : | flickcurl context
`group_id` : | The NSID of the Group to leave
`delete_photos` : | Delete all photos by this user from the group. Probably takes a '1' or '0' value (or NULL)
Returns : | non-0 on failure

### flickcurl_member

    typedef struct {
      char *nsid;
      char *username;
      int iconserver;
      int iconfarm;
      int member_type;
    } flickcurl_member;

Member in a group

char *`nsid`; | NSID
char *`username`; | User name
int `iconserver`; | icon server
int `iconfarm`; | icon farm
int `member_type`; | member type - 1: narwhal, 2: member, 3: moderator 4: admin

### flickcurl_free_member ()

    void                flickcurl_free_member               (flickcurl_member *member_object);

Destructor for member object

`member_object` : | member object

### flickcurl_free_members ()

    void                flickcurl_free_members              (flickcurl_member **members_object);

Destructor for array of member object

`members_object` : | member object array

### flickcurl_groups_members_getList ()

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

Get a list of the members of a group.

The call must be signed on behalf of a Flickr member, and the ability to see the group membership will be determined by the Flickr member's group privileges.

Implements flickr.groups.members.getList (1.9) as announced as an experimental API on 2009-02-24: http://tech.groups.yahoo.com/group/yws-flickr/message/4749

`fc` : | flickcurl context
`group_id` : | Return a list of members for this group. The group must be viewable by the Flickr member on whose behalf the API call is made.
`membertypes` : | Comma separated list of member types: 2: member, 3: moderator 4: admin. By default returns all types. (Returning super rare member type "1: narwhal" isn't supported by this API method) (or NULL)
`per_page` : | Number of members to return per page. If this argument is omitted, it defaults to 100. The maximum allowed value is 500 (or < 0)
`page` : | The page of results to return. If this argument is omitted, it defaults to 1 (or < 0)
Returns : | list of members or NULL on failure

### flickcurl_groups_pools_add ()

    int                 flickcurl_groups_pools_add          (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *group_id);

Add a photo to a group's pool.

Implements flickr.groups.pools.add (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to add to the group pool.
`group_id` : | The NSID of the group who's pool the photo is to be added to.
Returns : | non-0 on failure

### flickcurl_groups_pools_getContext ()

    flickcurl_context ** flickcurl_groups_pools_getContext  (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *group_id);

Get next and previous photos for a photo in a group pool.

Implements flickr.groups.pools.getContext (0.7)

`fc` : | flickcurl context
`photo_id` : | photo ID
`group_id` : | group ID
Returns : | an array of size 3 [prev, next, NULL] flickcurl_context* or NULL on error

### flickcurl_groups_pools_getGroups ()

    flickcurl_group **  flickcurl_groups_pools_getGroups    (flickcurl *fc,
                                                             int page,
                                                             int per_page);

Returns a list of groups to which you can add photos.

Implements flickr.groups.pools.getGroups (0.12)

`fc` : | flickcurl context
`page` : | The page of results to return (default 1)
`per_page` : | Number of groups to return per page (default 400, max 400)
Returns : | non-0 on failure

### flickcurl_groups_pools_getPhotos ()

    flickcurl_photo **  flickcurl_groups_pools_getPhotos    (flickcurl *fc,
                                                             const char *group_id,
                                                             const char *tags,
                                                             const char *user_id,
                                                             const char *extras,
                                                             int per_page,
                                                             int page);

Returns a list of pool photos for a given group.

See `flickcurl_groups_pools_getPhotos_params()` for details of the fields.

Implements flickr.groups.pools.getPhotos (0.12)

`fc` : | flickcurl context
`group_id` : | The id of the group who's pool you which to get the photo list for.
`tags` : | A tag to filter the pool with. At the moment only one tag at a time is supported. (or NULL)
`user_id` : | The nsid of a user (or NULL). If given, retrieves only photos that the user has contributed to the group pool.
`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_groups_pools_getPhotos_params ()

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

Returns a list of pool photos for a given group.

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

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

`fc` : | flickcurl context
`group_id` : | The id of the group who's pool you which to get the photo list for.
`tags` : | A tag to filter the pool with. At the moment only one tag at a time is supported. (or NULL)
`user_id` : | The nsid of a user (or NULL). If given, retrieves only photos that the user has contributed to the group pool.
`list_params` : | flickcurl_photos_list_params result parameters (or NULL)
Returns : | non-0 on failure

### flickcurl_groups_pools_remove ()

    int                 flickcurl_groups_pools_remove       (flickcurl *fc,
                                                             const char *photo_id,
                                                             const char *group_id);

Remove a photo from a group pool.

Implements flickr.groups.pools.remove (0.12)

`fc` : | flickcurl context
`photo_id` : | The id of the photo to remove from the group pool.
`group_id` : | The NSID of the group who's pool the photo is to removed from.
Returns : | non-0 on failure

### flickcurl_groups_search ()

    flickcurl_group **  flickcurl_groups_search             (flickcurl *fc,
                                                             const char *text,
                                                             int per_page,
                                                             int page);

Search for groups. 18+ groups will only be returned for authenticated calls where the authenticated user is over 18.

Implements flickr.groups.search (0.13)

`fc` : | flickcurl context
`text` : | The text to search for.
`per_page` : | Number of groups to return per page, default 100, max 500 (or NULL)
`page` : | The page of results to return, default 1 (or NULL)
Returns : | non-0 on failure