{
    "openapi": "3.0.0",
    "info": {
        "description": "## Retrieving objects\nThe HTTP GET method may be dereferenced against an object's `id` property to retrieve the activity.\nThe plugin supports HTTP content negotiation as defined in [RFC7231](https://tools.ietf.org/html/rfc7231) in every endpoint suffixed with .json .\nThe plugin always presents ActivityStreams object representation in response to every request.\nThe client MUST specify an `Accept` header with the `application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"` media type in order to retrieve the activity.\n\n## Selecting ranges\n\nFor most `GET` operations that return arrays, the query parameters `max_id` and `since_id` can be used to specify the range of IDs to return.\nAPI methods that return collections of items can return a `Link` header containing URLs for the `next` and `prev` pages.\nSee the [Link header RFC](https://tools.ietf.org/html/rfc5988) for more information.\n\n## Pretty output\n\nFor most operations if the `pretty` parameter is set a formated output will be generated (useful for learning about the API or debuging purposes).\n\n## Errors\n\nIf the request you make doesn't go through, the plugin will usually respond with an [Error](#error).\n\n___\n\n> **Note:** Some attributes in the payload can have ``null`` value and are marked as _nullable_ on the tables below. Attributes that are not nullable are guaranteed to return a valid value.",
        "version": "1.0.0",
        "title": "ActivityPub plugin for GNU Social",
        "contact": {
            "email": "diogo@fc.up.pt"
        },
        "license": {
            "name": "AGPLv3",
            "url": "https://git.gnu.io/gnu/GS-ActivityPub-plugin/blob/COPYING"
        }
    },
    "externalDocs": {
        "description": "For a complete definition of the objects and activities available click here.",
        "url": "https://git.gnu.io/gnu/GS-ActivityPub-plugin/doc/objects_and_activities.md"
    },
    "paths": {
        "/{nickname}": {
            "get": {
                "summary": "Fetching an Actor's profile",
                "description": "Returns a Profile.",
                "responses": {
                    "200": {
                        "description": "Returns a Profile",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Profile"
                                    }
                                }
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    }
                ]
            }
        },
        "/{nickname}/inbox.json": {
            "post": {
                "summary": "Actor Inbox endpoint",
                "description": "Allows the publish of activities with attention to a given Actor",
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns the same activity it received"
                    }
                }
            }
        },
        "/{nickname}/liked.json": {
            "get": {
                "summary": "Liked Collection",
                "description": "Getting an Actor's Liked Collection",
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    },
                    {
                        "name": "max_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32"
                        },
                        "description": "Get a list of likes with ID less than this value",
                        "format": "int32"
                    },
                    {
                        "name": "since_id",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32"
                        },
                        "description": "Get a list of likes with ID greater than this value"
                    },
                    {
                        "name": "limit",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32",
                            "default": "40"
                        },
                        "description": "Maximum number of likes to get (Max 80)"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns Actor's Liked Collection",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Liked Collection"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/{nickname}/followers.json": {
            "get": {
                "summary": "Followers Collection",
                "description": "Getting an Actor's Followers Collection",
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32",
                            "default": "1"
                        },
                        "description": "Page index (starts in 1)"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns Actor's Followers Collection",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Follow Collection"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/{nickname}/following.json": {
            "get": {
                "summary": "Following Collection",
                "description": "Getting an Actor's Following Collection",
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "required": false,
                        "schema": {
                            "type": "integer",
                            "format": "int32",
                            "default": "1"
                        },
                        "description": "Page index (starts in 1)"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns Actor's Following Collection",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Follow Collection"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        },
        "/inbox.json": {
            "post": {
                "summary": "SharedInbox endpoint",
                "description": "Allows the publish of activities",
                "parameters": [
                    {
                        "name": "Content-Type",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/json"
                        }
                    },
                    {
                        "name": "Accept",
                        "in": "header",
                        "required": true,
                        "schema": {
                            "type": "string",
                            "default": "application/activity+json"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Returns the same activity it received"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Note": {
                "type": "object",
                "required": [
                    "@context",
                    "id",
                    "type",
                    "actor",
                    "published",
                    "to",
                    "cc",
                    "content",
                    "url",
                    "reply_to",
                    "is_local",
                    "conversation",
                    "attachment",
                    "tag"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "id": {
                        "description": "Notice's URI",
                        "type": "string"
                    },
                    "type": {
                        "description": "Notice's Type",
                        "type": "string"
                    },
                    "actor": {
                        "description": "URL of Notice owner profile page (can be remote)",
                        "type": "string"
                    },
                    "published": {
                        "description": "DateTime of notice creation",
                        "type": "string",
                        "format": "date-time"
                    },
                    "to": {
                        "description": "To",
                        "type": "string"
                    },
                    "cc": {
                        "description": "CC",
                        "type": "string"
                    },
                    "content": {
                        "description": "Notice's Content in plain text",
                        "type": "string"
                    },
                    "url": {
                        "description": "Notice's URL",
                        "type": "string"
                    },
                    "reply_to": {
                        "description": "ID of the notice this replies",
                        "type": "string"
                    },
                    "is_local": {
                        "description": "true if local, false otherwise",
                        "type": "string"
                    },
                    "conversation": {
                        "description": "Notice conversation id",
                        "type": "integer",
                        "format": "int32"
                    },
                    "attachment": {
                        "description": "Array of Attachments",
                        "type": "Array of Attachments"
                    },
                    "tag": {
                        "description": "Array of Tags",
                        "type": "Array of Tags"
                    }
                },
                "xml": {
                    "name": "Note"
                }
            },
            "Image": {
                "type": "object",
                "required": [
                    "@context",
                    "type",
                    "width",
                    "height",
                    "url"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "type": {
                        "description": "Image",
                        "type": "string"
                    },
                    "width": {
                        "description": "Image's width",
                        "type": "integer",
                        "format": "int32"
                    },
                    "height": {
                        "description": "Image's height",
                        "type": "integer",
                        "format": "int32"
                    },
                    "url": {
                        "description": "Image URL",
                        "type": "string"
                    }
                },
                "xml": {
                    "name": "Image"
                }
            },
            "Attachment": {
                "type": "object",
                "required": [
                    "@context",
                    "id",
                    "mimetype",
                    "url",
                    "title"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "id": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Id of the Attachment"
                    },
                    "mimetype": {
                        "type": "string",
                        "description": "Mimetype"
                    },
                    "url": {
                        "type": "string",
                        "description": "URL of locally hosted version of the attachment"
                    },
                    "meta": {
                        "type": "array",
                        "description": "Attachment metadata:\n\nImages may contain *width*, *height*, *size*.",
                        "items": {}
                    },
                    "title": {
                        "type": "string",
                        "description": "Attachment title"
                    }
                },
                "xml": {
                    "name": "Attachment"
                }
            },
            "Profile": {
                "type": "object",
                "required": [
                    "@context",
                    "id",
                    "nickname",
                    "is_local",
                    "inbox",
                    "outbox",
                    "display_name",
                    "followers",
                    "followers_count",
                    "following",
                    "following_count",
                    "liked",
                    "liked_count",
                    "summary",
                    "url",
                    "avatar"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "id": {
                        "type": "string",
                        "description": "Local URI"
                    },
                    "type": "Person",
                    "nickname": {
                        "type": "string",
                        "description": "Actor's nickname"
                    },
                    "is_local": {
                        "type": "boolean",
                        "description": "True if local, false otherwise"
                    },
                    "inbox": {
                        "type": "string",
                        "description": "URL to Actor's inbox endpoint"
                    },
                    "sharedInbox": {
                        "type": "string",
                        "description": "URL to Actor's sharedInbox endpoint"
                    },
                    "outbox": {
                        "type": "string",
                        "description": "URL to Actor's outbox endpoint"
                    },
                    "display_name": {
                        "type": "string",
                        "description": "The Actor's display name"
                    },
                    "followers": {
                        "type": "string",
                        "description": "URL to Actor's followers collection"
                    },
                    "followers_count": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Total number of followers"
                    },
                    "following": {
                        "type": "string",
                        "description": "URL to Actor's following collection"
                    },
                    "following_count": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Total number of following"
                    },
                    "liked": {
                        "type": "string",
                        "description": "URL to Actor's Liked collection"
                    },
                    "liked_count": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Total number of favorites"
                    },
                    "summary": {
                        "type": "string",
                        "description": "Actor's biography"
                    },
                    "url": {
                        "type": "string",
                        "description": "URL of the Actor's profile page (can be remote)"
                    },
                    "avatar": {
                        "type": "Image",
                        "description": "Actor's avatar"
                    }
                },
                "xml": {
                    "name": "Profile"
                }
            },
            "Tag": {
                "type": "object",
                "required": [
                    "@context",
                    "name",
                    "url"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "name": {
                        "type": "string",
                        "description": "The hashtag, not including the preceding #"
                    },
                    "url": {
                        "type": "string",
                        "description": "The URL of the hashtag"
                    }
                },
                "xml": {
                    "name": "Tag"
                }
            },
            "Liked Collection": {
                "type": "object",
                "required": [
                    "@context",
                    "id",
                    "type",
                    "totalItems",
                    "orderedItems"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "id": {
                        "type": "string",
                        "description": "URL for current endpoint"
                    },
                    "type": {
                        "type": "string",
                        "description": "OrderedCollection"
                    },
                    "totalItems": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Total number of favorites"
                    },
                    "orderedItems": {
                        "type": "Array of Notices",
                        "description": "Array of Notices"
                    }
                }
            },
            "Follow Collection": {
                "type": "object",
                "required": [
                    "@context",
                    "id",
                    "type",
                    "totalItems",
                    "orderedItems"
                ],
                "properties": {
                    "@context": {
                        "type": "string",
                        "value": "https://www.w3.org/ns/activitystreams",
                        "default": "https://www.w3.org/ns/activitystreams"
                    },
                    "id": {
                        "type": "string",
                        "description": "URL for current endpoint"
                    },
                    "type": {
                        "type": "string",
                        "description": "OrderedCollection"
                    },
                    "totalItems": {
                        "type": "integer",
                        "format": "int32",
                        "description": "Total number of items"
                    },
                    "prev": {
                        "type": "string",
                        "description": "Previous page URL"
                    },
                    "next": {
                        "type": "string",
                        "description": "Next page URL"
                    },
                    "orderedItems": {
                        "type": "Array of string",
                        "description": "The URL of each profile"
                    }
                }
            }
        },
        "links": {},
        "callbacks": {}
    },
    "security": [],
    "servers": []
}
