{
  "openapi": "3.1.0",
  "info": {
    "title": "Kowloon API",
    "version": "1.0.0"
  },
  "tags": [
    {
      "name": "Activities"
    },
    {
      "name": "Bookmarks"
    },
    {
      "name": "Circles"
    },
    {
      "name": "Events"
    },
    {
      "name": "Groups"
    },
    {
      "name": "Pages"
    },
    {
      "name": "Posts"
    },
    {
      "name": "Users"
    },
    {
      "name": "Utility"
    }
  ],
  "paths": {
    "/activities": {
      "get": {
        "tags": [
          "Activities"
        ],
        "summary": "Get a collection of activities",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/activities/{id}": {
      "get": {
        "tags": [
          "Activities"
        ],
        "summary": "Get a single activity by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/bookmarks": {
      "get": {
        "tags": [
          "Bookmarks"
        ],
        "summary": "Get a collection of bookmarks",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/bookmarks/{id}": {
      "get": {
        "tags": [
          "Bookmarks"
        ],
        "summary": "Get a single bookmark by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/circles": {
      "get": {
        "tags": [
          "Circles"
        ],
        "summary": "Get a collection of circles",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/circles/{id}": {
      "get": {
        "tags": [
          "Circles"
        ],
        "summary": "Get a single circle by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/circles/{id}/posts": {
      "get": {
        "tags": [
          "Circles"
        ],
        "summary": "Get posts of a circle, including the circle object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CirclePostsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/circles/{id}/members": {
      "get": {
        "tags": [
          "Circles"
        ],
        "summary": "Get members of a circle, including the circle object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CircleMembersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/events": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "Get a collection of events",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/events/{id}": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "Get a single event by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/events/{id}/members": {
      "get": {
        "tags": [
          "Events"
        ],
        "summary": "Get members of an event, including the event object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventMembersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/groups": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get a collection of groups",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/groups/{id}": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get a single group by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/groups/{id}/bookmarks": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get bookmarks of a group, including the group object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupBookmarksResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/groups/{id}/posts": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get posts of a group, including the group object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupPostsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/groups/{id}/members": {
      "get": {
        "tags": [
          "Groups"
        ],
        "summary": "Get members of a group, including the group object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GroupMembersResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/pages": {
      "get": {
        "tags": [
          "Pages"
        ],
        "summary": "Get a collection of pages",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/pages/{id}": {
      "get": {
        "tags": [
          "Pages"
        ],
        "summary": "Get a single page by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/posts": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Get a collection of posts",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/posts/{id}": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Get a single post by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/posts/{id}/replies": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Get replies of a post",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/posts/{id}/reacts": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Get reacts of a post",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a collection of users",
        "parameters": [
          {
            "$ref": "#/components/parameters/type"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OrderedCollection"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get a single user by ID",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ItemResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/public-key": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get the public key of a user",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/inbox": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get the inbox of a user",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/activities": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get activities of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserActivitiesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/bookmarks": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get bookmarks of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserBookmarksResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/circles": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get circles of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserCirclesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/groups": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get groups of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserGroupsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/posts": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get posts of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPostsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/outbox": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get outbox posts of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserPostsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/reacts": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get reacts of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserReactsResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/users/{id}/replies": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Get replies of a user, including the user object",
        "parameters": [
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/pageSize"
          },
          {
            "$ref": "#/components/parameters/since"
          },
          {
            "$ref": "#/components/parameters/sort"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserRepliesResponse"
                }
              }
            }
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/.well-known/public-key": {
      "get": {
        "tags": [
          "Utility"
        ],
        "summary": "Get the public key for this server",
        "responses": {
          "200": {
            "description": "Successful response"
          }
        }
      }
    },
    "/.well-known/jwks.json": {
      "get": {
        "tags": [
          "Utility"
        ],
        "summary": "Get the JWKS for this server",
        "responses": {
          "200": {
            "description": "Successful response"
          }
        }
      }
    },
    "/utils/preview": {
      "get": {
        "tags": [
          "Utility"
        ],
        "summary": "Get a link preview",
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uri"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/login": {
      "post": {
        "tags": [
          "Utility"
        ],
        "summary": "Login to the system",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "username",
                  "password"
                ],
                "properties": {
                  "username": {
                    "type": "string"
                  },
                  "password": {
                    "type": "string"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful login"
          }
        }
      }
    },
    "/inbox": {
      "post": {
        "tags": [
          "Utility"
        ],
        "summary": "Receive an activity",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Activity"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    },
    "/.well-known/inbox": {
      "post": {
        "tags": [
          "Utility"
        ],
        "summary": "Receive an activity",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Activity"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "parameters": {
      "id": {
        "name": "id",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "type": {
        "name": "type",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "page": {
        "name": "page",
        "in": "query",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "pageSize": {
        "name": "pageSize",
        "in": "query",
        "schema": {
          "type": "integer",
          "minimum": 1
        }
      },
      "since": {
        "name": "since",
        "in": "query",
        "schema": {
          "type": "string",
          "format": "date-time"
        }
      },
      "sort": {
        "name": "sort",
        "in": "query",
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "Activity": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "actor": {
            "type": "object"
          },
          "actorId": {
            "type": "string"
          },
          "server": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "default": "Create"
          },
          "object": {
            "type": "object"
          },
          "objectType": {
            "type": "string"
          },
          "objectId": {
            "type": "string"
          },
          "target": {
            "type": "string"
          },
          "to": {
            "type": "string"
          },
          "canReply": {
            "type": "string"
          },
          "canReact": {
            "type": "string"
          },
          "summary": {
            "type": "string"
          }
        },
        "required": [
          "actorId"
        ]
      },
      "ItemResponse": {
        "type": "object",
        "properties": {
          "server": {
            "type": "string"
          },
          "@context": {
            "type": "string",
            "example": "https://www.w3.org/ns/activitystreams"
          },
          "type": {
            "type": "string",
            "description": "The object type (e.g., Post, Article)"
          },
          "summary": {
            "type": "string"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "queryTime": {
            "type": "number",
            "format": "float"
          }
        },
        "additionalProperties": true,
        "description": "Generic single-item response, where the key is the lowercase object type"
      },
      "OrderedCollection": {
        "type": "object",
        "properties": {
          "server": {
            "type": "object"
          },
          "@context": {
            "type": "string",
            "example": "https://www.w3.org/ns/activitystreams"
          },
          "type": {
            "type": "string",
            "enum": [
              "OrderedCollection"
            ]
          },
          "summary": {
            "type": "string"
          },
          "totalItems": {
            "type": "integer"
          },
          "totalPages": {
            "type": "integer"
          },
          "items": {
            "type": "array",
            "items": {
              "type": "object"
            }
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time"
          },
          "queryTime": {
            "type": "number",
            "format": "float"
          }
        }
      },
      "Circle": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "Group": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "User": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        }
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      },
      "CircleMembersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "circle": {
                "$ref": "#/components/schemas/Circle"
              }
            }
          }
        ]
      },
      "GroupBookmarksResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "group": {
                "$ref": "#/components/schemas/Group"
              }
            }
          }
        ]
      },
      "GroupPostsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "group": {
                "$ref": "#/components/schemas/Group"
              }
            }
          }
        ]
      },
      "GroupMembersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "group": {
                "$ref": "#/components/schemas/Group"
              }
            }
          }
        ]
      },
      "UserActivitiesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserBookmarksResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserCirclesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserGroupsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserPostsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserReactsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "UserRepliesResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/User"
              }
            }
          }
        ]
      },
      "CirclePostsResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "circle": {
                "$ref": "#/components/schemas/Circle"
              }
            }
          }
        ]
      },
      "EventMembersResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/OrderedCollection"
          },
          {
            "type": "object",
            "properties": {
              "event": {
                "$ref": "#/components/schemas/Event"
              }
            }
          }
        ]
      }
    }
  }
}