mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
docs(api): add documentation for the v6 API
Signed-off-by: moson <moson@archlinux.org>
This commit is contained in:
parent
da6087c88a
commit
15534fbe93
1 changed files with 306 additions and 0 deletions
306
doc/api.md
Normal file
306
doc/api.md
Normal file
|
@ -0,0 +1,306 @@
|
||||||
|
# aurweb v6 /api
|
||||||
|
|
||||||
|
Specification for version 6 of the metadata REST-API
|
||||||
|
|
||||||
|
## Endpoints
|
||||||
|
|
||||||
|
Endpoints are classified in 3 categories:
|
||||||
|
|
||||||
|
* Search -> Search for packages
|
||||||
|
* Info -> Lookup information for package (exact keyword)
|
||||||
|
* Suggest -> Search for package names (max. 20 results)
|
||||||
|
|
||||||
|
### Search
|
||||||
|
|
||||||
|
Performs a search query according to the `by` parameter.
|
||||||
|
|
||||||
|
* <mark>GET</mark>`/api/v6/search/{arg}`
|
||||||
|
<mark>GET</mark>`/api/v6/search/{by}/{arg}`
|
||||||
|
<mark>GET</mark>`/api/v6/search/{by}/{mode}/{arg}`
|
||||||
|
* `arg` <sub>(path; mandatory)</sub>
|
||||||
|
* `by` <sub>(path; optional)</sub>
|
||||||
|
* `mode` <sub>(path; optional)</sub>
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* `by`
|
||||||
|
|
||||||
|
The field that is utilized in the search query
|
||||||
|
If not specified, searching is performend with ***name-desc***
|
||||||
|
* Type: `string`
|
||||||
|
* Allowed values
|
||||||
|
* `name`
|
||||||
|
* `name-desc`
|
||||||
|
* Default: `name-desc`
|
||||||
|
|
||||||
|
* `mode`
|
||||||
|
|
||||||
|
The search-mode that is being used to query packages
|
||||||
|
If not specified, searching is performend with ***contains***
|
||||||
|
* Type: `string`
|
||||||
|
* Allowed values
|
||||||
|
* `contains`
|
||||||
|
* `starts-with`
|
||||||
|
* Default: `contains`
|
||||||
|
|
||||||
|
* `arg`
|
||||||
|
|
||||||
|
The argument/search-term(s) for the search query
|
||||||
|
Multiple terms/words can be supplied (space separated)
|
||||||
|
to perform and *AND*-like query
|
||||||
|
|
||||||
|
* Type: `string`
|
||||||
|
|
||||||
|
#### Response
|
||||||
|
|
||||||
|
Data is returned in JSON format.
|
||||||
|
Empty fields are ommitted in the output.
|
||||||
|
|
||||||
|
`200 - OK`
|
||||||
|
|
||||||
|
* PackageData
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"resultcount": 1,
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"Name": "my-pkg",
|
||||||
|
"Description": "Package description",
|
||||||
|
"Version": "1.7.5-1",
|
||||||
|
"PackageBase": "my-pkg",
|
||||||
|
"URL": "https://example.com",
|
||||||
|
"URLPath": "/cgit/aur.git/snapshot/my-pkg.tar.gz",
|
||||||
|
"Maintainer": "someone",
|
||||||
|
"Submitter": "someone",
|
||||||
|
"FirstSubmitted": 1648375227,
|
||||||
|
"LastModified": 1666386881,
|
||||||
|
"OutOfDate": 1648375227,
|
||||||
|
"NumVotes": 10,
|
||||||
|
"Popularity": 6.463867,
|
||||||
|
"License": [
|
||||||
|
"MIT",
|
||||||
|
"GPL3"
|
||||||
|
],
|
||||||
|
"Depends": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"MakeDepends": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"OptDepends": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"CheckDepends": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"Provides": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"Conflicts": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"Replaces": [
|
||||||
|
"some-pkg",
|
||||||
|
"another-pkg"
|
||||||
|
],
|
||||||
|
"Groups": [
|
||||||
|
"some-grp",
|
||||||
|
"another-grp"
|
||||||
|
],
|
||||||
|
"Keywords": [
|
||||||
|
"some-keyword",
|
||||||
|
"another-keyword"
|
||||||
|
],
|
||||||
|
"CoMaintainers": [
|
||||||
|
"someone",
|
||||||
|
"another-one"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"type": "search",
|
||||||
|
"version": 6
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
`400 - Bad Request`
|
||||||
|
|
||||||
|
* Error
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"error": "Incorrect by field specified",
|
||||||
|
"resultcount": 1,
|
||||||
|
"results": [],
|
||||||
|
"type": "error",
|
||||||
|
"version": 6
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Info
|
||||||
|
|
||||||
|
Returns a list of detailed package data for one or more packages
|
||||||
|
|
||||||
|
#### Single lookup
|
||||||
|
* <mark>GET</mark>`/api/v6/info/{arg}`
|
||||||
|
<mark>GET</mark>`/api/v6/info/{by}/{arg}`
|
||||||
|
* `arg` <sub>(path; mandatory)</sub>
|
||||||
|
* `by` <sub>(path; optional)</sub>
|
||||||
|
|
||||||
|
#### Multi lookup
|
||||||
|
* <mark>GET</mark>`/api/v6/info?arg=xyz&arg=abc`
|
||||||
|
<mark>GET</mark>`/api/v6/info?by=provides&arg=xyz&arg=abc`
|
||||||
|
* `arg` <sub>(query-string; mandatory; one or more)</sub>
|
||||||
|
* `by` <sub>(query-string; optional)</sub>
|
||||||
|
|
||||||
|
* <mark>POST</mark>`/api/v6/info`
|
||||||
|
* BODY (`application/x-www-form-urlencoded`):
|
||||||
|
```xml
|
||||||
|
arg=one&arg=two&by=provides
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* `by`
|
||||||
|
|
||||||
|
The field is being utilized in the lookup query
|
||||||
|
If not specified, a lookup is performend with ***name***
|
||||||
|
* Type: `string`
|
||||||
|
* Allowed values
|
||||||
|
* `name`
|
||||||
|
* `depends`
|
||||||
|
* `checkdepends`
|
||||||
|
* `optdepends`
|
||||||
|
* `makedepends`
|
||||||
|
* `maintainer`
|
||||||
|
* `submitter`
|
||||||
|
* `provides`
|
||||||
|
* `conflicts`
|
||||||
|
* `replaces`
|
||||||
|
* `keywords`
|
||||||
|
* `groups`
|
||||||
|
* `comaintainers`
|
||||||
|
* Default: `name`
|
||||||
|
|
||||||
|
* `arg`
|
||||||
|
|
||||||
|
One or more keywords
|
||||||
|
|
||||||
|
* Type: `string` or `string-array` (depending on the endpoint)
|
||||||
|
|
||||||
|
#### Response
|
||||||
|
|
||||||
|
Data is returned in JSON format.
|
||||||
|
Empty fields are ommitted in the output.
|
||||||
|
|
||||||
|
`200 - OK`
|
||||||
|
|
||||||
|
* PackageData
|
||||||
|
|
||||||
|
See `Search` type
|
||||||
|
|
||||||
|
`400 - Bad Request`
|
||||||
|
|
||||||
|
* Error
|
||||||
|
|
||||||
|
See `Search` type
|
||||||
|
|
||||||
|
### Suggest
|
||||||
|
|
||||||
|
Returns a list of package names starting with the supplied argument.
|
||||||
|
Mostly used for auto-completion fields when typing.
|
||||||
|
|
||||||
|
#### Starts-with search
|
||||||
|
|
||||||
|
* <mark>GET</mark>`/api/v6/suggest/{arg}`
|
||||||
|
* `arg` <sub>(path; mandatory)</sub>
|
||||||
|
|
||||||
|
* <mark>GET</mark>`/api/v6/suggest-pkgbase/{arg}`
|
||||||
|
* `arg` <sub>(path; mandatory)</sub>
|
||||||
|
|
||||||
|
|
||||||
|
#### Response
|
||||||
|
|
||||||
|
Data is returned in JSON format.
|
||||||
|
|
||||||
|
`200 - OK`
|
||||||
|
|
||||||
|
* PackageNames
|
||||||
|
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
"pkg1",
|
||||||
|
"pkg2",
|
||||||
|
"pkg3",
|
||||||
|
]
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Parameters
|
||||||
|
|
||||||
|
* `arg`
|
||||||
|
|
||||||
|
Search term (starts-with)
|
||||||
|
|
||||||
|
* Type: `string`
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
Below you'll find some basic examples for the different types of requests.
|
||||||
|
|
||||||
|
### Search
|
||||||
|
|
||||||
|
* packages containing `firefox` in the package name or description
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/search/firefox`
|
||||||
|
<mark>GET</mark>`/api/v6/search/name-desc/firefox`
|
||||||
|
<mark>GET</mark>`/api/v6/search/name-desc/contains/firefox`
|
||||||
|
|
||||||
|
* packages whose name start with `firefox`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/search/name/starts-with/firefox`
|
||||||
|
|
||||||
|
* packages containing both `fire` and `fox` in the name
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/search/name/fire+fox`
|
||||||
|
(note that `+` is a URL-encoded whitespace character)
|
||||||
|
|
||||||
|
### Info
|
||||||
|
|
||||||
|
* a package with the name `firefox`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/info/firefox`
|
||||||
|
|
||||||
|
* packages providing `firefox`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/info/provides/firefox`
|
||||||
|
<mark>GET</mark>`/api/v6/info?by=provides&arg=firefox`
|
||||||
|
|
||||||
|
* packages co-maintained by `someuser`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/info/comaintainers/someuser`
|
||||||
|
<mark>GET</mark>`/api/v6/info?by=comaintainers&arg=someuser`
|
||||||
|
|
||||||
|
* packages with name `firefox` or `chromium`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/info?by=name&arg=firefox&arg=chromium`
|
||||||
|
|
||||||
|
<mark>POST</mark>`/api/v6/info`
|
||||||
|
```
|
||||||
|
arg=firefox&arg=chromium&by=name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Suggest
|
||||||
|
|
||||||
|
* packages starting with `fire`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/suggest/fire`
|
||||||
|
|
||||||
|
* packages whose pkgbase starts with `fire`
|
||||||
|
|
||||||
|
<mark>GET</mark>`/api/v6/suggest-pkgbase/fire`
|
Loading…
Add table
Reference in a new issue