owned this note changed 5 years ago
Published Linked with GitHub

API Specification for twtxt.net

All endpoints will follow the HTTP response status codes

Endpoints

/api/login

METHOD POST

Body:

{
    "username": "test",
    "password": "letmein",
    "device_name": "John's iPhone"
}

Successful response:

{
    "token": "ab98a396873f61d054b3365db7184fe0322c8765"
}

Failure response:

{
    "error_code": "login_fail",
    "error_message": "Invalid username and/or password."
}

/api/logout

METHOD POST

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

/api/register METHOD POST

Body:

{
    "username": "test",
    "password": "letmein",
    "email": "email@example.com",
    "device_name": "John's iPhone"
}

Successful response:

{
    "token": "ab98a396873f61d054b3365db7184fe0322c8765"
}

/api/follow

METHOD POST

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Body:

{
    "nickname": "therealuser"
}

/api/unfollow

METHOD POST

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Body:

{
    "user_url": "https://twtxt.net/user/therealuser/twtxt.txt"
}

/api/feeds

METHOD GET

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Response:

[
    {
        "nickname": "therealuser",
        "user_url": "https://twtxt.net/user/therealuser/twtxt.txt"
    },
    {
        "nickname": "justauser",
        "user_url": "https://twtxt.net/user/justauser/twtxt.txt"
    }
]

/api/feeds/create

METHOD PUT

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Response:

{
    "feed_name": "News feed"
}

/api/timeline

METHOD GET Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Parameters: last_upadted_at=<timestamp>

Format: <timestamp> -> Last time the request was successfully made by client YYYY-MM-DDThh:mm:ssTZD

Response:

[{
    "nickname": "therealuser",
    "user_url": "https://twtxt.net/user/therealuser/twtxt.txt",
    "text": "My first twtxt post",
    "timestamp": "2020-07-23T05:58:00Z"
 },
 {
    "nickname": "justauser",
    "user_url": "https://twtxt.net/user/justauser/twtxt.txt",
    "text": "My first twtxt post",
    "timestamp": "2020-07-23T07:15:00Z"
 }
]

/api/discover

METHOD GET

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Response:

[{
    "nickname": "therealuser",
    "user_url": "https://twtxt.net/user/therealuser/twtxt.txt",
    "text": "My first twtxt post",
    "timestamp": "2020-07-23T05:58:00Z"
 },
 {
    "nickname": "justauser",
    "user_url": "https://twtxt.net/user/justauser/twtxt.txt",
    "text": "My first twtxt post",
    "timestamp": "2020-07-23T07:15:00Z"
 }
]

/api/post

METHOD POST

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Body:

{
    "text": "My first twtxt post",
    "timestamp": "2020-07-23T05:58:00Z"
}

/api/search/?q=

METHOD GET

Header: Authorization: Token ab98a396873f61d054b3365db7184fe0322c8765

Parameters: q=<search term>&last_update_at=2020-07-23T05:58:00Z Supports @mention searchers: q=@therealuser last_update_at -> timestamp for when the client last requested an update

Select a repo