Debbugs' SOAP Interface Documentation
This documentation will likely always be slightly behind the extant documentation in the Debbugs::SOAP module. However, feel free to update it when they begin to differ.
Please help to keep this documentation up to date!
URL and Namespace
http://bugs.debian.org/cgi-bin/soap.cgi is the official SOAP interface for Debian's BTS.
http://bugs.donarmstrong.com/cgi-bin/soap.cgi is the development version.
The namespace is Debbugs/SOAP
Available methods for bugs.debian.org
http://bugs.debian.org/debbugs-source/mainline/Debbugs/SOAP.pm
- get_status(bugnumber [, bugnumber]*)
- returns the status of the given bugs
- get_bugs(key, value[, key, value]*)
- returns bugs that match the conditions given by key-value pair.
- get_usertag(email [, tag]*)
- returns bugs tagged by the email. All of them, or only those tagged with the selected tags, if tags are explicitly given.
- get_bug_log(bugnumber)
- returns the whole bug log, divided in headers and bodies.
- newest_bugs(amount)
- returns a list of the newest bugs.
Available methods for bugs.donarmstrong.com
Examples
Perl
use warnings; use strict; use Data::Dumper; use SOAP::Lite; my $soap = SOAP::Lite->uri('Debbugs/SOAP')->proxy('http://bugs.debian.org/cgi-bin/soap.cgi'); print Dumper($soap->get_bugs(package=>debbugs)->result()); print Dumper($soap->get_status(bug=>400000)->result()); print Dumper($soap->get_status(bug=>400000)->result()); # et al.
# get all the bugs tagged with a certain usertag for a package use SOAP::Lite; use Data::Dumper; my $c = new SOAP::Lite->uri('/Debbugs/SOAP')->proxy('http://bugs.debian.org/cgi-bin/soap.cgi'); my $usertags = my $usertags = $c->get_usertag('debian-qa@lists.debian.org')->result(); my $bugs = $c->get_bugs(usertags=>$usertags,tag=>'qa-ftbfs-20070708',package=>'tilp')->result(); print Dumper($bugs);
# get all bugs for a given usertag and then select the bug for a # certain package. Same as above probably a bit faster at times. # $inf will contain all information about the bug such as # subject, tags, severity ... use SOAP::Lite; use Data::Dumper; my $c = new SOAP::Lite->uri('/Debbugs/SOAP')->proxy('http://bugs.debian.org/cgi-bin/soap.cgi'); my $bugs = $c->get_usertag('debian-qa@lists.debian.org','qa-ftbfs-20070708')->result; my $bug = $c->get_bugs('bugs', $bugs->{'qa-ftbfs-20070708'}, 'package', 'tilp')->result; my $inf = $c->get_status($bug)->result; print Dumper($inf);
Python
1 #!/usr/bin/env python
2
3
4 import SOAPpy
5
6 url = 'http://bugs.debian.org/cgi-bin/soap.cgi'
7 namespace = 'Debbugs/SOAP'
8 server = SOAPpy.SOAPProxy(url, namespace)
9
10 # some debug output
11 #server.config.dumpSOAPOut = 1
12 #server.config.dumpSOAPIn = 1
13
14
15 def getStatus(*args):
16 result = server.get_status(*args)
17 return result
18
19 def getBugs(*args):
20 result = server.get_bugs(*args)
21 return result
22
23 # All bugs from one package (returns a list of bugnumbers)
24 print getBugs("package", "gtk-qt-engine")
25
26 # returns the status of those bugs
27 print getStatus(409909, 419920, 421581, 417044, 397993)
28
29 # getStatus and getBugs combined:
30 getStatus(getBugs("package", "gtk-qt-engine"))
Ruby
require 'soap/rpc/driver' host = "bugs.debian.org" port = 80 server="http://#{host}:#{port}/cgi-bin/soap.cgi" ns = 'Debbugs/SOAP/' drv = SOAP::RPC::Driver.new(server, ns) drv.wiredump_dev = STDOUT if $DEBUG drv.add_method('get_status','bugnumber') drv.add_method('get_bugs','keyparam') p drv.get_status(drv.get_bugs(['package', 'pbuilder', 'severity', 'wishlist']))