2f1ddd8280
This is not the same as the one in https://notabug.org/diogo/gnu-social-activitypub-plugin Differences to the first "release" -> Doesn't use guzzle nor has any composer dependencies -> Supports HTTP Signatures -> Has basic l10n/i18n -> Some minor bug fixes
674 lines
26 KiB
JSON
674 lines
26 KiB
JSON
{
|
|
"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": []
|
|
}
|