summaryrefslogtreecommitdiff
path: root/docs/api.md
blob: 04026d853da721f38993d665288aa982d0df08cd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# The XML-RPC API

Patchwork provides an XML-RPC API. This API can be used to be used to retrieve
and modify information about patches, projects and more.

**NOTE:** The XML-RPC API can be enabled/disabled by the administrator: it may
not be available in every instance.

## Patchwork API Documentation

Patchwork provides automatically generated documentation for the XML-RPC API.
You can find this at the following URL:

    http://patchwork.example.com/xmlrpc/

Where `patchwork.example.com` refers to the URL of your patchwork instance.

**NOTE:** Automatic documentation generation for the patchwork API was
introduced in Patchwork v1.1. Prior versions of Patchwork do not offer this
functionality.

## Developing Your Own Client

You need to connect to the server. Some methods require authentication (via
HTTP Basic Auth) while others do not. Authentication uses your patchwork
account and the on-server documention will indicate where it is necessary.
We will only cover the unauthenticated method here for brevity - please
consult the [`xmlrpclib`] documentation for more detailed examples:

    from __future__ import print_function
    import sys
    import xmlrpclib

    url = 'http://patchwork.example.org/xmlrpc/'

    try:
        rpc = xmlrpclib.ServerProxy(url)
    except:
        print('Unable to connect to %s\n' % url, file=sys.stderr)
        sys.exit(1)

After connecting, the `rpc` object will be populated with a list of available
functions (or procedures, in RPC terminology). For example, if we continue
with the above example:

    print(rpc.pw_rpc_version())

It should be possible to use all the methods listed in the
[server's documentation](#patchwork-api-documentation).

[`xmlrpclib`]: https://docs.python.org/2/library/xmlrpclib.html