aboutsummaryrefslogtreecommitdiffstats
path: root/Bugzilla/WebService/Product.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Bugzilla/WebService/Product.pm')
-rw-r--r--Bugzilla/WebService/Product.pm115
1 files changed, 115 insertions, 0 deletions
diff --git a/Bugzilla/WebService/Product.pm b/Bugzilla/WebService/Product.pm
index b25226a45..74beb5b33 100644
--- a/Bugzilla/WebService/Product.pm
+++ b/Bugzilla/WebService/Product.pm
@@ -21,6 +21,9 @@ use strict;
use base qw(Bugzilla::WebService);
use Bugzilla::Product;
use Bugzilla::User;
+use Bugzilla::Error;
+use Bugzilla::Constants;
+use Bugzilla::WebService::Constants;
use Bugzilla::WebService::Util qw(validate);
use constant READ_ONLY => qw(
@@ -79,6 +82,28 @@ sub get {
return { products => \@products };
}
+sub create {
+ my ($self, $params) = @_;
+
+ Bugzilla->login(LOGIN_REQUIRED);
+ Bugzilla->user->in_group('editcomponents')
+ || ThrowUserError("auth_failure", { group => "editcomponents",
+ action => "add",
+ object => "products"});
+ # Create product
+ my $product = Bugzilla::Product->create({
+ allows_unconfirmed => $params->{has_unconfirmed},
+ classification => $params->{classification},
+ name => $params->{name},
+ description => $params->{description},
+ version => $params->{version},
+ defaultmilestone => $params->{default_milestone},
+ isactive => $params->{is_open},
+ create_series => $params->{create_series}
+ });
+ return { id => $self->type('int', $product->id) };
+}
+
1;
__END__
@@ -198,3 +223,93 @@ is returned.
=item B<Errors> (none)
=back
+
+=head1 Product Creation
+
+=head2 create
+
+B<EXPERIMENTAL>
+
+=over
+
+=item B<Description>
+
+This allows you to create a new product in Bugzilla.
+
+=item B<Params>
+
+Some params must be set, or an error will be thrown. These params are marked Required.
+
+=over
+
+=item C<name>
+
+B<Required> C<string> The name of this product. Must be unique.
+
+=item C<description>
+
+B<Required> C<string> A description for this product. Allows some simple HTML.
+
+=item C<version>
+
+B<Required> C<string> The default version for this product.
+
+=item C<has_unconfirmed>
+
+C<boolean> Allows unconfirmed bugs in the product.
+
+=item C<classification>
+
+C<boolean> Classification wich contains the product.
+
+=item C<default_milestone>
+
+C<boolean> The default milestone of this product.
+
+=item C<is_open>
+
+C<boolean> True if the product is currently allowing bugs to be entered into it.
+
+=item C<create_series>
+
+C<boolean> Set if series are creating for the new product.
+
+=back
+
+=item B<Returns>
+
+A hash with one element, id. This is the id of the newly-filed product.
+
+=item B<Errors>
+
+=over
+
+=item 700 (Product blank name)
+
+You must specify a non blank name for this product.
+
+=item 701 (Product name too long)
+
+The name specified for this product was longer than the maximum allowed length.
+
+=item 702 (Product name already exists)
+
+You specified the name of a product that already exists. (Product names must be globally unique in Bugzilla.)
+
+=item 703 (Product must have description)
+
+You must specify a description for this product.
+
+=item 704 (Product must have version)
+
+You must specify a version for this product.
+
+=item 705 (Product must define a defaut milestone)
+
+You must define a default milestone.
+
+=back
+
+=back
+
+=cut