135 lines
3.7 KiB
Markdown
135 lines
3.7 KiB
Markdown
# Friendica Directory Protocol
|
|
|
|
## Surprise
|
|
|
|
```
|
|
GET /servers/surprise
|
|
```
|
|
|
|
Redirects to the base URL of a random server with open registration policy and above 75 health.
|
|
|
|
## Search
|
|
|
|
```
|
|
GET /search[/account_type]?q=...[&page=...][&limit=...]
|
|
Accept: application/json
|
|
```
|
|
|
|
URI Parameter:
|
|
- `account_type` (optional): An arbitrary account type string. Expected values are `all`, `people`, `news`, `organization` and `group`. Default is `all`.
|
|
Query parameters:
|
|
- `q`: The search query.
|
|
- `page` (optional): The page number, default is 1.
|
|
- `limit` (optional): The page size, default is 20, max is 100.
|
|
|
|
Returns a JSON structure containing a paginated list profiles matching the search query and the optional account type.
|
|
|
|
Example:
|
|
|
|
```json
|
|
{
|
|
"query": "philosophy",
|
|
"page": 1,
|
|
"itemsperpage": 20,
|
|
"count": "13",
|
|
"profiles": [
|
|
{
|
|
"id": "2259",
|
|
"name": "Hyp🌧lite Pe☂ov🍃n (he/him)",
|
|
"username": "hypolite",
|
|
"addr": "hypolite@friendica.mrpetovan.com",
|
|
"account_type": "People",
|
|
"pdesc": "Subpar geek, french/english, science, games, feminism, jokes and anything in between. Avatar by @DearMsDear@mastodon.art",
|
|
"locality": "Brooklyn",
|
|
"region": "New York",
|
|
"country": "USA",
|
|
"profile_url": "https://friendica.mrpetovan.com/profile/hypolite",
|
|
"photo": "https://friendica.mrpetovan.com/photo/27330388315ae4ed2b03e3c116980490-4.jpg?ts=1541567135",
|
|
"tags": "videogame gaming boardgame politics philosophy development programming php",
|
|
"last_activity": "2018-45",
|
|
"remote_follow": "https://friendica.mrpetovan.com/remote_follow/hypolite",
|
|
"subscribe": null
|
|
},
|
|
...
|
|
]
|
|
}
|
|
```
|
|
|
|
### Legacy interest match search
|
|
|
|
```
|
|
POST /msearch
|
|
Content-Type: application/x-www-form-urlencoded
|
|
Accept: application/json
|
|
```
|
|
|
|
Parameters:
|
|
- `s`: The search query, a list of tags separated by spaces or commas is expected.
|
|
- `p` (optional): The page number, default is 1.
|
|
- `n` (optional): The number of items per page, default is 80.
|
|
|
|
Returns a JSON structure containing a paginated list profiles matching the search query and the optional account type.
|
|
|
|
Example:
|
|
|
|
```json
|
|
{
|
|
"query": "videogame gaming boardgame politics philosophy development programming php",
|
|
"page": 1,
|
|
"items_page": 100,
|
|
"total": 32,
|
|
"results": [
|
|
{
|
|
"name": "Hyp🌧lite Pe☂ov🍃n (he/him)",
|
|
"url": "https://friendica.mrpetovan.com/profile/hypolite",
|
|
"photo": "https://friendica.mrpetovan.com/photo/27330388315ae4ed2b03e3c116980490-4.jpg?ts=1545521478",
|
|
"tags": "videogame gaming boardgame politics philosophy development programming php"
|
|
},
|
|
...
|
|
]
|
|
}
|
|
```
|
|
|
|
|
|
## Profile submission
|
|
|
|
`GET /submit?url=...`
|
|
|
|
Parameters:
|
|
- `url`: a hexadecimal-encoded profile URL to be added to the directory.
|
|
|
|
The success of the operation is indicated by the HTTP response code.
|
|
|
|
## Synchronization
|
|
|
|
`GET /sync/pull/all`
|
|
|
|
Returns a JSON structure containing all the profiles displayed by the directory.
|
|
|
|
Example:
|
|
```json
|
|
{
|
|
now: 1541942034,
|
|
count: 7435,
|
|
results: [
|
|
"http://example.com/profile/test",
|
|
...
|
|
]
|
|
}
|
|
```
|
|
|
|
`GET /sync/pull/since/1541942034`
|
|
|
|
Returns a JSON structure containing profiles displayed by the directory that have been updated since the provided UNIX timestamp.
|
|
|
|
Example:
|
|
```json
|
|
{
|
|
now: 1541942160,
|
|
count: 2766,
|
|
results: [
|
|
"http://example.com/profile/test",
|
|
...
|
|
]
|
|
}
|
|
``` |