# -*- Mode: perl; indent-tabs-mode: nil -*- # # The contents of this file are subject to the Mozilla Public # License Version 1.1 (the "License"); you may not use this file # except in compliance with the License. You may obtain a copy of # the License at http://www.mozilla.org/MPL/ # # Software distributed under the License is distributed on an "AS # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or # implied. See the License for the specific language governing # rights and limitations under the License. # # The Original Code is the Bugzilla Bug Tracking System. # # Contributor(s): # Carole Pryfer <carole.pryfer@dgfip.finances.gouv.fr> package Bugzilla::WebService::Group; use strict; use base qw(Bugzilla::WebService); use Bugzilla::Constants; use Bugzilla::Error; sub create { my ($self, $params) = @_; Bugzilla->login(LOGIN_REQUIRED); Bugzilla->user->in_group('creategroups') || ThrowUserError("auth_failure", { group => "creategroups", action => "add", object => "group"}); # Create group my $group = Bugzilla::Group->create({ name => $params->{name}, description => $params->{description}, userregexp => $params->{user_regexp}, isactive => $params->{is_active}, isbuggroup => 1, icon_url => $params->{icon_url} }); return { id => $self->type('int', $group->id) }; } 1; __END__ =head1 NAME Bugzilla::Webservice::Group - The API for creating, changing, and getting information about Groups. =head1 DESCRIPTION This part of the Bugzilla API allows you to create Groups and get information about them. =head1 METHODS See L<Bugzilla::WebService> for a description of how parameters are passed, and what B<STABLE>, B<UNSTABLE>, and B<EXPERIMENTAL> mean. Although the data input and output is the same for JSONRPC, XMLRPC and REST, the directions for how to access the data via REST is noted in each method where applicable. =head1 Group Creation =head2 create B<UNSTABLE> =over =item B<Description> This allows you to create a new group in Bugzilla. =item B<REST> POST /group The params to include in the POST body as well as the returned data format, are the same as below. =item B<Params> Some params must be set, or an error will be thrown. These params are marked B<Required>. =over =item C<name> B<Required> C<string> A short name for this group. Must be unique. This is not usually displayed in the user interface, except in a few places. =item C<description> B<Required> C<string> A human-readable name for this group. Should be relatively short. This is what will normally appear in the UI as the name of the group. =item C<user_regexp> C<string> A regular expression. Any user whose Bugzilla username matches this regular expression will automatically be granted membership in this group. =item C<is_active> C<boolean> C<True> if new group can be used for bugs, C<False> if this is a group that will only contain users and no bugs will be restricted to it. =item C<icon_url> C<string> A URL pointing to a small icon used to identify the group. This icon will show up next to users' names in various parts of Bugzilla if they are in this group. =back =item B<Returns> A hash with one element, C<id>. This is the id of the newly-created group. =item B<Errors> =over =item 800 (Empty Group Name) You must specify a value for the C<name> field. =item 801 (Group Exists) There is already another group with the same C<name>. =item 802 (Group Missing Description) You must specify a value for the C<description> field. =item 803 (Group Regexp Invalid) You specified an invalid regular expression in the C<user_regexp> field. =back =item B<History> =over =item REST API call added in Bugzilla B<5.0>. =back =back =cut