{
    "openapi": "3.0.0",
    "info": {
        "title": "Picarto.TV API Documentation 1.2.6 ",
        "description": "<p>The Picarto.TV API documentation</p>\n <p>Limit usages (Public): 30 reqs/min  </p>\n <p>Note, for fixed access tokens, the header that needs to be sent is of the format: <code>`Authorization: Bearer yourTokenHere`</code> </p>\n <p>This can be generated at <a href='https://oauth.picarto.tv/'>https://oauth.picarto.tv/</a></p>\n <p>Example of oauth flow <a href='https://api.picarto.tv/oauth-eg/' target='_blank'>Click here:</a></p>",
        "termsOfService": "https://picarto.tv/site/terms",
        "contact": {
            "name": "Us",
            "email": "api@picarto.tv"
        },
        "version": "1.2.6"
    },
    "servers": [
        {
            "url": "https://api.picarto.tv/api/v1"
        }
    ],
    "paths": {
        "/categories": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get information about all categories",
                "responses": {
                    "200": {
                        "description": "A successful query, got all categories",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Categories"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/channel/id/{channel_id}": {
            "get": {
                "tags": [
                    "public",
                    "channel"
                ],
                "summary": "Gets information about a channel by ID - providing a bearer token with permission readpub can get followed status in result",
                "operationId": "showChannelById",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "The id of the application to retrieve",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, channel exists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ChannelDetails"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "You do not have access to this channel with your access token"
                    },
                    "404": {
                        "description": "Channel does not exist"
                    }
                }
            }
        },
        "/channel/name/{channel_name}": {
            "get": {
                "tags": [
                    "public",
                    "channel"
                ],
                "summary": "Gets information about a channel by name - providing a bearer token with permission readpub can get followed status in result",
                "operationId": "showChannelByName",
                "parameters": [
                    {
                        "name": "channel_name",
                        "in": "path",
                        "description": "Channel name of user you wish to read",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, channel exists",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ChannelDetails"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "You do not have access to this channel with your access token"
                    },
                    "404": {
                        "description": "Channel does not exist"
                    }
                }
            }
        },
        "/channel/id/{channel_id}/videos": {
            "get": {
                "tags": [
                    "public",
                    "channel"
                ],
                "summary": "Get all videos for a channel by id",
                "operationId": "getChannelVideosByChannelId",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "Channel id of user you wish to read",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got videos",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ChannelVideos"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "You do not have access to this channel with your access token"
                    },
                    "404": {
                        "description": "Channel does not exist"
                    }
                }
            }
        },
        "/channel/name/{channel_name}/videos": {
            "get": {
                "tags": [
                    "public",
                    "channel"
                ],
                "summary": "Get all videos for a channel by name",
                "operationId": "getChannelVideosByChannelName",
                "parameters": [
                    {
                        "name": "channel_name",
                        "in": "path",
                        "description": "Channel name of user you wish to read",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got videos",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/ChannelVideos"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    },
                    "403": {
                        "description": "You do not have access to this channel with your access token"
                    },
                    "404": {
                        "description": "Channel does not exist"
                    }
                }
            }
        },
        "/online": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Gets all currently online channels - providing a bearer token with permission readpub can get followed status in result",
                "operationId": "e8dcff8da297e5ad51fb597b18a52a7f",
                "parameters": [
                    {
                        "name": "adult",
                        "in": "query",
                        "description": "Whether or not to include adult channels (defaults to `false`)",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    },
                    {
                        "name": "gaming",
                        "in": "query",
                        "description": "Whether or not to include gaming channels (defaults to `false`)",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    },
                    {
                        "name": "category",
                        "in": "query",
                        "description": "What categories to limit this to (blank/not included doesn't filter) - seperate multiple categories by a `,` character"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got all online channels",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/OnlineChannels"
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/search/channels": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get all channels matching the given search criteria (by name and tags)",
                "operationId": "cd1ab2f97ed3fda0dcbc819da239eda4",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "description": "The search query to use (does not currently support special qualifiers)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "adult",
                        "in": "query",
                        "description": "Whether or not to include adult channels (defaults to `false`)",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)",
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    },
                    {
                        "name": "commissions",
                        "in": "query",
                        "description": "Whether or not to filter by streams offering commissions",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got channels",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SearchChannel"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/search/videos": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get all channels matching the given search criteria (by name and tags)",
                "operationId": "79898cdcde9951d199a929077c4b0cce",
                "parameters": [
                    {
                        "name": "q",
                        "in": "query",
                        "description": "The search query to use (does not currently support special qualifiers)",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "adult",
                        "in": "query",
                        "description": "Whether or not to include adult channels (defaults to `false`)",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    },
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)",
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got channels",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/SearchVideo"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/channel/id/{channel_id}/streams": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get stream",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "Channel Id",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got stream"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/channel/id/{channel_name}/streams": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get stream",
                "operationId": "6c48232dfb8f13ac4ce636a72dded772",
                "parameters": [
                    {
                        "name": "channel_name",
                        "in": "path",
                        "description": "Channel name",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got stream"
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/notifications": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get all global notifications/announcements",
                "responses": {
                    "200": {
                        "description": "A successful query, got global notifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/Notifications"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/stream/servers": {
            "get": {
                "tags": [
                    "public"
                ],
                "summary": "Get all stream server endpoint",
                "operationId": "a4117fa3bcaf59be5c8935f3144f4f8e",
                "responses": {
                    "200": {
                        "description": "A successful query, got all stream server endpoints",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/StreamServer"
                                    }
                                }
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request"
                    }
                }
            }
        },
        "/user/chat/settings": {
            "get": {
                "tags": [
                    "chat"
                ],
                "summary": "Get all chat settings",
                "operationId": "getChatSettings",
                "responses": {
                    "200": {
                        "description": "Successfully got all chat settings",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/DisplayChatSetting"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/chat/settings/displaystyle": {
            "post": {
                "tags": [
                    "chat"
                ],
                "summary": "Update the chat display style setting",
                "operationId": "postChatSettingsDisplaystyle",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "value"
                                ],
                                "properties": {
                                    "value": {
                                        "description": "Enable/disable the setting",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully set"
                    },
                    "400": {
                        "description": "Value is not an integer or outside of the valid range (0-2)"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/chat/settings/whispers": {
            "post": {
                "tags": [
                    "chat"
                ],
                "summary": "Update the chat whispers setting",
                "operationId": "postChatSettingsWhispers",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "Enable/disable the setting",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully set"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/chat/settings/emotes": {
            "post": {
                "tags": [
                    "chat"
                ],
                "summary": "Update the chat emotes setting",
                "operationId": "postChatSettingsEmotes",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "Enable/disable the setting",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully set"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/chat/settings/sounds": {
            "post": {
                "tags": [
                    "chat"
                ],
                "summary": "Update the chat sounds setting",
                "operationId": "postChatSettingsSounds",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "Enable/disable the setting",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/chat/settings/timestamps": {
            "post": {
                "tags": [
                    "chat"
                ],
                "summary": "Update the chat timestamps setting",
                "operationId": "postChatSettingsTimestamps",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "Enable/disable the setting",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully set"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/emails": {
            "get": {
                "tags": [
                    "email"
                ],
                "summary": "Get the current email settings",
                "operationId": "getEmails",
                "responses": {
                    "200": {
                        "description": "Got current email settings",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/EmailSettings"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/emails/newsletter": {
            "post": {
                "tags": [
                    "email"
                ],
                "summary": "Toggle newsletter emails",
                "operationId": "postEmailsNewsletter",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable or disable newsletter emails",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled newsletter emails"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/emails/online": {
            "post": {
                "tags": [
                    "email"
                ],
                "summary": "Toggle stream online emails",
                "operationId": "postEmailsOnline",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable or disable online emails",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled newsletter emails",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/emails/follower": {
            "post": {
                "tags": [
                    "email"
                ],
                "summary": "Toggle new follower emails",
                "operationId": "postEmailsFollowers",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable or disable follower emails",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled follower emails"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/mobilenotify": {
            "get": {
                "tags": [
                    "mobile"
                ],
                "summary": "Get state of mobile notifications",
                "operationId": "getMobilenotify",
                "responses": {
                    "200": {
                        "description": "Switched on/off all notifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/MobileNotify"
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            },
            "post": {
                "tags": [
                    "mobile"
                ],
                "summary": "Enable/disable all mobile notifications",
                "operationId": "postMobilenotify",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable all notifications",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched on/off all notifications"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/mobilenotify/follow": {
            "post": {
                "tags": [
                    "mobile"
                ],
                "summary": "Enable/disable follow mobile notifications",
                "operationId": "postMobilenotifyFollow",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable all notifications",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched on/off follow notifications",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/mobilenotify/live": {
            "post": {
                "tags": [
                    "mobile"
                ],
                "summary": "Enable/disable live mobile notifications",
                "operationId": "postMobilenotifyLive",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable all notifications",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched on/off live notifications"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/mobilenotify/subscribe": {
            "post": {
                "tags": [
                    "mobile"
                ],
                "summary": "Enable/disable subscribe notifications",
                "operationId": "postMobilenotifySubscribe",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable all notifications",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched on/off subscribe notifications",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/mobilesettings/adult": {
            "get": {
                "tags": [
                    "mobile"
                ],
                "summary": "Check if a user can see adult content in-app",
                "operationId": "getMobileSettingsAdult",
                "responses": {
                    "200": {
                        "description": "Query successful, got adult app state"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            },
            "post": {
                "tags": [
                    "mobile"
                ],
                "summary": "Enable/disable adult content in-app",
                "operationId": "postMobileSettingsAdult",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If this user is to be able to see adult content in-app",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Successfully updated user adult mobile setting",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/multistream": {
            "get": {
                "tags": [
                    "multistream"
                ],
                "summary": "Get information about the currently running multistream",
                "operationId": "getUserMultistream",
                "responses": {
                    "200": {
                        "description": "Get current multistream session/invites",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/UserMultistream"
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/multistream/invite": {
            "post": {
                "tags": [
                    "multistream"
                ],
                "summary": "Invite a user to a multistream",
                "operationId": "postUserMultistreamInvite",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "channel_id"
                                ],
                                "properties": {
                                    "channel_id": {
                                        "description": "The channel ID to invite",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "User invited to multistream"
                    },
                    "402": {
                        "description": "You must have premium to use this feature",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "Requested channel does not exist"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/multistream/accept": {
            "post": {
                "tags": [
                    "multistream"
                ],
                "summary": "Accept a multistream invite",
                "operationId": "postUserMultistreamAccept",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "channel_id"
                                ],
                                "properties": {
                                    "channel_id": {
                                        "description": "The channel ID to accept the invite from",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Accepted the multistream",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "There is no pending multistream invite"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/multistream/remove": {
            "post": {
                "tags": [
                    "multistream"
                ],
                "summary": "Remove someone from your multistream",
                "operationId": "postUserMultistreamRemove",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "channel_id"
                                ],
                                "properties": {
                                    "channel_id": {
                                        "description": "The channel ID to remove",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Removed this channel from the multistream",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "This channel wasn’t a part of your multistream"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/multistream/decline": {
            "post": {
                "tags": [
                    "multistream"
                ],
                "summary": "Decline a multistream invite/leave a multistream you were invited to",
                "operationId": "postUserMultistreamDecline",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "channel_id"
                                ],
                                "properties": {
                                    "channel_id": {
                                        "description": "The channel ID to decline the invite from/leave the multistream of",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Declined/left the multistream",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "There is no pending multistream invite"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/notifications": {
            "get": {
                "tags": [
                    "notifications"
                ],
                "summary": "Get this user’s notifications",
                "operationId": "getNotifications",
                "responses": {
                    "200": {
                        "description": "Got notifications",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/GetUserNotification"
                                    }
                                }
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/notifications/{uuid}/read": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Mark this notification as read",
                "operationId": "postNotificationsRead",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "UUID of the notification you wish to read",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Marked this notifications as read"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/notifications/all/read": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Delete all of this user’s notifications",
                "operationId": "postNotificationsAllRead",
                "responses": {
                    "200": {
                        "description": "Deleted all notifications",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/notifications/{uuid}/delete": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Delete a notification for this user",
                "operationId": "postNotificationsDelete",
                "parameters": [
                    {
                        "name": "uuid",
                        "in": "path",
                        "description": "UUID of the notification you wish to delete",
                        "required": true
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Deleted notifications",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/notifications/all/delete": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Delete all of this user’s notifications",
                "operationId": "postNotificationsAllDelete",
                "responses": {
                    "200": {
                        "description": "Deleted all notifications"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/onlinenotify/{channel_id}": {
            "get": {
                "tags": [
                    "notifications"
                ],
                "summary": "Get the online notification settings for this channel",
                "operationId": "getOnlineNotifyByChanneId",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "Channel ID of the user you want to get the notifications for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Got notification settings for this channel",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/Notification"
                                }
                            }
                        }
                    },
                    "409": {
                        "description": "You are not following this user, so you cannot change their notification settings"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/onlinenotify/{channel_id}/email": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Enable/disable notifications for a given channel",
                "operationId": "postOnlineNotifyEmail",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "Channel ID of the user you want to get the notifications for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable notifications for this channel",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched notifications on/off for this channel"
                    },
                    "409": {
                        "description": "You are not following this user, so you cannot change their notification settings"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/onlinenotify/{channel_id}/app": {
            "post": {
                "tags": [
                    "notifications"
                ],
                "summary": "Enable/disable notifications for a given channel",
                "operationId": "postOnlineNotifyApp",
                "parameters": [
                    {
                        "name": "channel_id",
                        "in": "path",
                        "description": "Channel ID of the user you want to get the notifications for",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "description": "If we are to enable/disable notifications for this channel",
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched notifications on/off for this channel",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "409": {
                        "description": "You are not following this user, so you cannot change their notification settings"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/private/state": {
            "post": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Enable/disable your private stream - enable when enabled to generate a new token",
                "operationId": "postPrivateState",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Switched your private stream state"
                    },
                    "402": {
                        "description": "You must have premium to use this feature"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/private/token": {
            "post": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Set a new token explicitly",
                "operationId": "postPrivateToken",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "token"
                                ],
                                "properties": {
                                    "token": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Token was successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Token is not alphanumeric or is a bad length"
                    },
                    "402": {
                        "description": "You must have premium to use this feature",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/private/message": {
            "post": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Set a new entry message",
                "operationId": "postPrivateMessage",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "message"
                                ],
                                "properties": {
                                    "message": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Message was successfully set"
                    },
                    "400": {
                        "description": "Message is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "402": {
                        "description": "You must have premium to use this feature"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/recordings/state": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Enable/disable recordings",
                "operationId": "postRecordingsState",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled recordings"
                    },
                    "402": {
                        "description": "You must have premium to use this feature",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get private info about the currently authenticated user",
                "operationId": "getUserDetail",
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/User"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/following": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get information about users we are following",
                "operationId": "getUserFollowing",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)",
                        "required": true,
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    },
                    {
                        "name": "priority_online",
                        "in": "query",
                        "description": "If true, puts users who are online first",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserSubscription"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/followers": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get information about users we are followers",
                "operationId": "getUserFollowers",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)"
                    },
                    {
                        "name": "priority_online",
                        "in": "query",
                        "description": "If true, puts users who are online first"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserFollowing"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/subscriptions": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get information about users we are subscriptions",
                "operationId": "getUserSubscriptions",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)",
                        "schema": {
                            "type": "integer",
                            "format": "int64",
                            "default": 0
                        }
                    },
                    {
                        "name": "priority_online",
                        "in": "query",
                        "description": "If true, puts users who are online first",
                        "schema": {
                            "type": "boolean",
                            "default": false,
                            "enum": [
                                true,
                                false
                            ]
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserSubscription"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "400": {
                        "description": "You do not have access to this user’s sensitive data with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/subscribers": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get information about users subscribed to us",
                "operationId": "getUserSubscribers",
                "parameters": [
                    {
                        "name": "page",
                        "in": "query",
                        "description": "The page to display (defaults to `1`)"
                    },
                    {
                        "name": "priority_online",
                        "in": "query",
                        "description": "If true, puts users who are online first"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "type": "array",
                                    "items": {
                                        "$ref": "#/components/schemas/UserFollowing"
                                    }
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user’s sensitive data with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/streamkey": {
            "get": {
                "tags": [
                    "sensitive"
                ],
                "summary": "Get the stream key of the currently authenticated user",
                "operationId": "getUserStreamKey",
                "responses": {
                    "200": {
                        "description": "A successful query",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "This user does not exist"
                    },
                    "403": {
                        "description": "You do not have access to this user’s sensitive data with your access token"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "sudo"
                        ]
                    }
                ]
            }
        },
        "/user/streamflags/adult": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Toggle adult state on the channel",
                "operationId": "postStreamFlagsAdult",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled adult mode"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/streamflags/gaming": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Toggle gaming state on the channel",
                "operationId": "postStreamFlagsGaming",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled gaming mode",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "409": {
                        "description": "You are not following this user, so you cannot change their notification settings"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/streamflags/commission": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Toggle commission state on the channel",
                "operationId": "postStreamFlagsCommission",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "enable"
                                ],
                                "properties": {
                                    "enable": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Enabled/disabled commission mode",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/title": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s channel title",
                "operationId": "postUpdateUserTitle",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "title"
                                ],
                                "properties": {
                                    "title": {
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Title was successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid title"
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/category": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s channel category",
                "operationId": "postUpdateUserCategory",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "category_id"
                                ],
                                "properties": {
                                    "category_id": {
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Category was successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid category ID"
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/adult": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s channel adult status",
                "operationId": "postUpdateUserAdultStatus",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "adult"
                                ],
                                "properties": {
                                    "adult": {
                                        "type": "boolean"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Adult was successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Invalid adult status"
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/email": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s email",
                "operationId": "postUpdateUserEmail",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "email",
                                    "password"
                                ],
                                "properties": {
                                    "email": {
                                        "type": "string"
                                    },
                                    "password": {
                                        "type": "string",
                                        "format": "password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Email was successfully set",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Email is invalid"
                    },
                    "401": {
                        "description": "Password is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/password": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s password",
                "operationId": "postUpdateUserPassword",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "old",
                                    "new"
                                ],
                                "properties": {
                                    "old": {
                                        "type": "string",
                                        "format": "password"
                                    },
                                    "new": {
                                        "type": "string",
                                        "format": "password"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Password was successfully updated",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Old password is invalid"
                    },
                    "401": {
                        "description": "New password is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error"
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/avatar": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "Update the user’s avatar",
                "operationId": "postUpdateUserAvatar",
                "requestBody": {
                    "content": {
                        "multipart/form-data": {
                            "schema": {
                                "required": [
                                    "avatar"
                                ],
                                "properties": {
                                    "avatar": {
                                        "description": "File to upload",
                                        "type": "file"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Avatar was successfully updated",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "Bad or no file",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "401": {
                        "description": "Maximum upload size 2MB",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "422": {
                        "description": "Validation error",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "403": {
                        "description": "You do not have access to this user with your access token",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/follow": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "follow a channel",
                "operationId": "postUserFollow",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "id"
                                ],
                                "properties": {
                                    "id": {
                                        "description": "User ID to follow",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Followed user",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "400": {
                        "description": "User does not exist",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "409": {
                        "description": "User has already been followed",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/user/unfollow": {
            "post": {
                "tags": [
                    "user"
                ],
                "summary": "unfollow a channel",
                "operationId": "postUserUnfollow",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "id"
                                ],
                                "properties": {
                                    "id": {
                                        "description": "User ID to unfollow",
                                        "type": "integer"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "Unfollowed user",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "User does not exist",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "409": {
                        "description": "User is not being followed",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/webhooks": {
            "get": {
                "tags": [
                    "webhook"
                ],
                "summary": "Webhook management",
                "operationId": "getWebhooks",
                "parameters": [
                    {
                        "name": "client_id",
                        "in": "query",
                        "description": "Your application's client ID"
                    },
                    {
                        "name": "client_secret",
                        "in": "query",
                        "description": "Your application's client secret"
                    },
                    {
                        "name": "channel_id",
                        "in": "query",
                        "description": "A channe ID to filter by",
                        "schema": {
                            "type": "integer",
                            "format": "int64"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got all registered webhooks"
                    },
                    "403": {
                        "description": "Your client ID or client secret is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            },
            "post": {
                "tags": [
                    "webhook"
                ],
                "summary": "Register a webhook",
                "operationId": "postWebhooks",
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "type",
                                    "uri"
                                ],
                                "properties": {
                                    "type": {
                                        "description": "The webhook type. Available values : online, offline, follow, unfollow, subscribe, unsubscribe, event_start, event_end",
                                        "type": "string",
                                        "default": "online",
                                        "enum": [
                                            "online",
                                            "offline",
                                            "follow",
                                            "unfollow",
                                            "subscribe",
                                            "unsubscribe",
                                            "event_start",
                                            "event_end"
                                        ]
                                    },
                                    "uri": {
                                        "description": "Webhook destination URI",
                                        "type": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Successfully registered webhook"
                    },
                    "404": {
                        "description": "This webhook type does not exist",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "409": {
                        "description": "A webhook already exists with the same channel, URI and type"
                    },
                    "425": {
                        "description": "Unable to verify you own this URI Note: This is a custom/undefined HTTP code, and so your client must be designed to handle this correctly.",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                },
                "security": [
                    {
                        "passport": [
                            "readpriv"
                        ]
                    }
                ]
            }
        },
        "/webhooks/{webhook_id}": {
            "get": {
                "tags": [
                    "webhook"
                ],
                "summary": "Webhook management",
                "operationId": "getWebhooksById",
                "parameters": [
                    {
                        "name": "webhook_id",
                        "in": "path",
                        "description": "The webhook ID"
                    },
                    {
                        "name": "client_id",
                        "in": "query",
                        "description": "Your application’s client ID"
                    },
                    {
                        "name": "client_secret",
                        "in": "query",
                        "description": "Your application’s client secret"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "A successful query, got the webhooks"
                    },
                    "403": {
                        "description": "Your client ID or client secret is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "This webhook does not exist under the context of your application"
                    }
                }
            },
            "put": {
                "tags": [
                    "webhook"
                ],
                "summary": "Update a webhook’s URI. Note: You can not change the webhook type. To do that you must create a new webhook, authenticated by the user.",
                "operationId": "putWebhooksById",
                "parameters": [
                    {
                        "name": "webhook_id",
                        "in": "path",
                        "description": "The webhook ID"
                    }
                ],
                "requestBody": {
                    "content": {
                        "application/x-www-form-urlencoded": {
                            "schema": {
                                "required": [
                                    "uri",
                                    "client_id",
                                    "client_secret"
                                ],
                                "properties": {
                                    "uri": {
                                        "description": "Webhook destination URI",
                                        "type": "string",
                                        "format": "string"
                                    },
                                    "client_id": {
                                        "description": "Your application’s client ID",
                                        "type": "string",
                                        "format": "string"
                                    },
                                    "client_secret": {
                                        "description": "Your application’s client secret",
                                        "type": "string",
                                        "format": "string"
                                    }
                                },
                                "type": "object"
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Successfully registered webhook",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "403": {
                        "description": "Your client ID or client secret is invalid"
                    },
                    "404": {
                        "description": "This webhook does not exist",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "425": {
                        "description": "Unable to verify you own this URI. Note: This is a custom/undefined HTTP code, and so your client must be designed to handle this correctly.",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            },
            "delete": {
                "tags": [
                    "webhook"
                ],
                "summary": "Delete a webhook",
                "operationId": "deleteWebhooksById",
                "parameters": [
                    {
                        "name": "webhook_id",
                        "in": "path",
                        "description": "The webhook ID"
                    },
                    {
                        "name": "client_id",
                        "in": "query",
                        "description": "Your application’s client ID"
                    },
                    {
                        "name": "client_secret",
                        "in": "query",
                        "description": "Your application’s client secret"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Successfully deleted this webhook",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "403": {
                        "description": "Your client ID or client secret is invalid",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    },
                    "404": {
                        "description": "This webhook does not exist within the context of your client",
                        "content": {
                            "application/json": {
                                "schema": {}
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "Thumbnails": {
                "description": "Thumbnails",
                "properties": {
                    "web": {
                        "description": "Web size",
                        "type": "string",
                        "format": "string"
                    },
                    "web_large": {
                        "description": "Web HD size",
                        "type": "string",
                        "format": "string"
                    },
                    "mobile": {
                        "description": "Mobile size",
                        "type": "string",
                        "format": "string"
                    },
                    "tablet": {
                        "description": "Tablet size",
                        "type": "string",
                        "format": "string"
                    }
                },
                "type": "object"
            },
            "DescriptionPanel": {
                "description": "This channel's description panels",
                "properties": {
                    "title": {
                        "description": "The description panel's body",
                        "type": "string",
                        "format": "string"
                    },
                    "body": {
                        "description": "The description panel's body",
                        "type": "string",
                        "format": "string"
                    },
                    "image": {
                        "description": "The description panel's attached image URL, if it exists",
                        "type": "string",
                        "format": "string"
                    },
                    "image_link": {
                        "description": "The attached image's link, if th image is set",
                        "type": "string",
                        "format": "string"
                    },
                    "button_text": {
                        "description": "The button's url, if enabled (can be an email)",
                        "type": "string",
                        "format": "string"
                    },
                    "button_link": {
                        "description": "The button's url, if enabled (can be an email)",
                        "type": "string",
                        "format": "string"
                    },
                    "position": {
                        "description": "The attached image's link, if th image is set",
                        "type": "string",
                        "format": "string"
                    }
                },
                "type": "object"
            },
            "Language": {
                "description": "A language",
                "properties": {
                    "id": {
                        "title": "id",
                        "description": "The language ID",
                        "type": "integer",
                        "format": "int32"
                    },
                    "name": {
                        "title": "name",
                        "description": "The human-readable name of the language",
                        "type": "string"
                    }
                },
                "type": "object",
                "xml": {
                    "name": "Language"
                }
            },
            "Languages": {
                "description": "A list of languages",
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/Language"
                }
            },
            "UserData": {
                "description": "Private information about an account",
                "properties": {
                    "email": {
                        "title": "email",
                        "description": "The email address of the user",
                        "type": "string",
                        "format": "string"
                    },
                    "creation_date": {
                        "title": "creation_date",
                        "description": "The date of the channel’s creation",
                        "type": "string",
                        "format": "date"
                    },
                    "private_key": {
                        "title": "private_key",
                        "description": "The user’s key to watch their private stream",
                        "type": "string",
                        "format": "string"
                    },
                    "nsfw_enabled": {
                        "title": "nsfw_enabled",
                        "description": "If this user has enabled NSFW content on the site",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "nsfw_app": {
                        "title": "nsfw_app",
                        "description": "If this user can see NSFW content in-app",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object",
                "xml": {
                    "name": "UserData"
                }
            },
            "OnlineDetails": {
                "description": "This online channel",
                "properties": {
                    "user_id": {
                        "description": "The channel's user ID",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The channel's user ID",
                        "type": "string",
                        "format": "string"
                    },
                    "title": {
                        "description": "The channel title",
                        "type": "string",
                        "format": "string"
                    },
                    "viewers": {
                        "description": "The number of current viewers watching this stream",
                        "type": "integer",
                        "format": "int64"
                    },
                    "thumbnails": {
                        "$ref": "#/components/schemas/Thumbnails"
                    },
                    "category": {
                        "description": "The category this stream is in",
                        "type": "string",
                        "format": "string"
                    },
                    "account_type": {
                        "description": "The account type of the channel",
                        "type": "string",
                        "enum": [
                            "free",
                            "basic",
                            "premium"
                        ]
                    },
                    "adult": {
                        "description": "If this channel is marked as adult",
                        "type": "boolean"
                    },
                    "gaming": {
                        "description": "If this channel is gaming",
                        "type": "boolean"
                    },
                    "commissions": {
                        "description": "If this channel is accepting commissions",
                        "type": "boolean"
                    },
                    "multistream": {
                        "description": "If this channel is hosting or participating in a multistream",
                        "type": "boolean"
                    },
                    "languages": {
                        "$ref": "#/components/schemas/Languages"
                    },
                    "following": {
                        "description": "Whether following or not - only included if provided with valid bearer token",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "OnlineChannels": {
                "description": "A list of online channels",
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/OnlineDetails"
                }
            },
            "Category": {
                "description": "Details of a category",
                "properties": {
                    "id": {
                        "description": "The category ID",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The category name",
                        "type": "string"
                    },
                    "total_channels": {
                        "description": "The total number of channels that are this category",
                        "type": "integer",
                        "format": "int64"
                    },
                    "online_channels": {
                        "description": "The number of channels that are live using this category",
                        "type": "integer",
                        "format": "int64"
                    },
                    "viewers": {
                        "description": "The total number of viewers"
                    },
                    "adult": {
                        "description": "If the category is an adult category",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "Categories": {
                "description": "A list of categories",
                "properties": {
                    "id": {
                        "description": "The category ID",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The category name",
                        "type": "string"
                    },
                    "total_channels": {
                        "description": "The total number of channels that are this category",
                        "type": "integer",
                        "format": "int64"
                    },
                    "online_channels": {
                        "description": "The number of channels that are live using this category",
                        "type": "integer",
                        "format": "int64"
                    },
                    "viewers": {
                        "description": "The total number of viewers",
                        "type": "integer",
                        "format": "int64"
                    },
                    "adult": {
                        "description": "If the category is an adult category",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "ChannelDetails": {
                "description": "Detail about a channel",
                "properties": {
                    "user_id": {
                        "description": "The channel's user ID",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The name of the channel",
                        "type": "string",
                        "format": "string"
                    },
                    "avatar": {
                        "description": "The URI of the user's avatar",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "The the channel is online",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "viewers": {
                        "description": "The numebr of current viewers watching this stream (0 if offline)",
                        "type": "integer",
                        "format": "int64"
                    },
                    "viewers_total": {
                        "description": "The total number of viewers this channel has had since the beginnig of time",
                        "type": "integer",
                        "format": "int64"
                    },
                    "thumbnails": {
                        "$ref": "#/components/schemas/Thumbnails"
                    },
                    "followers": {
                        "description": "The total number of people following this streamer",
                        "type": "integer",
                        "format": "int64"
                    },
                    "subscribers": {
                        "description": "The total number of people subscribed to this streamer",
                        "type": "integer",
                        "format": "int64"
                    },
                    "adult": {
                        "description": "If this channel is an adult channel",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "category": {
                        "description": "The name of the category this stream is in",
                        "type": "string",
                        "format": "string"
                    },
                    "account_type": {
                        "description": "The account type of the channel",
                        "type": "string",
                        "format": "string"
                    },
                    "commissions": {
                        "description": "If this channel is accepting commissions",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "recordings": {
                        "description": "If recordings are enabled and videos are accessible",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "title": {
                        "description": "The channel's title",
                        "type": "string",
                        "format": "string"
                    },
                    "description_panels": {
                        "$ref": "#/components/schemas/DescriptionPanel"
                    },
                    "private": {
                        "description": "If this channel is in private mode",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "private_message": {
                        "description": "The message to display if in private mode",
                        "type": "string",
                        "format": "string"
                    },
                    "gaming": {
                        "description": "If this channel is in game mode",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "chat_settings": {
                        "$ref": "#/components/schemas/ChatSetting"
                    },
                    "last_live": {
                        "description": "",
                        "type": "",
                        "format": ""
                    },
                    "tags": {
                        "description": "",
                        "type": "string",
                        "format": "string"
                    },
                    "multistream": {
                        "$ref": "#/components/schemas/ChannelMultistream"
                    },
                    "languages": {
                        "$ref": "#/components/schemas/Languages"
                    },
                    "following": {
                        "description": "Whether following or not - only included if provided with a valid bearer token",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object"
            },
            "ChannelVideo": {
                "description": "Details of a video",
                "properties": {
                    "title": {
                        "description": "The video title",
                        "type": "string",
                        "format": "string"
                    },
                    "file": {
                        "description": "The location of the file",
                        "type": "string",
                        "format": "string"
                    },
                    "filesize": {
                        "description": "Size (in bytes) of the video file",
                        "type": "integer",
                        "format": "int64"
                    },
                    "duration": {
                        "description": "Duration (in seconds) of the video",
                        "type": "integer",
                        "format": "int64"
                    },
                    "views": {
                        "description": "The total number of views this video has",
                        "type": "integer",
                        "format": "int64"
                    },
                    "timestamp": {
                        "description": "The total number of views this video has",
                        "type": "string",
                        "format": "string"
                    },
                    "adult": {
                        "description": "If this video is adult",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object"
            },
            "ChannelVideos": {
                "description": "A list of videos",
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/ChannelVideo"
                }
            },
            "SearchChannel": {
                "description": "This search channel",
                "properties": {
                    "user_id": {
                        "description": "The user id",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The channel name",
                        "type": "string",
                        "format": "string"
                    },
                    "avatar": {
                        "description": "The avatar of channel",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "The status of online",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "SearchVideo": {
                "description": "This search channel",
                "properties": {
                    "channel": {
                        "$ref": "#/components/schemas/SearchChannel"
                    },
                    "video": {
                        "$ref": "#/components/schemas/ChannelVideo"
                    }
                },
                "type": "object"
            },
            "User": {
                "description": "This current user",
                "properties": {
                    "channel_details": {
                        "$ref": "#/components/schemas/ChannelDetails"
                    },
                    "email": {
                        "description": "The user email",
                        "type": "string",
                        "format": "string"
                    },
                    "creation_date": {
                        "description": "The user creation_date",
                        "type": "string",
                        "format": "string"
                    },
                    "private_key": {
                        "description": "The user private key",
                        "type": "string"
                    },
                    "nsfw_enabled": {
                        "description": "The nsfw_enabled",
                        "type": "boolean"
                    },
                    "nsfw_app": {
                        "description": "The nsfw_app",
                        "type": "boolean"
                    },
                    "filter_message": {
                        "description": "The filter_message",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UserFollowing": {
                "description": "This user following",
                "properties": {
                    "user_id": {
                        "description": "The user id",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The channel name",
                        "type": "string",
                        "format": "string"
                    },
                    "avatar": {
                        "description": "The avatar of channel",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "The status of online",
                        "type": "boolean"
                    },
                    "subscriber": {
                        "description": "subscriber",
                        "type": "boolean"
                    },
                    "subscribe_can_expire": {
                        "description": "subscribe_can_expire",
                        "type": "boolean"
                    },
                    "subscribe_expires": {
                        "description": "subscribe_expires",
                        "type": "string"
                    }
                },
                "type": "object"
            },
            "UserGeneric": {
                "description": "This user generic",
                "properties": {
                    "user_id": {
                        "description": "The user id",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The channel name",
                        "type": "string",
                        "format": "string"
                    },
                    "avatar": {
                        "description": "The avatar of channel",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "The status of online",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "UserGenerics": {
                "description": "A list of users",
                "type": "array",
                "items": {
                    "$ref": "#/components/schemas/UserGeneric"
                }
            },
            "UserMultistreamSession": {
                "description": "This user multistream session",
                "properties": {
                    "online": {
                        "description": "The status of online",
                        "type": "boolean"
                    },
                    "host": {
                        "$ref": "#/components/schemas/UserGeneric"
                    },
                    "guests": {
                        "$ref": "#/components/schemas/UserGeneric"
                    }
                },
                "type": "object"
            },
            "UserMultistream": {
                "description": "This user multistream",
                "properties": {
                    "incoming": {
                        "$ref": "#/components/schemas/UserGenerics"
                    },
                    "outgoing": {
                        "$ref": "#/components/schemas/UserGenerics"
                    },
                    "session": {
                        "$ref": "#/components/schemas/UserMultistreamSession"
                    }
                },
                "type": "object"
            },
            "ChannelMultistream": {
                "description": "channel multistream",
                "properties": {
                    "user_id": {
                        "description": "user id",
                        "type": "integer",
                        "format": "integer"
                    },
                    "name": {
                        "description": "name id",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "online",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "adult": {
                        "description": "adult",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object"
            },
            "ChatSetting": {
                "description": "chat setting",
                "properties": {
                    "guest_chat": {
                        "description": "guest_chat  ",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "links": {
                        "description": "links  ",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "level": {
                        "description": "level",
                        "type": "integer",
                        "format": "integer"
                    }
                },
                "type": "object"
            },
            "WebHooks": {
                "description": "web hooks",
                "properties": {
                    "id": {
                        "description": "id",
                        "type": "string",
                        "format": "string"
                    },
                    "channel": {
                        "$ref": "#/components/schemas/SearchChannel"
                    },
                    "type": {
                        "description": "type",
                        "type": "string",
                        "format": "string"
                    },
                    "uri": {
                        "description": "uri",
                        "type": "string",
                        "format": "string"
                    }
                },
                "type": "object"
            },
            "Notification": {
                "description": "notification",
                "properties": {
                    "email": {
                        "description": "email",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "app": {
                        "description": "app",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object"
            },
            "UserNotification": {
                "description": "UserNotification",
                "properties": {
                    "email": {
                        "description": "email",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "app": {
                        "description": "app",
                        "type": "boolean",
                        "format": "boolean"
                    }
                },
                "type": "object"
            },
            "UserSubscription": {
                "description": "UserSubscription",
                "properties": {
                    "user_id": {
                        "description": "The user id",
                        "type": "integer",
                        "format": "int64"
                    },
                    "name": {
                        "description": "The channel name",
                        "type": "string",
                        "format": "string"
                    },
                    "avatar": {
                        "description": "The avatar of channel",
                        "type": "string",
                        "format": "string"
                    },
                    "online": {
                        "description": "The status of online",
                        "type": "boolean"
                    },
                    "notifications": {
                        "$ref": "#/components/schemas/UserNotification"
                    }
                },
                "type": "object"
            },
            "DisplayChatSetting": {
                "description": "DisplayChatSetting",
                "properties": {
                    "display_style": {
                        "description": "display_style user id",
                        "type": "integer",
                        "format": "integer"
                    },
                    "whispers": {
                        "description": "whispers",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "emotes": {
                        "description": "emotes",
                        "type": "boolean",
                        "format": "boolean"
                    },
                    "sounds": {
                        "description": "sounds",
                        "type": "boolean"
                    },
                    "timestamps": {
                        "description": "timestamps",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "GetUserNotification": {
                "description": "GetUserNotification",
                "properties": {
                    "type": {
                        "description": "type",
                        "type": "string",
                        "format": "string"
                    },
                    "uuid": {
                        "description": "uuid",
                        "type": "string",
                        "format": "string"
                    },
                    "body": {
                        "description": "body",
                        "type": "string",
                        "format": "string"
                    },
                    "channel": {
                        "description": "channel",
                        "type": "string"
                    },
                    "uri": {
                        "description": "uri",
                        "type": "string"
                    },
                    "hasIcon": {
                        "description": "hasIcon",
                        "type": "string"
                    },
                    "timestamp": {
                        "description": "timestamp",
                        "type": "integer"
                    },
                    "unread": {
                        "description": "unread",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "EmailSettings": {
                "description": "EmailSettings",
                "properties": {
                    "newsletter": {
                        "description": "newsletter",
                        "type": "boolean"
                    },
                    "live": {
                        "description": "live",
                        "type": "boolean"
                    },
                    "follow": {
                        "description": "follow",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "MobileNotify": {
                "description": "MobileNotify",
                "properties": {
                    "master": {
                        "description": "master",
                        "type": "boolean"
                    },
                    "live": {
                        "description": "live",
                        "type": "boolean"
                    },
                    "follow": {
                        "description": "follow",
                        "type": "boolean"
                    },
                    "subscribe": {
                        "description": "subscribe",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "Notifications": {
                "description": "global notification",
                "properties": {
                    "body": {
                        "description": "body",
                        "type": "string"
                    },
                    "uri": {
                        "description": "uri",
                        "type": "string"
                    },
                    "timestamp": {
                        "description": "timestamp",
                        "type": "boolean"
                    }
                },
                "type": "object"
            },
            "StreamServer": {
                "description": "Details of a StreamServers",
                "properties": {
                    "name": {
                        "description": "The stream name",
                        "type": "string"
                    },
                    "url": {
                        "description": "The stream server url",
                        "type": "string"
                    }
                },
                "type": "object"
            }
        },
        "securitySchemes": {
            "OAuth2Access": {
                "type": "oauth2",
                "description": "A short description for oauth2 security scheme.",
                "flows": {
                    "authorizationCode": {
                        "authorizationUrl": "https://oauth.picarto.tv/oauth/authorize",
                        "tokenUrl": "https://oauth.picarto.tv/token",
                        "scopes": {
                            "readpub": "Read basic, publicly available account info, such as user ID (not username), channel name <br />\n                      Receive notifications for going live, being followed and being subscribed to",
                            "readpriv": "Read sensitive account info + readpub",
                            "write": "Modify account details, perform account actions + readpriv",
                            "sudo": "Run actions that may cost the user money, such as subscribe to channels, along any action that would normally be allowed by logging into the account"
                        }
                    }
                }
            }
        }
    },
    "tags": [
        {
            "name": "public",
            "description": "Publicly accessible operations without any need for authentication"
        },
        {
            "name": "channel",
            "description": "All channel information"
        },
        {
            "name": "chat",
            "description": "All operations that read or write user chat setting"
        },
        {
            "name": "email",
            "description": "All operations that read or write user email setting"
        },
        {
            "name": "multistream",
            "description": "All operations that affect multistream state"
        },
        {
            "name": "mobile",
            "description": "All operations that affect mobile settings and notification"
        },
        {
            "name": "notifications",
            "description": "All operations that read or write user notifications"
        },
        {
            "name": "sensitive",
            "description": "All operations that retrieve sensitive account information"
        },
        {
            "name": "user",
            "description": "All operations that read or write account information"
        },
        {
            "name": "webhook",
            "description": "Webhook management"
        }
    ],
    "security": [
        {
            "OAuth2Access": [
                "readpub",
                "readpriv",
                "write",
                "sudo"
            ]
        }
    ]
}