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.

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']))

FAQ