mirror of
https://github.com/jech/galene.git
synced 2024-11-09 18:25:58 +01:00
API documentation.
This commit is contained in:
parent
cc38c53075
commit
7643424bab
1 changed files with 82 additions and 0 deletions
82
README.API
Normal file
82
README.API
Normal file
|
@ -0,0 +1,82 @@
|
|||
# Galene's administrative API
|
||||
|
||||
Galene provides an HTTP-based API that can be used to create groups and
|
||||
users. For example, in order to create a group, a client may do
|
||||
|
||||
PUT /galene-api/0/.groups/groupname/
|
||||
Content-Type: application/json
|
||||
If-None-Match: *
|
||||
|
||||
The `If-None-Match` header avoids overwriting an existing group.
|
||||
|
||||
In order to edit a group definition, a client first does
|
||||
|
||||
GET /galene-api/0/.groups/groupname/
|
||||
|
||||
This yields the group definition and an entity tag (in the ETag header).
|
||||
The client then modifies the group defintion, and does
|
||||
|
||||
PUT /galene-api/0/.groups/groupname/
|
||||
If-Match: "abcd"
|
||||
|
||||
where "abcd" is the entity tag returned by the GET request. If the group
|
||||
definition has changed in the meantime, the entity tag will no longer be
|
||||
valid, and the server will fail the update, which avoids losing an update
|
||||
in the case of a concurrent modification.
|
||||
|
||||
|
||||
## Endpoints
|
||||
|
||||
The API is located under `/galene-api/0/`. The `/0/` is a version number,
|
||||
and will be incremented if we ever find out that the current API cannot be
|
||||
extended in a backwards compatible manner.
|
||||
|
||||
### Statistics
|
||||
|
||||
/galene-api/0/.stats
|
||||
|
||||
Provides a number of statistics about the running server, in JSON. The
|
||||
exact format is undocumented, and may change between versions. The only
|
||||
allowed methods are HEAD and GET.
|
||||
|
||||
### List of groups
|
||||
|
||||
/galene-api/0/.groups/
|
||||
|
||||
Returns a list of groups, as plain text, one per line. The only allowed
|
||||
methods are HEAD and GET.
|
||||
|
||||
### Group definition
|
||||
|
||||
/galene-api/0/.groups/groupname
|
||||
|
||||
Contains a "sanitised" group definition in JSON format, analogous to the
|
||||
on-disk format but without any user definitions or cryptographic keys.
|
||||
Allowed methods are HEAD, GET, PUT and DELETE. The only accepted
|
||||
content-type is `application/json`.
|
||||
|
||||
### List of users
|
||||
|
||||
/galene-api/0/.groups/groupname/.users/
|
||||
|
||||
Returns a list of users, as plain text, one per line. The only allowed
|
||||
methods are HEAD and GET.
|
||||
|
||||
### User definition
|
||||
|
||||
/galene-api/0/.groups/groupname/.users/username
|
||||
|
||||
Contains a "sanitised" user definition (without any passwords), a JSON
|
||||
object with a single field `permissions`. Allowed methods are HEAD, GET,
|
||||
PUT and DELETE. The only accepted content-type is `application/json`.
|
||||
|
||||
### Passwords
|
||||
|
||||
/galene-api/0/.groups/groupname/.users/username/.password
|
||||
|
||||
Contains the password of a given user. The PUT method takes a full
|
||||
password definition, identical to what can appear in the `"password"`
|
||||
field of the on-disk format, while the POST method takes a string which
|
||||
will be hashed on the server. Allowed methods are PUT, POST and DELETE.
|
||||
Accepted content-types are `application/json` for PUT and `text/plain` for
|
||||
POST.
|
Loading…
Reference in a new issue