========= Plugins ========= Plugins can supply REST routes. :: >>> dump_json('http://localhost:9001/3.1/plugins') entry 0: class: mailman.testing.plugin.ExamplePlugin configuration: enable: True http_etag: "..." name: example path: http_etag: "..." start: 0 total_size: 1 >>> dump_json('http://localhost:9001/3.1/plugins/example') example-plugin-reply: yes http_etag: "..." >>> dump_json('http://localhost:9001/3.1/plugins/example/good') good: True http_etag: "..." >>> dump_json('http://localhost:9001/3.1/plugins/example/bad') Traceback (most recent call last): ... urllib.error.HTTPError: HTTP Error 400: ... For example this route that presents a counter. :: >>> dump_json('http://localhost:9001/3.1/plugins/example/count') count: 0 http_etag: "..." >>> call_http('http://localhost:9001/3.1/plugins/example/count', ... {'count':3}, method='POST') content-length: 0 date: ... server: ... status: 204 >>> dump_json('http://localhost:9001/3.1/plugins/example/count') count: 3 http_etag: "..." >>> call_http('http://localhost:9001/3.1/plugins/example/count', ... method='DELETE') content-length: 0 date: ... server: ... status: 204 >>> dump_json('http://localhost:9001/3.1/plugins/example/count') count: 0 http_etag: "..."