{
  "swagger": "2.0",
  "info": {
    "description": "The Website Toolbox REST API allows you to programmatically interact with your forum. Our API has predictable, resource-oriented URLs, uses standard HTTP methods, and returns JSON responses. HTTP response codes are used to indicate API errors.\n\nAn <a href=\"https://github.com/webtoolbox/websitetoolbox-mcp\">MCP server</a> is also available for integrating with AI tools and agents.\n\n## Rate limits\n\nThe API rate limit is currently set to **5 requests per second** with a burst limit of **10 requests**. The daily limit is **50,000 API requests**. If you have exceeded the limit, you will receive an HTTP 429 response code. If you need a higher limit, <a href=\"https://www.websitetoolbox.com/contact?subject=Increase+API+quota&do=notify\">contact us</a>.",
    "version": "v1",
    "title": "Website Toolbox API Reference"
  },
  "host": "api.websitetoolbox.com",
  "basePath": "/v1",
  "schemes": [
    "https"
  ],
  "paths": {
    "/api/categories": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List categories",
        "description": "Returns a list of categories. The categories are returned sorted by displayorder, minimum displayorder category appearing first.",
        "operationId": "getCategories",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 to 100, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListCategories"
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Categories"
        ],
        "summary": "Create a category",
        "description": "Creates a new category object.",
        "operationId": "createCategory",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddCategory",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddCategory"
            },
            "description": "The category details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Category"
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/categories/{categoryId}": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "Retrieve a category",
        "description": "Retrieves the details of an existing category. You need only supply the unique category identifier that was returned upon category creation.",
        "operationId": "getCategory",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "categoryId",
            "in": "path",
            "description": "The unique identifier for a category.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Category"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Categories"
        ],
        "summary": "Update a category",
        "description": "Updates the specified category by setting the values of the parameters passed. Any parameters not provided will be left unchanged. This request accepts mostly the same arguments as the category creation call.",
        "operationId": "updateCategory",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "categoryId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the category."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdateCategory",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateCategory"
            },
            "description": "The category fields to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Category"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Categories"
        ],
        "summary": "Delete a category",
        "description": "Permanently deletes a category. It cannot be undone. Also immediately deletes any topics and posts on the category.",
        "operationId": "deleteCategory",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "categoryId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the category."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/categories/{categoryId}/permissions": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List category permissions",
        "description": "Returns a list of all userGroup permissions for a category.",
        "operationId": "getCategoryPermissions",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "categoryId",
            "in": "path",
            "description": "The unique identifier for a category.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 to 100, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListCategoryPermissions"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/categories/{categoryId}/permissions/{userGroupId}": {
      "post": {
        "tags": [
          "Categories"
        ],
        "summary": "Update category permissions",
        "description": "Updates the permissions of specified userGroup by setting the values of the permissions passed. Any permissions not provided will be left unchanged.",
        "operationId": "updateCategoryPermission",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "categoryId",
            "in": "path",
            "description": "The unique identifier for a category.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "userGroupId",
            "in": "path",
            "description": "Unique identifier for the user group object.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdateCategoryPermission",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateCategoryPermission"
            },
            "description": "The permission settings to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/UpdateCategoryPermission"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/category_moderators": {
      "get": {
        "tags": [
          "Moderators"
        ],
        "summary": "List moderators",
        "description": "Returns a list of all moderators for all categories.",
        "operationId": "getCategoryModerators",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Page number of results to return."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "categoryId",
            "in": "query",
            "description": "Category ID to filter the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListModerators"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "summary": "Create a moderator",
        "description": "Creates a new moderator object.",
        "operationId": "createCategoryModerator",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddModerators",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddModerators"
            },
            "description": "The moderator assignment details."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/AddedModerators"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "Moderators"
        ]
      }
    },
    "/api/category_moderators/{moderatorId}": {
      "get": {
        "summary": "Retrieve a moderator",
        "description": "Retrieves the details of an existing moderator. You need only supply the unique moderator identifier that was returned upon moderator creation.",
        "operationId": "getModerator",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "moderatorId",
            "in": "path",
            "description": "The unique identifier for a moderator.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/CategoryModerators"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified moderator does not exist.",
                  "code": "InvalidModeratorId",
                  "param": "moderatorId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "Moderators"
        ]
      },
      "post": {
        "summary": "Update a moderator",
        "description": "Updates the specified moderator by setting the values of the parameters passed. Any parameters not provided will be left unchanged.",
        "operationId": "updateCategoryModerator",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "moderatorId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the moderator."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdateModerator",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateModerator"
            },
            "description": "The moderator details to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/CategoryModerators"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified moderator does not exist.",
                  "code": "InvalidModeratorId",
                  "param": "moderatorId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "Moderators"
        ]
      },
      "delete": {
        "summary": "Delete a moderator",
        "description": "Permanently deletes a moderator. It cannot be undone.",
        "operationId": "deleteModerator",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "moderatorId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the moderator."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified moderator does not exist.",
                  "code": "InvalidModeratorId",
                  "param": "moderatorId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "tags": [
          "Moderators"
        ]
      }
    },
    "/api/conversations": {
      "get": {
        "tags": [
          "Conversations"
        ],
        "summary": "List conversations",
        "description": "Returns a list of conversations. The conversations are returned sorted by creation date, with the most recent conversations appearing first. The x-api-email or x-api-username header is required.",
        "operationId": "getConversations",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "description": "The unique identifier of a member to filter the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "folder",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "The folder to filter conversations by. Possible values are inbox, sent, or archive."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListConversations"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Conversations"
        ],
        "summary": "Create a conversation",
        "description": "Creates a new conversation object. The x-api-email or x-api-username header is required.",
        "operationId": "createConversation",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "in": "body",
            "name": "AddConversation",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddConversation"
            },
            "description": "The conversation details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Conversation"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/conversations/{conversationId}": {
      "get": {
        "tags": [
          "Conversations"
        ],
        "summary": "Retrieve a conversation",
        "description": "Retrieves the details of an existing conversation. You need only supply the unique conversation identifier that was returned upon conversation creation. The x-api-email or x-api-username header is required.",
        "operationId": "getConversation",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Conversation"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified conversation does not exist.",
                  "code": "InvalidConversationId",
                  "param": "conversationId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Conversations"
        ],
        "summary": "Delete a conversation",
        "description": "Permanently deletes a conversation. It cannot be undone. The x-api-email or x-api-username header is required.",
        "operationId": "deleteConversation",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the conversation."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified conversation does not exist.",
                  "code": "InvalidConversationId",
                  "param": "conversationId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/conversations/{conversationId}/messages": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "List messages",
        "description": "Returns a list of your messages for a conversation. The messages are returned sorted by creation date, with the most recent messages appearing first. The x-api-email or x-api-username header is required.",
        "operationId": "getMessages",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "description": "The unique identifier of a member to filter the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "includeId",
            "in": "query",
            "description": "When this parameter is provided, the API will return the page that includes the object with the ID specified in includeId.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListMessages"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified conversation does not exist.",
                  "code": "InvalidConversationId",
                  "param": "conversationId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Messages"
        ],
        "summary": "Create a message",
        "description": "Creates a new message object for conversation. The x-api-email or x-api-username header is required.",
        "operationId": "createMessage",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the conversation."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "in": "body",
            "name": "AddMessage",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddMessage"
            },
            "description": "The message details to add to the conversation."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Message"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified conversation does not exist.",
                  "code": "InvalidConversationId",
                  "param": "conversationId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/conversations/{conversationId}/messages/{messageId}": {
      "get": {
        "tags": [
          "Messages"
        ],
        "summary": "Retrieve a message",
        "description": "Retrieves the details of an existing message. You need only supply the unique message identifier that was returned upon message creation. The x-api-email or x-api-username header is required.",
        "operationId": "getMessage",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "description": "The unique identifier of a member to filter the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "messageId",
            "in": "path",
            "description": "The unique identifier of a message.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "includeId",
            "in": "query",
            "description": "When this parameter is provided, the API will return the page that includes the object with the ID specified in includeId.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Message"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified conversation does not exist.",
                  "code": "InvalidConversationId",
                  "param": "conversationId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/page_views": {
      "get": {
        "tags": [
          "Page views"
        ],
        "summary": "List page views",
        "description": "Returns a list of page views. Page views are added in real-time and reset hourly",
        "operationId": "getPageViews",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Page number of results to return."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListPageViews"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/posts": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "List posts",
        "description": "Returns a list of posts. The posts are returned sorted by creation date, with the most recent posts appearing first. When the postId parameter is specified, you can sort by postId to have the posts ordered in the order the IDs were specified.",
        "operationId": "getPosts",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "query",
            "description": "Post Ids to filter out the results. When the postId parameter is specified, you can sort by postId to have the posts ordered in the order the IDs were specified.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "categoryId",
            "in": "query",
            "description": "Category Ids to filter out the results.",
            "required": false,
            "type": "string"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "expand",
            "in": "query",
            "description": "Include related objects in the response. Possible values are 'topic' and 'category'.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          },
          {
            "name": "userId",
            "in": "query",
            "description": "User Ids to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "showqueries",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Whether to include query posts in the results."
          },
          {
            "name": "topicId",
            "in": "query",
            "description": "Topic Ids to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "To sort out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "order",
            "in": "query",
            "description": "Order of Posts. It supports values of either asc or desc for ascending or descending order. Desc is the default.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "includeId",
            "in": "query",
            "description": "When this parameter is provided, the API will return the page that includes the object with the ID specified in includeId.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListPosts"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Posts"
        ],
        "summary": "Create a post",
        "description": "Creates a new post object.",
        "operationId": "createPost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddPost",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddPost"
            },
            "description": "The post details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/posts/{postId}": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "Retrieve a post",
        "description": "Retrieves the details of an existing post. You need only supply the unique post identifier that was returned upon post creation.",
        "operationId": "getPost",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "expand",
            "in": "query",
            "description": "Include related objects in the response. Possible values are 'topic' and 'category'.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified post does not exist.",
                  "code": "InvalidPostId",
                  "param": "postId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Posts"
        ],
        "summary": "Update a post",
        "description": "Updates the specified post by setting the values of the parameters passed. Any parameters not provided will be left unchanged.",
        "operationId": "updatePost",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdatePost",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdatePost"
            },
            "description": "The post fields to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Post"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified post does not exist.",
                  "code": "InvalidPostId",
                  "param": "postId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Posts"
        ],
        "summary": "Delete a post",
        "description": "Permanently deletes a post. It cannot be undone. Also immediately deletes any attachments on the post.",
        "operationId": "deletePost",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified post does not exist.",
                  "code": "InvalidPostId",
                  "param": "postId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "List tags",
        "description": "Returns a list of tags.",
        "operationId": "getTags",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items."
          },
          {
            "name": "page",
            "in": "query",
            "required": false,
            "type": "string",
            "description": "Page number of results to return."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListTags"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/topics": {
      "get": {
        "tags": [
          "Topics"
        ],
        "summary": "List topics",
        "description": "Returns a list of topics. The topics are returned sorted by creation date, with the most recent topics appearing first. When the topicId parameter is specified, you can sort by topicId to have the topics ordered in the order the IDs were specified.",
        "operationId": "getTopics",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "userId",
            "in": "query",
            "description": "User Ids to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "topicId",
            "in": "query",
            "description": "Topic Ids to filter out the results. When the topicId parameter is specified, you can sort by topicId to have the topics ordered in the order the IDs were specified.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "tagName",
            "in": "query",
            "description": "Tag names to filter out the results. When multiple tagName values are provided, topics matching any of the tags are returned and each topic is counted only once.",
            "required": false,
            "type": "string",
            "x-custom-info": "string array"
          },
          {
            "name": "tagId",
            "in": "query",
            "description": "Tag Ids to filter out the results. When multiple tagId values are provided, topics matching any of the tags are returned and each topic is counted only once.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "To sort out the results. Possible values are top, latest, new or views.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "categoryId",
            "in": "query",
            "description": "Category Ids to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer array"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "period",
            "in": "query",
            "description": "To filter out the results for the \"top\" sort method. Possible values are all, year, quarter, month, week or today.",
            "required": false,
            "type": "string"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "expand",
            "in": "query",
            "description": "Include related objects in the response. Possible values are 'category' and 'poll'.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListTopics"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Topics"
        ],
        "summary": "Create a topic",
        "description": "Creates a new topic object.",
        "operationId": "createTopic",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddTopic",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddTopic"
            },
            "description": "The topic details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/topics/{topicId}": {
      "get": {
        "tags": [
          "Topics"
        ],
        "summary": "Retrieve a topic",
        "description": "Retrieves the details of an existing topic. You need only supply the unique topic identifier that was returned upon topic creation.",
        "operationId": "getTopic",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "topicId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the topic."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "expand",
            "in": "query",
            "description": "Include related objects in the response. Possible values are 'category' and 'poll'.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Topic"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified topic does not exist.",
                  "code": "InvalidTopicId",
                  "param": "topicId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Topics"
        ],
        "summary": "Delete a topic",
        "description": "Permanently deletes a topic. It cannot be undone. Also immediately deletes all posts in the topic.",
        "operationId": "deleteTopic",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "topicId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the topic."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified topic does not exist.",
                  "code": "InvalidTopicId",
                  "param": "topicId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/usergroups": {
      "get": {
        "tags": [
          "User groups"
        ],
        "summary": "List user groups",
        "description": "Returns a list of all user groups.",
        "operationId": "getUserGroups",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 and 100 items, and the default is 10 items.",
            "required": false,
            "type": "string"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "title",
            "in": "query",
            "description": "It can be string or array which can be used to filter the results by the title of the user group.",
            "required": false,
            "type": "string",
            "x-custom-info": "string array"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListUsergroups"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "User groups"
        ],
        "summary": "Create a user group",
        "description": "Creates a new custom user group object.",
        "operationId": "createUserGroup",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddUsergroup",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddUsergroup"
            },
            "description": "The user group details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/UserGroup"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/usergroups/{usergroupId}": {
      "get": {
        "tags": [
          "User groups"
        ],
        "summary": "Retrieve a user group",
        "description": "Retrieves the details of an existing user group. You need only supply the unique user group identifier.",
        "operationId": "getUserGroup",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/UserGroup"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user group does not exist.",
                  "code": "InvalidUsergroupId",
                  "param": "usergroupId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "User groups"
        ],
        "summary": "Update a user group",
        "description": "Updates the specified user group by setting the values of the parameters passed. Any parameters not provided will be left unchanged.",
        "operationId": "updateUserGroup",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdateUsergroup",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUsergroup"
            },
            "description": "The user group fields to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/UserGroup"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user group does not exist.",
                  "code": "InvalidUsergroupId",
                  "param": "usergroupId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "User groups"
        ],
        "summary": "Delete a user group",
        "description": "Permanently deletes a custom user group. It cannot be undone.",
        "operationId": "deleteUserGroup",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user group does not exist.",
                  "code": "InvalidUsergroupId",
                  "param": "usergroupId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/usergroups/{usergroupId}/users": {
      "post": {
        "tags": [
          "User groups"
        ],
        "summary": "Add users to a user group",
        "description": "You may use one of the following request body params to specify the users to add.",
        "operationId": "addUsersInGroup",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddRemoveUsersToUsergroup",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddRemoveUsersToUsergroup"
            },
            "description": "The list of user IDs to add or remove from the user group."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "User groups"
        ],
        "summary": "Remove users from a user group",
        "description": "You may use one of the following request body params to specify the users to remove.",
        "operationId": "removeUsersFromUserGroup",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddRemoveUsersToUsergroup",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddRemoveUsersToUsergroup"
            },
            "description": "The list of user IDs to add or remove from the user group."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/users": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "List users",
        "description": "Returns a list of users on forum. The users are returned sorted by creation date, with the most recent users appearing first.",
        "operationId": "getUsers",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "username",
            "in": "query",
            "description": "The username of member to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "string"
          },
          {
            "name": "postCount",
            "in": "query",
            "description": "The post count of user to filter out the results. The value should be in the format of \"operator value\", where value can be a number and operator can be <, >, <=, >=, !=, or <>. For example: > 5.",
            "required": false,
            "type": "string",
            "x-custom-info": "operator value"
          },
          {
            "name": "currentMonthPageViews",
            "in": "query",
            "description": "The current month page views of user to filter out the results. The value should be in the format of \"operator value\", where value can be a number and operator can be <, >, <=, >=, !=, or <>. For example: > 5.",
            "required": false,
            "type": "string",
            "x-custom-info": "operator value"
          },
          {
            "name": "userGroupId",
            "in": "query",
            "description": "The userGroupId of user to filter out the results.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "lastVisitTimestamp",
            "in": "query",
            "description": "The lastVisitTimestamp of user to filter out the results. The value should be in the format of \"operator value\", where value can be a number and operator can be <, >, <=, >=, !=, or <>. For example: > 5.",
            "required": false,
            "type": "string",
            "x-custom-info": "operator value"
          },
          {
            "name": "email",
            "in": "query",
            "description": "The email of member to filter out the results.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Limit the results for a particular request. Minimum is 1, maximum is 100 and default value is 10.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "lastPostTimestamp",
            "in": "query",
            "description": "The lastPostTimestamp of user to filter out the results. The value should be in the format of \"operator value\", where value can be a number and operator can be <, >, <=, >=, !=, or <>. For example: > 5.",
            "required": false,
            "type": "string",
            "x-custom-info": "operator value"
          },
          {
            "name": "joinDateTimestamp",
            "in": "query",
            "description": "The joinDateTimestamp of user to filter out the results. The value should be in the format of \"operator value\", where value can be a number and operator can be <, >, <=, >=, !=, or <>. For example: > 5.",
            "required": false,
            "type": "string",
            "x-custom-info": "operator value"
          },
          {
            "name": "includeId",
            "in": "query",
            "description": "When this parameter is provided, the API will return the page that includes the object with the ID specified in includeId.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListUsers"
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Create a user",
        "description": "Creates a new user object.\n\nNote that if you're using Single Sign On, user accounts are automatically created if they don't exist during the log in request. Using the API to create user accounts isn't required.",
        "operationId": "createUser",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "AddUser",
            "required": true,
            "schema": {
              "$ref": "#/definitions/AddUser"
            },
            "description": "The user details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/User"
            },
            "headers": {
              "Access-Control-Allow-Origin": {
                "type": "string"
              }
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/users/{userId}": {
      "get": {
        "tags": [
          "Users"
        ],
        "summary": "Retrieve a user",
        "description": "Retrieves the details of an existing user. You need only supply the unique user identifier that was returned upon user creation.",
        "operationId": "getUser",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the user."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user does not exist.",
                  "code": "InvalidUserId",
                  "param": "userId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "post": {
        "tags": [
          "Users"
        ],
        "summary": "Update a user",
        "description": "Updates the specified user by setting the values of the parameters passed. Any parameters not provided will be left unchanged. <p>This request accepts mostly the same arguments as the user creation call.</p>",
        "operationId": "updateUser",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the user."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "in": "body",
            "name": "UpdateUser",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UpdateUser"
            },
            "description": "The user fields to update."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/User"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user does not exist.",
                  "code": "InvalidUserId",
                  "param": "userId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Users"
        ],
        "summary": "Delete a user",
        "description": "Permanently deletes a user. It cannot be undone.",
        "operationId": "deleteUser",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the user."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          },
          "400": {
            "description": "400 response",
            "schema": {
              "$ref": "#/definitions/Error"
            },
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified user does not exist.",
                  "code": "InvalidUserId",
                  "param": "userId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/users/{userId}/followed_topics": {
      "post": {
        "tags": [
          "Topics"
        ],
        "summary": "Follow topics",
        "description": "Follow topics to get notified about new replies. It would take an array of topic IDs to follow.",
        "operationId": "followTopics",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the user."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "in": "body",
            "name": "FollowTopics",
            "required": true,
            "schema": {
              "$ref": "#/definitions/FollowTopics"
            },
            "description": "The list of topic IDs to follow."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      },
      "delete": {
        "tags": [
          "Topics"
        ],
        "summary": "Unfollow topics",
        "description": "To stop getting notified about new replies. It would take an array of topic IDs to unfollow.",
        "operationId": "unfollowTopics",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the user."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "in": "body",
            "name": "UnfollowTopics",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UnfollowTopics"
            },
            "description": "The list of topic IDs to unfollow."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/DeleteResponse"
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/webhook-endpoints": {
      "post": {
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "in": "body",
            "name": "CreateWebhookEndpoint",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CreateWebhookEndpoint"
            },
            "description": "The webhook endpoint details to create."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response"
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "summary": "Create a webhook endpoint",
        "tags": [
          "Webhooks"
        ],
        "operationId": "createWebhookEndpoint"
      }
    },
    "/api/webhook-endpoints/{webhookEndpointId}": {
      "delete": {
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "webhookEndpointId",
            "in": "path",
            "required": true,
            "type": "integer",
            "description": "The unique identifier for the webhook endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response"
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The webhook endpoint you specified does not exist.",
                  "code": "InvalidWebhookEndpoint",
                  "param": "webhookEndpointId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "summary": "Delete a webhook endpoint",
        "tags": [
          "Webhooks"
        ],
        "operationId": "deleteWebhookEndpoint"
      }
    },
    "/api/topics/{topicId}/followers": {
      "get": {
        "tags": [
          "Topics"
        ],
        "summary": "List topic followers",
        "description": "Returns a list of users who are following the specified topic, either directly or via category auto-follow. This endpoint is restricted to administrators and category moderators.",
        "operationId": "getTopicFollowers",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "topicId",
            "in": "path",
            "description": "The ID of the topic to get followers for.",
            "required": true,
            "type": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 to 100, and the default is 10.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API.",
            "required": true,
            "type": "string"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member.",
            "required": false,
            "type": "string"
          },
          {
            "name": "x-api-email",
            "in": "header",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListUsers"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "403": {
            "description": "403 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You do not have permission to view topic followers.",
                  "code": "NoPermission",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified topic does not exist.",
                  "code": "InvalidTopicId",
                  "param": "topicId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "List notifications",
        "description": "Returns a list of notifications for the authenticated user. Notifications are returned in reverse chronological order. The x-api-email or x-api-username header is required.",
        "operationId": "getNotifications",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 to 100, and the default is 10.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. Either x-api-username or x-api-email is required for this endpoint."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListNotifications"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    },
    "/api/posts/{postId}/edits": {
      "get": {
        "tags": [
          "Posts"
        ],
        "summary": "List post edits",
        "description": "Returns a list of edits for a specific post. Edits are returned in reverse chronological order.",
        "operationId": "getPostEdits",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "postId",
            "in": "path",
            "description": "The unique identifier for the post.",
            "required": true,
            "type": "integer",
            "x-custom-info": "integer"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "A limit on the number of objects to be returned. Limit can range between 1 to 100, and the default is 10.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number of results to return.",
            "required": false,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication. Get this from the admin area under Integrate > API."
          },
          {
            "name": "x-api-username",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The username of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          },
          {
            "name": "x-api-email",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "The email of the member to authenticate as. This header is optional. Provide it only when the request needs to act as (or act on behalf of) a specific member."
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/ListPostEdits"
            }
          },
          "400": {
            "description": "400 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "You are not permitted to perform this action.",
                  "code": "InvalidAccess",
                  "param": "x-api-username"
                }
              }
            }
          },
          "404": {
            "description": "404 response",
            "examples": {
              "application/json": {
                "status": "error",
                "error": {
                  "message": "The specified post does not exist.",
                  "code": "InvalidPostId",
                  "param": "postId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ]
      }
    }
  },
  "securityDefinitions": {
    "api_key": {
      "type": "apiKey",
      "name": "x-api-key",
      "in": "header"
    }
  },
  "definitions": {
    "AddPost": {
      "allOf": [
        {
          "$ref": "#/definitions/Post"
        },
        {
          "type": "object",
          "properties": {
            "content": {
              "type": "string",
              "description": "Content is usually a message, and its purpose is either to ask a question, answer a question or to contribute towards the forum discussion by expressing an opinion or bringing forth information."
            },
            "username": {
              "type": "string",
              "description": "The username of member to create this object."
            }
          }
        }
      ],
      "x-internal": true,
      "required": [
        "content",
        "topicId",
        "username"
      ],
      "title": "Post",
      "description": "Parameters for creating a new post."
    },
    "ListTopics": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Topic"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "ListUsergroups": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/UserGroup"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "Category": {
      "type": "object",
      "properties": {
        "categoryId": {
          "type": "integer",
          "description": "The unique identifier for a category.",
          "readOnly": true
        },
        "description": {
          "type": "string",
          "description": "An arbitrary string which you can attach to a category object. It is displayed alongside the category in the web interface."
        },
        "unlisted": {
          "type": "boolean",
          "description": "Boolean representing whether a category is unlisted or not. Unlisted will hide it on the category listing on forum."
        },
        "title": {
          "type": "string",
          "description": "This is the name of the category. It describes the theme of the discussions within the category in a concise manner."
        },
        "locked": {
          "type": "boolean",
          "description": "Boolean representing whether a category is locked or not. Locked will prevent any new posts from being made in the category."
        },
        "passwordProtected": {
          "type": "boolean",
          "description": "Boolean representing whether a category is password protected or not. It is used to password protect the category so only people with the correct password can enter.",
          "readOnly": true
        },
        "linked": {
          "type": "string",
          "description": "The category will not be a real category. Instead it will simply be a link to the URL you provide."
        },
        "parentId": {
          "type": "integer",
          "description": "The categoryId of parent category."
        },
        "object": {
          "type": "string",
          "enum": [
            "Category"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "isFollowing": {
          "type": "boolean",
          "description": "A boolean representing whether the category is being followed by the user or not. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "following": {
          "type": "string",
          "description": "The follow status of the category for the authenticated user. Possible values are 'yes', 'no', or 'firstpost'. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "canCreateNewTopic": {
          "type": "boolean",
          "description": "It indicates whether the logged in user can create a new topic. Only specified if authenticated with x-api-username header.",
          "readOnly": true
        },
        "lastPost": {
          "type": "object",
          "description": "Last post object.",
          "properties": {
            "subject": {
              "type": "string",
              "description": "The subject of last post."
            },
            "userId": {
              "type": "integer",
              "description": "The userId of member who created last post."
            },
            "username": {
              "type": "string",
              "description": "The username of member who created last post."
            },
            "timestamp": {
              "type": "integer",
              "description": "Time at which the last post was created. Measured in seconds since the Unix epoch."
            },
            "topicId": {
              "type": "integer",
              "description": "The unique identifier for a topic."
            }
          },
          "readOnly": true
        },
        "heading": {
          "type": "string",
          "description": "This is the name of the category heading.",
          "readOnly": true
        },
        "newTopicMessageTemplate": {
          "type": "string",
          "nullable": true,
          "description": "The default message template for new topics in this category.",
          "readOnly": true
        },
        "isPrivate": {
          "type": "boolean",
          "description": "Boolean representing whether the category is private. Only included when the category is visible to the requesting user.",
          "readOnly": true
        },
        "replyCount": {
          "type": "integer",
          "description": "The total number of replies in the category.",
          "readOnly": true
        },
        "topicCount": {
          "type": "integer",
          "description": "The total number of topics in the category.",
          "readOnly": true
        }
      },
      "title": "Category"
    },
    "User": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "description": "The unique identifier of a member that belongs to this object.",
          "readOnly": true
        },
        "allowEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member allows other members to send them emails."
        },
        "userTitle": {
          "type": "string",
          "description": "The title of member."
        },
        "avatarUrl": {
          "type": "string",
          "description": "The URL of an image representing the member in forum who created this object."
        },
        "reputation": {
          "type": "integer",
          "description": "It is a reputation score of member based on how much the community has liked their posts. The number of likes minus the number of dislikes a member's posts receive becomes their reputation score.",
          "readOnly": true
        },
        "userGroups": {
          "type": "array",
          "description": "A list of user groups that belongs to this member.",
          "items": {
            "type": "integer"
          }
        },
        "userGroupId": {
          "type": "integer",
          "description": "The userId's primary user group id.",
          "readOnly": true
        },
        "instantMessagingType": {
          "type": "string",
          "description": "Instant messaging type of member."
        },
        "joinDateTimestamp": {
          "type": "integer",
          "description": "Time at which the member was created. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "lastPostTimestamp": {
          "type": "integer",
          "description": "Time at which the member created their last post. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "name": {
          "type": "string",
          "description": "The name of member."
        },
        "offline": {
          "type": "boolean",
          "description": "Boolean representing whether other users can see this user as online when they are browsing the forum."
        },
        "enableMessages": {
          "type": "boolean",
          "description": "Boolean representing whether a member has permission to send messages or not."
        },
        "username": {
          "type": "string",
          "description": "The username of member."
        },
        "postCount": {
          "type": "integer",
          "description": "The number of posts created by member.",
          "readOnly": true
        },
        "signature": {
          "type": "string",
          "description": "Signature of member."
        },
        "email": {
          "type": "string",
          "description": "The email address of the member."
        },
        "object": {
          "type": "string",
          "enum": [
            "User"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "lastVisitTimestamp": {
          "type": "integer",
          "description": "Time at which the member was last visited. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "logInTimestamp": {
          "type": "integer",
          "description": "Unix timestamp representing when the member last logged in.",
          "readOnly": true
        },
        "customFields": {
          "type": "array",
          "description": "A list of custom fields belongs to member.",
          "items": {
            "type": "object",
            "properties": {
              "object": {
                "type": "string",
                "description": "String representing the object\u2019s type. Objects of the same type share the same value."
              },
              "profileFieldId": {
                "type": "integer",
                "description": "The unique identifier of custom field that belongs to this object."
              },
              "title": {
                "type": "string",
                "description": "The title of custom field."
              },
              "type": {
                "type": "string",
                "description": "The type of custom field."
              },
              "value": {
                "type": "string",
                "description": "The value of custom field."
              }
            }
          }
        },
        "instantMessagingId": {
          "type": "string",
          "description": "Instant messaging id of member."
        },
        "ipAddress": {
          "type": "string",
          "description": "IP address of member.",
          "readOnly": true
        },
        "currentMonthPageViews": {
          "type": "integer",
          "description": "Current month page views count of member. Included in single user retrieval (GET /users/{userId}) and in webhook responses. Not included in list user responses (GET /users). Not related to x-api-username or x-api-email headers.",
          "readOnly": true
        },
        "newNotificationCount": {
          "type": "integer",
          "description": "Number of new notifications.(Read Only)",
          "readOnly": true
        },
        "unreadMessageCount": {
          "type": "integer",
          "description": "Number of unread messages.(Read Only)",
          "readOnly": true
        },
        "invalidEmail": {
          "type": "integer",
          "description": "Number of invalid emails.(Read Only)",
          "readOnly": true
        },
        "isModerator": {
          "type": "boolean",
          "description": "It will be true if the user is a moderator of any category.(Read Only)",
          "readOnly": true
        },
        "isBlocked": {
          "type": "boolean",
          "description": "It will be present if a user is logged in with x-api-username. Only specified if authenticated with x-api-username header.",
          "readOnly": true
        },
        "likeNotifications": {
          "type": "boolean",
          "description": "It is a boolean representing whether the user should receive web notifications when someone likes their post."
        },
        "canDelete": {
          "type": "boolean",
          "description": "A boolean representing whether the logged in user can perform delete action on the user. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "canEdit": {
          "type": "boolean",
          "description": "A boolean representing whether the logged in user can perform edit action on the user. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "canBan": {
          "type": "boolean",
          "description": "A boolean representing whether the logged in user can perform ban action on the user. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "URL": {
          "type": "string",
          "description": "The URL of the user profile.",
          "readOnly": true
        },
        "displayNameAndUsername": {
          "type": "string",
          "description": "The display name and username of the member.",
          "readOnly": true
        },
        "mobileFollowedContentNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives mobile notifications for followed content.",
          "readOnly": true
        },
        "mobileMessageNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives mobile notifications for messages.",
          "readOnly": true
        },
        "webFollowedContentNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives web notifications for followed content.",
          "readOnly": true
        },
        "topicEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for topics.",
          "readOnly": true
        },
        "topicsStartedCount": {
          "type": "integer",
          "description": "The number of topics started by the member.",
          "readOnly": true
        },
        "postsLikedCount": {
          "type": "integer",
          "description": "The number of posts liked by the member.",
          "readOnly": true
        },
        "autoFollow": {
          "type": "string",
          "description": "The auto-follow setting for the member."
        },
        "followedContentEmailFrequency": {
          "type": "string",
          "description": "The email frequency for followed content notifications."
        },
        "birthDate": {
          "type": "string",
          "description": "The birth date of the member."
        },
        "namePrivate": {
          "type": "boolean",
          "description": "Boolean representing whether the member's name is private."
        },
        "adminEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives admin emails."
        },
        "mentionEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for mentions."
        },
        "mentionNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives web notifications for mentions."
        },
        "quoteEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for quotes."
        },
        "quoteNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives web notifications for quotes."
        },
        "eventEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for events."
        },
        "digestEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives digest emails."
        },
        "messageEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for messages."
        },
        "ownPostEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives an email notification when they make a post. Only present if the forum owner has enabled this feature."
        },
        "country": {
          "type": "string",
          "description": "The country code of the member, matching the ISO 3166-1 alpha-2 format used by the forum.",
          "readOnly": true
        }
      },
      "title": "User"
    },
    "ListUsers": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/User"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "Message": {
      "type": "object",
      "properties": {
        "sender": {
          "type": "object",
          "properties": {
            "userId": {
              "type": "integer",
              "description": "The userId of member who created this object."
            },
            "username": {
              "type": "string",
              "description": "The username of member who created this object."
            }
          },
          "description": "An object containing information about the user who sent the message.",
          "readOnly": true
        },
        "message": {
          "type": "string",
          "description": "Message is usually a content, and its purpose is either to ask a question, answer a question or to contribute towards the forum discussion by expressing an opinion or bringing forth information."
        },
        "messageId": {
          "type": "integer",
          "description": "The unique identifier for a message.",
          "readOnly": true
        },
        "attachments": {
          "type": "array",
          "description": "Attachment list associated with message.",
          "items": {
            "type": "object",
            "properties": {
              "fileName": {
                "type": "string",
                "description": "The file name of attachment."
              },
              "URL": {
                "type": "string",
                "description": "The attachment URL."
              },
              "id": {
                "type": "integer",
                "description": "The unique identifier for a attachment."
              },
              "thumbnailURL": {
                "type": "string",
                "description": "The attachment thumbnail URL."
              },
              "downloads": {
                "type": "integer",
                "description": "The number of downloads."
              },
              "fileSize": {
                "type": "integer",
                "description": "File size of attachment."
              },
              "description": {
                "type": "string",
                "description": "The description of attachment."
              },
              "uploadTimestamp": {
                "type": "integer",
                "description": "Upload timestamp of attachment."
              },
              "userId": {
                "type": "integer",
                "description": "The userId of user who uploaded the attachment."
              },
              "object": {
                "type": "string",
                "description": "String representing the object\u2019s type. Objects of the same type share the same value."
              }
            }
          },
          "readOnly": true
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "enum": [
            "Message"
          ],
          "readOnly": true
        },
        "messageText": {
          "type": "string",
          "description": "messageText is the text version of the message with all HTML removed.",
          "readOnly": true
        },
        "preview": {
          "type": "string",
          "description": "preview is a short text version of the message.",
          "readOnly": true
        },
        "isUnread": {
          "type": "boolean",
          "description": "Boolean representing whether a message is unread or not.",
          "readOnly": true
        },
        "conversationId": {
          "type": "integer",
          "description": "The ID of the conversation this message belongs to.",
          "readOnly": true
        }
      }
    },
    "AddCategory": {
      "allOf": [
        {
          "$ref": "#/definitions/Category"
        },
        {
          "type": "object",
          "properties": {
            "password": {
              "type": "string",
              "description": "It is used to password protect the category so only people with the correct password can enter."
            }
          }
        }
      ],
      "x-internal": true,
      "title": "Category",
      "description": "Creates a new category in Forum.",
      "required": [
        "title"
      ]
    },
    "CategoryModerators": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "description": "The unique identifier of a member."
        },
        "object": {
          "type": "string",
          "enum": [
            "CategoryModerators"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "categoryId": {
          "type": "integer",
          "description": "The categoryIds to which the moderator has been assigned.",
          "readOnly": true
        },
        "moderatorId": {
          "type": "string",
          "description": "The unique identifier for moderator.",
          "readOnly": true
        },
        "editPosts": {
          "type": "boolean",
          "description": "Boolean representing whether editPosts permission is enabled or not."
        },
        "deletePosts": {
          "type": "boolean",
          "description": "Boolean representing whether deletePosts permission is enabled or not."
        },
        "movePosts": {
          "type": "boolean",
          "description": "Boolean representing whether movePosts permission is enabled or not."
        },
        "approvePosts": {
          "type": "boolean",
          "description": "Boolean representing whether approvePosts permission is enabled or not."
        },
        "lockTopics": {
          "type": "boolean",
          "description": "Boolean representing whether lockTopics permission is enabled or not."
        },
        "pinTopics": {
          "type": "boolean",
          "description": "Boolean representing whether pinTopics permission is enabled or not."
        },
        "addPolls": {
          "type": "boolean",
          "description": "Boolean representing whether addPolls permission is enabled or not."
        },
        "editPolls": {
          "type": "boolean",
          "description": "Boolean representing whether editPolls permission is enabled or not."
        },
        "deletePolls": {
          "type": "boolean",
          "description": "Boolean representing whether deletePolls permission is enabled or not."
        }
      },
      "title": "Moderator",
      "description": "Show the specific moderator."
    },
    "ListCategoryPermissions": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/CategoryPermission"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "Conversation": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "enum": [
            "Conversation"
          ],
          "readOnly": true
        },
        "subject": {
          "type": "string",
          "description": "The subject of the conversation."
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "participants": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "conversationUserId": {
                "type": "integer",
                "description": "The unique identifier for a conversation userId."
              },
              "conversationId": {
                "type": "integer",
                "description": "The unique identifier for a conversation."
              },
              "userId": {
                "type": "integer",
                "description": "Participant's userId."
              },
              "active": {
                "type": "boolean",
                "description": "Boolean representing whether a participant is active or not."
              },
              "user": {
                "type": "object",
                "description": "The user object.",
                "properties": {}
              },
              "unreadCount": {
                "type": "integer",
                "description": "The number of unread messages in conversation."
              },
              "isUnread": {
                "type": "boolean",
                "description": "Boolean representing whether a conversation is unread or not."
              },
              "isStarter": {
                "type": "boolean",
                "description": "Boolean representing whether a participant started the conversation or not."
              },
              "readTimestamp": {
                "type": "integer",
                "description": "Time at which the object was read. Measured in seconds since the Unix epoch."
              },
              "leftTimestamp": {
                "type": "integer",
                "description": "Time at which the object was left. Measured in seconds since the Unix epoch."
              }
            }
          },
          "description": "An array of user objects representing the participants in the conversation.",
          "readOnly": true
        },
        "conversationId": {
          "type": "integer",
          "description": "The unique identifier for a conversation.",
          "readOnly": true
        },
        "message": {
          "type": "object",
          "description": "The latest message object in the conversation."
        },
        "preview": {
          "type": "string",
          "description": "A preview of the latest message content.",
          "readOnly": true
        },
        "canReply": {
          "type": "boolean",
          "description": "Whether the authenticated user can reply to this conversation. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        }
      }
    },
    "ListModerators": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/CategoryModerators"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "AddModerators": {
      "allOf": [
        {
          "$ref": "#/definitions/CategoryModerators"
        },
        {
          "type": "object",
          "properties": {
            "categoryIds": {
              "type": "integer",
              "description": "The categoryIds for which the moderator has to be assigned."
            },
            "memberTitle": {
              "type": "string",
              "description": "The member title to set for the moderator's profile."
            }
          }
        }
      ],
      "x-internal": true,
      "required": [
        "userId",
        "categoryIds"
      ],
      "title": "Moderator",
      "description": "Creates a new moderator for category."
    },
    "UserGroup": {
      "type": "object",
      "properties": {
        "userGroupId": {
          "type": "integer",
          "description": "The unique identifier for a user group.",
          "readOnly": true
        },
        "title": {
          "type": "string",
          "description": "This is the name of user group. It is not shown to members but used to identify in User Group Manager."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "enum": [
            "UserGroup"
          ],
          "readOnly": true
        },
        "requireEventApproval": {
          "type": "boolean",
          "description": "Boolean representing whether requireEventApproval permission is enabled or not."
        },
        "viewInvisibleMembers": {
          "type": "boolean",
          "description": "Boolean representing whether viewInvisibleMembers permission is enabled or not."
        },
        "viewOthersTopics": {
          "type": "boolean",
          "description": "Boolean representing whether viewOthersTopics permission is enabled or not."
        },
        "viewableOnMembersList": {
          "type": "boolean",
          "description": "Boolean representing whether viewableOnMembersList permission is enabled or not."
        },
        "uploadAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether uploadAttachments permission is enabled or not."
        },
        "changeUsername": {
          "type": "boolean",
          "description": "Boolean representing whether changeUsername permission is enabled or not."
        },
        "defaultGroup": {
          "type": "boolean",
          "description": "Boolean representing whether defaultGroup permission is enabled or not.",
          "readOnly": true
        },
        "viewForum": {
          "type": "boolean",
          "description": "Boolean representing whether viewForum permission is enabled or not."
        },
        "startTopics": {
          "type": "boolean",
          "description": "Boolean representing whether startTopics permission is enabled or not."
        },
        "deleteOwnTopics": {
          "type": "boolean",
          "description": "Boolean representing whether deleteOwnTopics permission is enabled or not."
        },
        "createAlbums": {
          "type": "boolean",
          "description": "Boolean representing whether createAlbums permission is enabled or not."
        },
        "moveOwnTopics": {
          "type": "boolean",
          "description": "Boolean representing whether moveOwnTopics permission is enabled or not."
        },
        "viewAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether viewAttachments permission is enabled or not."
        },
        "editOwnProfile": {
          "type": "boolean",
          "description": "Boolean representing whether editOwnProfile permission is enabled or not."
        },
        "customTitle": {
          "type": "boolean",
          "description": "Boolean representing whether customTitle permission is enabled or not."
        },
        "viewAlbums": {
          "type": "boolean",
          "description": "Boolean representing whether viewAlbums permission is enabled or not."
        },
        "signature": {
          "type": "boolean",
          "description": "Boolean representing whether signature permission is enabled or not."
        },
        "viewTopicContent": {
          "type": "boolean",
          "description": "Boolean representing whether viewTopicContent permission is enabled or not."
        },
        "setSelfAsInvisible": {
          "type": "boolean",
          "description": "Boolean representing whether setSelfAsInvisible permission is enabled or not."
        },
        "editOwnImages": {
          "type": "boolean",
          "description": "Boolean representing whether editOwnImages permission is enabled or not."
        },
        "requirePostApproval": {
          "type": "boolean",
          "description": "Boolean representing whether requirePostApproval permission is enabled or not."
        },
        "viewCalendar": {
          "type": "boolean",
          "description": "Boolean representing whether viewCalendar permission is enabled or not."
        },
        "moderateAlbums": {
          "type": "boolean",
          "description": "Boolean representing whether moderateAlbums permission is enabled or not."
        },
        "editOwnPosts": {
          "type": "boolean",
          "description": "Boolean representing whether editOwnPosts permission is enabled or not."
        },
        "postEvents": {
          "type": "boolean",
          "description": "Boolean representing whether postEvents permission is enabled or not."
        },
        "viewCategory": {
          "type": "boolean",
          "description": "Boolean representing whether viewCategory permission is enabled or not."
        },
        "viewProfiles": {
          "type": "boolean",
          "description": "Boolean representing whether viewProfiles permission is enabled or not."
        },
        "editOwnEvents": {
          "type": "boolean",
          "description": "Boolean representing whether editOwnEvents permission is enabled or not."
        },
        "replyOwnTopics": {
          "type": "boolean",
          "description": "Boolean representing whether replyOwnTopics permission is enabled or not."
        },
        "viewOthersEvents": {
          "type": "boolean",
          "description": "Boolean representing whether viewOthersEvents permission is enabled or not."
        },
        "replyTopics": {
          "type": "boolean",
          "description": "Boolean representing whether replyTopics permission is enabled or not."
        },
        "deleteOwnPosts": {
          "type": "boolean",
          "description": "Boolean representing whether deleteOwnPosts permission is enabled or not."
        },
        "deleteOwnEvents": {
          "type": "boolean",
          "description": "Boolean representing whether deleteOwnEvents permission is enabled or not."
        },
        "deleteOwnImages": {
          "type": "boolean",
          "description": "Boolean representing whether deleteOwnImages permission is enabled or not."
        },
        "deleteOwnProfile": {
          "type": "boolean",
          "description": "Boolean representing whether deleteOwnProfile permission is enabled or not."
        },
        "postPolls": {
          "type": "boolean",
          "description": "Boolean representing whether postPolls permission is enabled or not."
        },
        "voteOnPolls": {
          "type": "boolean",
          "description": "Boolean representing whether voteOnPolls permission is enabled or not."
        },
        "uploadFiles": {
          "type": "boolean",
          "description": "Boolean representing whether uploadFiles permission is enabled or not."
        },
        "downloadFiles": {
          "type": "boolean",
          "description": "Boolean representing whether downloadFiles permission is enabled or not."
        },
        "createTags": {
          "type": "boolean",
          "description": "Whether members can create tags.",
          "readOnly": true
        },
        "inviteToken": {
          "type": "string",
          "description": "The invite token for the user group.",
          "readOnly": true
        },
        "memberTitle": {
          "type": "string",
          "description": "The default member title for users in this group."
        },
        "require2fa": {
          "type": "boolean",
          "description": "Whether two-factor authentication is required for this group.",
          "readOnly": true
        },
        "sendMessages": {
          "type": "boolean",
          "description": "Whether members can send private messages.",
          "readOnly": true
        },
        "tagOwnTopics": {
          "type": "boolean",
          "description": "Whether members can tag their own topics.",
          "readOnly": true
        },
        "viewOnlineUsers": {
          "type": "boolean",
          "description": "Whether members can view the online users list.",
          "readOnly": true
        }
      },
      "description": "Parameters for updating an existing user group."
    },
    "ListPosts": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Post"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "AddConversation": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Message is usually a content, and its purpose is either to ask a question, answer a question or to contribute towards the forum discussion by expressing an opinion or bringing forth information."
        },
        "recipientUsernames": {
          "type": "array",
          "description": "A list of usernames who will receive the messages.",
          "items": {
            "type": "string"
          }
        },
        "subject": {
          "type": "string",
          "description": "The subject of the conversation."
        },
        "senderId": {
          "type": "integer",
          "description": "Sender's userId who started the conversation."
        }
      },
      "description": "Parameters for creating a new conversation. Note: the 'message' field here is the message text to send (string), unlike the Conversation object's 'message' field, which is the latest message object.",
      "x-internal": true,
      "required": [
        "message",
        "recipientUsernames",
        "senderId"
      ],
      "title": "Conversation"
    },
    "UpdateCategoryPermission": {
      "type": "object",
      "properties": {
        "viewOthersTopics": {
          "type": "boolean",
          "description": "Boolean representing whether viewOthersTopics permission is enabled or not."
        },
        "uploadAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether uploadAttachments permission is enabled or not."
        },
        "startTopics": {
          "type": "boolean",
          "description": "Boolean representing whether startTopics permission is enabled or not."
        },
        "viewAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether viewAttachments permission is enabled or not."
        },
        "requirePostApproval": {
          "type": "boolean",
          "description": "Boolean representing whether requirePostApproval permission is enabled or not."
        },
        "viewCategory": {
          "type": "boolean",
          "description": "Boolean representing whether viewCategory permission is enabled or not."
        },
        "replyTopics": {
          "type": "boolean",
          "description": "Boolean representing whether replyTopics permission is enabled or not."
        }
      },
      "description": "Parameters for updating category permissions.",
      "x-internal": true
    },
    "AddRemoveUsersToUsergroup": {
      "type": "object",
      "properties": {
        "userIds": {
          "type": "array",
          "description": "A list of userIds of members.",
          "items": {
            "type": "integer"
          }
        },
        "usernames": {
          "type": "array",
          "description": "A list of usernames of members.",
          "items": {
            "type": "string"
          }
        },
        "emailAddresses": {
          "type": "array",
          "description": "A list of email addresses of members.",
          "items": {
            "type": "string"
          }
        }
      },
      "description": "Parameters for adding or removing users from a user group. At least one of userIds, usernames or emailAddresses must be provided.",
      "x-internal": true
    },
    "AddedModerators": {
      "type": "array",
      "description": "A list of moderators.",
      "items": {
        "type": "object",
        "properties": {
          "userId": {
            "type": "integer",
            "description": "The unique identifier of a member."
          },
          "username": {
            "type": "string",
            "description": "The username of member."
          },
          "moderatorId": {
            "type": "string",
            "description": "The unique identifier for moderator."
          },
          "object": {
            "type": "string",
            "description": "String representing the object\u2019s type. Objects of the same type share the same value."
          },
          "categoryId": {
            "type": "integer",
            "description": "The categoryId to which the moderator has been assigned."
          },
          "editPosts": {
            "type": "boolean",
            "description": "Boolean representing whether editPosts permission is enabled or not."
          },
          "deletePosts": {
            "type": "boolean",
            "description": "Boolean representing whether deletePosts permission is enabled or not."
          },
          "movePosts": {
            "type": "boolean",
            "description": "Boolean representing whether movePosts permission is enabled or not."
          },
          "approvePosts": {
            "type": "boolean",
            "description": "Boolean representing whether approvePosts permission is enabled or not."
          },
          "lockTopics": {
            "type": "boolean",
            "description": "Boolean representing whether lockTopics permission is enabled or not."
          },
          "pinTopics": {
            "type": "boolean",
            "description": "Boolean representing whether pinTopics permission is enabled or not."
          },
          "addPolls": {
            "type": "boolean",
            "description": "Boolean representing whether addPolls permission is enabled or not."
          },
          "editPolls": {
            "type": "boolean",
            "description": "Boolean representing whether editPolls permission is enabled or not."
          },
          "deletePolls": {
            "type": "boolean",
            "description": "Boolean representing whether deletePolls permission is enabled or not."
          }
        }
      },
      "x-internal": true
    },
    "Topic": {
      "type": "object",
      "properties": {
        "lastPost": {
          "type": "object",
          "description": "Last post of object.",
          "properties": {
            "author": {
              "type": "object",
              "description": "The member who created this object.",
              "properties": {
                "avatarUrl": {
                  "type": "string",
                  "description": "The URL of an icon or image representing a particular member in forum who created last post."
                },
                "userId": {
                  "type": "integer",
                  "description": "The userId of member who created last post."
                },
                "username": {
                  "type": "string",
                  "description": "The username of member who created last post."
                }
              }
            },
            "timestamp": {
              "type": "integer",
              "description": "Time at which the last post was created. Measured in seconds since the Unix epoch."
            },
            "postId": {
              "type": "integer",
              "description": "The unique identifier for a post."
            }
          },
          "readOnly": true
        },
        "viewCount": {
          "type": "integer",
          "description": "The number of views for the topic.",
          "readOnly": true
        },
        "firstPostId": {
          "type": "integer",
          "description": "The unique identifier of first post in topic.",
          "readOnly": true
        },
        "locked": {
          "type": "boolean",
          "description": "Boolean representing whether a topic is locked or not. Locked will prevent any new posts from being made in the topic."
        },
        "postCount": {
          "type": "integer",
          "description": "The number of posts in topic.",
          "readOnly": true
        },
        "replyCount": {
          "type": "integer",
          "description": "The number of replies in topic.",
          "readOnly": true
        },
        "pinned": {
          "type": "boolean",
          "description": "Boolean representing whether a topic is pinned or not. Pinned topic display at the beginning of that forum's topic listing to ensure that it receives attention from forum users."
        },
        "topicId": {
          "type": "integer",
          "description": "The unique identifier for a topic.",
          "readOnly": true
        },
        "title": {
          "type": "string",
          "description": "The title of the topic."
        },
        "author": {
          "type": "object",
          "description": "The member who created this object.",
          "properties": {
            "avatarUrl": {
              "type": "string",
              "description": "The URL of an icon or image representing a particular member in forum who created this object."
            },
            "username": {
              "type": "string",
              "description": "The username of member who created this object."
            },
            "userId": {
              "type": "integer",
              "description": "The userId of member who created this object."
            }
          },
          "readOnly": true
        },
        "categoryId": {
          "type": "integer",
          "description": "The unique identifier of category that belongs to this object."
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "tags": {
          "type": "array",
          "description": "A list of topic tags.",
          "readOnly": true,
          "items": {
            "$ref": "#/definitions/Tag"
          }
        },
        "object": {
          "type": "string",
          "enum": [
            "Topic"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "pollId": {
          "type": "integer",
          "description": "The unique identifier for a poll.",
          "readOnly": true
        },
        "isFollowing": {
          "type": "boolean",
          "description": "A boolean representing whether the topic is being followed by the user or not. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "canReply": {
          "type": "boolean",
          "description": "It indicates whether the logged in user can reply to the topic. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "firstPost": {
          "type": "object",
          "description": "The first post object in the topic.",
          "readOnly": true
        },
        "URL": {
          "type": "string",
          "description": "The URL of the topic.",
          "readOnly": true
        }
      },
      "description": "Parameters for updating an existing topic."
    },
    "UpdateCategory": {
      "allOf": [
        {
          "$ref": "#/definitions/Category"
        },
        {
          "type": "object",
          "properties": {
            "password": {
              "type": "string",
              "description": "The password of category. It is used to password protect the category so only people with the correct password can enter."
            }
          }
        }
      ],
      "x-internal": true,
      "title": "Category",
      "description": "Parameters for updating an existing category."
    },
    "ListPageViews": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/PageView"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "UnfollowTopics": {
      "type": "object",
      "properties": {
        "topicIds": {
          "type": "array",
          "description": "An array of topic IDs to unfollow.",
          "items": {
            "type": "integer"
          }
        }
      },
      "description": "Parameters for unfollowing topics.",
      "x-internal": true,
      "required": [
        "topicIds"
      ],
      "title": "Unfollow topics"
    },
    "ListCategories": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Category"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "Post": {
      "type": "object",
      "properties": {
        "message": {
          "type": "string",
          "description": "Message is usually a content, and its purpose is either to ask a question, answer a question or to contribute towards the forum discussion by expressing an opinion or bringing forth information.",
          "readOnly": true
        },
        "likeCount": {
          "type": "integer",
          "description": "Total number of post likes.",
          "readOnly": true
        },
        "postTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch.",
          "readOnly": true
        },
        "postId": {
          "type": "integer",
          "description": "The unique identifier of a post.",
          "readOnly": true
        },
        "topicId": {
          "type": "integer",
          "description": "The unique identifier of a topic."
        },
        "dislikeCount": {
          "type": "integer",
          "description": "Total number of post dislikes.",
          "readOnly": true
        },
        "author": {
          "type": "object",
          "description": "The member who created this object.",
          "properties": {
            "userId": {
              "type": "integer",
              "description": "The userId of member who created this object."
            },
            "avatarUrl": {
              "type": "string",
              "description": "The URL of an icon or image representing a particular member in forum who created this object."
            },
            "username": {
              "type": "string",
              "description": "The username of member who created this object."
            }
          },
          "readOnly": true
        },
        "attachments": {
          "type": "array",
          "description": "Attachment list associated with post.",
          "items": {
            "type": "object",
            "properties": {
              "fileName": {
                "type": "string",
                "description": "The file name of attachment."
              },
              "URL": {
                "type": "string",
                "description": "The attachment URL."
              },
              "id": {
                "type": "integer",
                "description": "The unique identifier for a attachment."
              },
              "thumbnailURL": {
                "type": "string",
                "description": "The attachment thumbnail URL."
              },
              "downloads": {
                "type": "integer",
                "description": "The number of downloads."
              },
              "fileSize": {
                "type": "integer",
                "description": "File size of attachment."
              },
              "description": {
                "type": "string",
                "description": "The description of attachment."
              },
              "uploadTimestamp": {
                "type": "integer",
                "description": "Upload timestamp of attachment."
              },
              "userId": {
                "type": "integer",
                "description": "The userId of user who uploaded the attachment."
              },
              "object": {
                "type": "string",
                "description": "String representing the object\u2019s type. Objects of the same type share the same value."
              }
            }
          },
          "readOnly": true
        },
        "attachmentCount": {
          "type": "integer",
          "description": "Total number of attachments in post.",
          "readOnly": true
        },
        "pending": {
          "type": "boolean",
          "description": "Boolean representing whether a post is pending or not. Pending post will only be displayed after approval of moderator.",
          "readOnly": true
        },
        "object": {
          "type": "string",
          "enum": [
            "Post"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "editTimestamp": {
          "type": "integer",
          "description": "Time at which the object was edited. Measured in seconds since the Unix epoch.(Read Only)",
          "readOnly": true
        },
        "messageText": {
          "type": "string",
          "description": "messageText is the text version of the message with all HTML removed.",
          "readOnly": true
        },
        "preview": {
          "type": "string",
          "description": "preview is a short text version of the message.",
          "readOnly": true
        },
        "canDelete": {
          "type": "boolean",
          "description": "A boolean representing whether the logged in user can perform delete action on the post. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "canEdit": {
          "type": "boolean",
          "description": "A boolean representing whether the logged in user can perform edit action on the post. Only specified if the x-api-username header has been provided.",
          "readOnly": true
        },
        "URL": {
          "type": "string",
          "description": "The URL of the post.",
          "readOnly": true
        }
      },
      "description": "Parameters for updating an existing post."
    },
    "Error": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "The HTTP status code of the error."
        },
        "error": {
          "type": "object",
          "properties": {
            "param": {
              "type": "string",
              "description": "The parameter the error relates to if the error is parameter-specific. "
            },
            "message": {
              "type": "string",
              "description": "A human-readable message providing more details about the error."
            },
            "code": {
              "type": "string",
              "description": "A short string related to error."
            }
          },
          "description": "An object containing details about the error."
        }
      },
      "x-internal": true
    },
    "AddUsergroup": {
      "allOf": [
        {
          "$ref": "#/definitions/UserGroup"
        }
      ],
      "x-internal": true,
      "required": [
        "title"
      ],
      "title": "User Group",
      "description": "Parameters for creating a new user group."
    },
    "UpdateModerator": {
      "allOf": [
        {
          "$ref": "#/definitions/CategoryModerators"
        },
        {
          "type": "object",
          "properties": {
            "memberTitle": {
              "type": "string",
              "description": "The member title to set for the moderator's profile."
            }
          }
        }
      ],
      "x-internal": true,
      "title": "Moderator",
      "description": "Updates the specific moderator by setting the values of the parameters passed. Any parameters not provided will be left unchanged."
    },
    "AddUser": {
      "allOf": [
        {
          "$ref": "#/definitions/User"
        },
        {
          "type": "object",
          "properties": {
            "password": {
              "type": "string",
              "description": "The password of the member."
            },
            "suppressEmails": {
              "type": "boolean",
              "description": "Prevent the welcome, email verification, and admin notification emails from being sent."
            },
            "followedContentNotifications": {
              "type": "boolean",
              "description": "Boolean representing whether a member receives a web notification when content they follow, such as topics or categories, have new posts."
            }
          }
        }
      ],
      "x-internal": true,
      "required": [
        "username",
        "email"
      ],
      "title": "User",
      "description": "Creates a new user in Forum."
    },
    "FollowTopics": {
      "type": "object",
      "properties": {
        "topicIds": {
          "type": "array",
          "description": "An array of topic IDs to follow.",
          "items": {
            "type": "integer"
          }
        }
      },
      "description": "Parameters for following topics.",
      "x-internal": true,
      "required": [
        "topicIds"
      ],
      "title": "Follow topics"
    },
    "DeleteResponse": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string",
          "description": "The status of the delete operation. Returns \"success\" on successful deletion."
        }
      },
      "x-internal": true
    },
    "ListMessages": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Message"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "ListTags": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Tag"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "AddTopic": {
      "allOf": [
        {
          "$ref": "#/definitions/Topic"
        },
        {
          "type": "object",
          "properties": {
            "content": {
              "type": "string",
              "description": "Content is usually a message, and its purpose is either to ask a question, answer a question or to contribute towards the forum discussion by expressing an opinion or bringing forth information."
            },
            "username": {
              "type": "string",
              "description": "The username of member to create this object."
            }
          }
        }
      ],
      "x-internal": true,
      "required": [
        "title",
        "content",
        "username"
      ],
      "title": "Topic",
      "description": "Parameters for creating a new topic."
    },
    "UpdateUser": {
      "allOf": [
        {
          "$ref": "#/definitions/User"
        },
        {
          "type": "object",
          "properties": {
            "password": {
              "type": "string",
              "description": "The password of member."
            },
            "suppressEmails": {
              "type": "boolean",
              "description": "If that option is enabled, it would not send any emails when the account is created."
            },
            "followedContentNotifications": {
              "type": "boolean",
              "description": "Boolean representing whether a member receives a web notification when content they follow, such as topics or categories, have new posts."
            }
          }
        }
      ],
      "x-internal": true,
      "title": "User",
      "description": "Updates the specific user by setting the values of the parameters passed. Any parameters not provided will be left unchanged."
    },
    "AddMessage": {
      "allOf": [
        {
          "$ref": "#/definitions/Message"
        },
        {
          "type": "object",
          "properties": {
            "senderId": {
              "type": "integer",
              "description": "The userId of the member sending the message. Optional when the x-api-username or x-api-email header identifies the sender."
            }
          }
        }
      ],
      "x-internal": true,
      "required": [
        "message"
      ],
      "title": "Message",
      "description": "Parameters for sending a message in a conversation."
    },
    "ListConversations": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Conversation"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "ListNotifications": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/Notification"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "ListPostEdits": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/PostEdit"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "CategoryPermission": {
      "type": "object",
      "properties": {
        "userGroupId": {
          "type": "integer",
          "description": "The unique identifier for a user group."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        },
        "viewOthersTopics": {
          "type": "boolean",
          "description": "Boolean representing whether viewOthersTopics permission is enabled or not."
        },
        "uploadAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether uploadAttachments permission is enabled or not."
        },
        "startTopics": {
          "type": "boolean",
          "description": "Boolean representing whether startTopics permission is enabled or not."
        },
        "viewAttachments": {
          "type": "boolean",
          "description": "Boolean representing whether viewAttachments permission is enabled or not."
        },
        "requirePostApproval": {
          "type": "boolean",
          "description": "Boolean representing whether requirePostApproval permission is enabled or not."
        },
        "viewCategory": {
          "type": "boolean",
          "description": "Boolean representing whether viewCategory permission is enabled or not."
        },
        "replyTopics": {
          "type": "boolean",
          "description": "Boolean representing whether replyTopics permission is enabled or not."
        }
      }
    },
    "Notification": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string",
          "description": "The object type."
        },
        "type": {
          "type": "string",
          "description": "The notification type."
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the notification was created. Measured in seconds since the Unix epoch."
        },
        "unread": {
          "type": "boolean",
          "description": "Whether the notification is unread."
        },
        "categoryId": {
          "type": "integer",
          "description": "The unique identifier for the category."
        },
        "topicId": {
          "type": "integer",
          "description": "The unique identifier for the topic."
        },
        "calendarId": {
          "type": "integer",
          "description": "The unique identifier for the calendar event."
        },
        "userId": {
          "type": "integer",
          "description": "The unique identifier for the user."
        },
        "postId": {
          "type": "integer",
          "description": "The unique identifier for the post."
        },
        "notificationId": {
          "type": "integer",
          "description": "The unique identifier for the notification."
        },
        "loggedInUserId": {
          "type": "integer",
          "description": "The user ID of the logged-in user."
        },
        "URL": {
          "type": "string",
          "description": "The URL to the notification target."
        },
        "title": {
          "type": "string",
          "description": "The notification title."
        }
      }
    },
    "PageView": {
      "type": "object",
      "properties": {
        "pageViewId": {
          "type": "integer",
          "description": "The unique identifier for the page view."
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
        },
        "title": {
          "type": "string",
          "description": "Title of the page view."
        },
        "URI": {
          "type": "string",
          "description": "URI of the page view."
        },
        "ipAddress": {
          "type": "integer",
          "description": "IP address of the member."
        },
        "userId": {
          "type": "string",
          "description": "UserId of the member who access the page."
        },
        "crawler": {
          "type": "object",
          "description": "Crawler is a generic term for any program that is used to automatically discover and scan websites.",
          "properties": {
            "name": {
              "type": "string",
              "description": "Name of the Crawler."
            },
            "URL": {
              "type": "string",
              "description": "The URL of the crawler."
            }
          }
        },
        "newVisit": {
          "type": "boolean",
          "description": "It specifies whether this was a new session started by a member or a guest."
        },
        "apiRequest": {
          "type": "boolean",
          "description": "API Request."
        },
        "userAgent": {
          "type": "string",
          "description": "User Agent of the page view."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        }
      }
    },
    "PostEdit": {
      "type": "object",
      "properties": {
        "object": {
          "type": "string",
          "description": "The object type."
        },
        "postEditId": {
          "type": "integer",
          "description": "The unique identifier for the post edit."
        },
        "userId": {
          "type": "integer",
          "description": "The unique identifier for the user who made the edit."
        },
        "postId": {
          "type": "integer",
          "description": "The unique identifier for the post."
        },
        "message": {
          "type": "string",
          "description": "The edited message content."
        },
        "editTimestamp": {
          "type": "integer",
          "description": "Time at which the edit was made. Measured in seconds since the Unix epoch."
        },
        "user": {
          "type": "object",
          "description": "The user who made the edit."
        }
      },
      "x-internal": true
    },
    "Tag": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "integer",
          "description": "The unique identifier for a tag.",
          "readOnly": true
        },
        "tagName": {
          "type": "string",
          "description": "This is the name of the tag.",
          "readOnly": true
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "readOnly": true
        },
        "URL": {
          "type": "string",
          "description": "The URL of the tag.",
          "readOnly": true
        }
      }
    },
    "List": {
      "type": "object",
      "description": "A paginated list response.",
      "properties": {
        "object": {
          "type": "string",
          "description": "The type of object. Always \"list\" for list responses."
        },
        "has_more": {
          "type": "boolean",
          "description": "Whether there are more results available beyond this page."
        },
        "url": {
          "type": "string",
          "description": "The API endpoint URL for this resource."
        },
        "size": {
          "type": "integer",
          "description": "The number of items returned in this response."
        },
        "total_size": {
          "type": "integer",
          "description": "The total number of items available across all pages."
        }
      }
    },
    "UpdateUsergroup": {
      "allOf": [
        {
          "$ref": "#/definitions/UserGroup"
        }
      ],
      "x-internal": true,
      "title": "User Group",
      "description": "Parameters for updating an existing user group. Only the parameters provided are changed."
    },
    "UpdatePost": {
      "type": "object",
      "properties": {
        "content": {
          "type": "string",
          "description": "The new message content of the post."
        }
      },
      "required": [
        "content"
      ],
      "x-internal": true,
      "title": "Post",
      "description": "Parameters for updating an existing post. The content parameter holds the new post message."
    },
    "CreateWebhookEndpoint": {
      "type": "object",
      "required": [
        "url",
        "events"
      ],
      "properties": {
        "url": {
          "type": "string",
          "description": "The URL that the webhook events will be sent to. Must be an absolute http(s) URL with a host (e.g. https://example.com/hook)."
        },
        "events": {
          "type": "array",
          "description": "A list of event names that will trigger this webhook.",
          "items": {
            "type": "string"
          }
        }
      },
      "x-internal": true,
      "title": "Webhook Endpoint",
      "description": "Parameters for creating a webhook endpoint."
    }
  },
  "tags": [
    {
      "name": "Categories"
    },
    {
      "name": "Conversations"
    },
    {
      "name": "Messages"
    },
    {
      "name": "Moderators"
    },
    {
      "name": "Notifications"
    },
    {
      "name": "Page views"
    },
    {
      "name": "Posts"
    },
    {
      "name": "Tags"
    },
    {
      "name": "Topics"
    },
    {
      "name": "User groups"
    },
    {
      "name": "Users"
    },
    {
      "name": "Webhooks"
    }
  ]
}
