{
  "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "string",
            "description": "The unique identifier for the category."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "description": "The unique identifier for the category."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": true,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "string"
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "userGroupId",
            "in": "path",
            "description": "Unique identifier for the user group object.",
            "required": true,
            "type": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "string",
            "description": "The unique identifier for the moderator."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "description": "The unique identifier for the moderator."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "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-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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "conversationId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "x-custom-info": "integer"
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "conversationId",
            "in": "path",
            "description": "The unique identifier of a conversation.",
            "required": true,
            "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-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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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. Either x-api-username or x-api-email is required for endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "in": "body",
            "name": "Post",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Post"
            },
            "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": "string",
            "description": "The unique identifier for the post."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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. Either x-api-username or x-api-email is required for endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": "string",
            "description": "The unique identifier for the topic."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": []
          }
        ]
      },
      "post": {
        "tags": [
          "Topics"
        ],
        "summary": "Update a topic",
        "description": "Updates the specified topic 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 topic creation call.</p>",
        "operationId": "updateTopic",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "topicId",
            "in": "path",
            "required": true,
            "type": "string",
            "description": "The unique identifier for the topic."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "in": "body",
            "name": "Topic",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Topic"
            },
            "description": "The topic fields to update."
          }
        ],
        "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 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": "string",
            "description": "The unique identifier for the topic."
          },
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "string"
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "string"
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "in": "body",
            "name": "UserGroup",
            "required": true,
            "schema": {
              "$ref": "#/definitions/UserGroup"
            },
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "string"
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "string"
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "usergroupId",
            "in": "path",
            "description": "The unique identifier for a user group.",
            "required": true,
            "type": "string"
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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. Either x-api-username or x-api-email is required for endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "userId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          }
        ],
        "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"
        ]
      }
    },
    "/api/webhook-endpoints/{webhookEndpointId}": {
      "delete": {
        "parameters": [
          {
            "name": "x-api-key",
            "in": "header",
            "required": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "name": "webhookEndpointId",
            "in": "path",
            "required": true,
            "type": "string",
            "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 categoryId you specified does not exist.",
                  "code": "InvalidCategoryId",
                  "param": "CategoryId"
                }
              }
            }
          }
        },
        "security": [
          {
            "api_key": []
          }
        ],
        "summary": "Delete a webhook endpoint",
        "tags": [
          "Webhooks"
        ]
      }
    },
    "/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": "API key for authentication.",
            "required": true,
            "type": "string"
          },
          {
            "name": "x-api-username",
            "in": "header",
            "description": "Username for authentication. Either x-api-username or x-api-email is required.",
            "required": false,
            "type": "string"
          },
          {
            "name": "x-api-email",
            "in": "header",
            "description": "Email for authentication. Either x-api-username or x-api-email is required.",
            "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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": "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 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": false,
            "type": "string",
            "description": "Your API key for authentication."
          },
          {
            "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 endpoints that need user context."
          },
          {
            "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 endpoints that need user context."
          }
        ],
        "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": {
      "type": "object",
      "required": [
        "content",
        "topicId",
        "username"
      ],
      "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."
        },
        "topicId": {
          "type": "integer",
          "description": "The unique identifier of a topic to create this object."
        }
      },
      "description": "Parameters for creating a new post.",
      "x-internal": true
    },
    "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."
        },
        "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."
        },
        "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."
        },
        "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."
        },
        "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."
        },
        "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."
        },
        "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."
            }
          }
        },
        "heading": {
          "type": "string",
          "description": "This is the name of the category heading."
        },
        "newTopicMessageTemplate": {
          "type": "string",
          "nullable": true,
          "description": "The default message template for new topics in this category."
        },
        "isPrivate": {
          "type": "boolean",
          "description": "Boolean representing whether the category is private. Only included when the category is visible to the requesting user."
        },
        "replyCount": {
          "type": "integer",
          "description": "The total number of replies in the category."
        },
        "topicCount": {
          "type": "integer",
          "description": "The total number of topics in the category."
        }
      },
      "title": "Category"
    },
    "User": {
      "type": "object",
      "properties": {
        "userId": {
          "type": "integer",
          "description": "The unique identifier of a member that belongs to this object."
        },
        "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."
        },
        "userGroups": {
          "type": "array",
          "description": "A list of user groups that belongs to this member.",
          "items": {
            "type": "integer"
          }
        },
        "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."
        },
        "lastPostTimestamp": {
          "type": "integer",
          "description": "Time at which the member created their last post. Measured in seconds since the Unix epoch."
        },
        "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."
        },
        "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."
        },
        "lastVisitTimestamp": {
          "type": "integer",
          "description": "Time at which the member was last visited. Measured in seconds since the Unix epoch."
        },
        "logInTimestamp": {
          "type": "integer",
          "description": "Unix timestamp representing when the member last logged in."
        },
        "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."
        },
        "countryCode": {
          "type": "string",
          "description": "Country code of member."
        },
        "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."
        },
        "newNotificationCount": {
          "type": "integer",
          "description": "Number of new notifications.(Read Only)"
        },
        "unreadMessageCount": {
          "type": "integer",
          "description": "Number of unread messages.(Read Only)"
        },
        "invalidEmail": {
          "type": "integer",
          "description": "Number of invalid emails.(Read Only)"
        },
        "isModerator": {
          "type": "boolean",
          "description": "It will be true if the user is a moderator of any category.(Read Only)"
        },
        "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."
        },
        "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."
        },
        "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."
        },
        "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."
        },
        "URL": {
          "type": "string",
          "description": "The URL of the user profile."
        },
        "displayNameAndUsername": {
          "type": "string",
          "description": "The display name and username of the member."
        },
        "mobileFollowedContentNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives mobile notifications for followed content."
        },
        "mobileMessageNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives mobile notifications for messages."
        },
        "webFollowedContentNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives web notifications for followed content."
        },
        "topicEmails": {
          "type": "boolean",
          "description": "Boolean representing whether the member receives email notifications for topics."
        },
        "topicsStartedCount": {
          "type": "integer",
          "description": "The number of topics started by the member."
        },
        "postsLikedCount": {
          "type": "integer",
          "description": "The number of posts liked by the member."
        },
        "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."
        }
      },
      "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."
        },
        "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."
        },
        "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."
              }
            }
          }
        },
        "dateTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value.",
          "enum": [
            "Message"
          ]
        },
        "messageText": {
          "type": "string",
          "description": "messageText is the text version of the message with all HTML removed."
        },
        "preview": {
          "type": "string",
          "description": "preview is a short text version of the message."
        },
        "isUnread": {
          "type": "boolean",
          "description": "Boolean representing whether a message is unread or not."
        },
        "conversationId": {
          "type": "integer",
          "description": "The ID of the conversation this message belongs to."
        }
      }
    },
    "AddCategory": {
      "type": "object",
      "required": [
        "title"
      ],
      "properties": {
        "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."
        },
        "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."
        },
        "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."
        },
        "password": {
          "type": "string",
          "description": "It is used to password protect the category so only people with the correct password can enter."
        },
        "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."
        }
      },
      "title": "Category",
      "description": "Creates a new category in Forum.",
      "x-internal": true
    },
    "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."
        },
        "categoryId": {
          "type": "integer",
          "description": "The categoryIds to which the moderator has been assigned."
        },
        "moderatorId": {
          "type": "string",
          "description": "The unique identifier for moderator."
        },
        "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"
          ]
        },
        "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."
        },
        "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."
        },
        "conversationId": {
          "type": "integer",
          "description": "The unique identifier for a conversation."
        },
        "message": {
          "type": "object",
          "description": "The latest message object in the conversation."
        },
        "preview": {
          "type": "string",
          "description": "A preview of the latest message content."
        },
        "canReply": {
          "type": "boolean",
          "description": "Whether the authenticated user can reply to this conversation. Only specified if the x-api-username header has been provided."
        }
      }
    },
    "ListModerators": {
      "allOf": [
        {
          "$ref": "#/definitions/List"
        },
        {
          "type": "object",
          "properties": {
            "data": {
              "type": "array",
              "description": "An array of objects.",
              "items": {
                "$ref": "#/definitions/CategoryModerators"
              }
            }
          }
        }
      ],
      "x-internal": true
    },
    "AddModerators": {
      "type": "object",
      "required": [
        "categoryIds",
        "userId"
      ],
      "properties": {
        "userId": {
          "type": "integer",
          "description": "The unique identifier of a member that needs to assign a moderator."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        },
        "categoryIds": {
          "type": "integer",
          "description": "The categoryIds for which the moderator has to be 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."
        }
      },
      "title": "Create Moderator Schema",
      "description": "Creates a new moderator for category.",
      "x-internal": true
    },
    "UserGroup": {
      "type": "object",
      "properties": {
        "userGroupId": {
          "type": "integer",
          "description": "The unique identifier for a user group."
        },
        "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"
          ]
        },
        "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."
        },
        "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."
        },
        "inviteToken": {
          "type": "string",
          "description": "The invite token for the user group."
        },
        "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."
        },
        "sendMessages": {
          "type": "boolean",
          "description": "Whether members can send private messages."
        },
        "tagOwnTopics": {
          "type": "boolean",
          "description": "Whether members can tag their own topics."
        },
        "viewOnlineUsers": {
          "type": "boolean",
          "description": "Whether members can view the online users list."
        }
      },
      "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.",
      "x-internal": true
    },
    "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.",
      "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."
            }
          }
        },
        "viewCount": {
          "type": "integer",
          "description": "The number of views for the topic."
        },
        "firstPostId": {
          "type": "integer",
          "description": "The unique identifier of first post in topic."
        },
        "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."
        },
        "replyCount": {
          "type": "integer",
          "description": "The number of replies in topic."
        },
        "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."
        },
        "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."
            }
          }
        },
        "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."
        },
        "tags": {
          "type": "array",
          "description": "A list of topic tags.",
          "items": {
            "type": "object",
            "properties": {
              "tagId": {
                "type": "integer",
                "description": "The unique identifier for a tag."
              },
              "tagName": {
                "type": "string",
                "description": "This is the name of the tag."
              },
              "object": {
                "type": "string",
                "description": "String representing the object\u2019s type. Objects of the same type share the same value."
              }
            }
          }
        },
        "object": {
          "type": "string",
          "enum": [
            "Topic"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        },
        "pollId": {
          "type": "integer",
          "description": "The unique identifier for a poll."
        },
        "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."
        },
        "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."
        },
        "firstPost": {
          "type": "object",
          "description": "The first post object in the topic."
        },
        "URL": {
          "type": "string",
          "description": "The URL of the topic."
        }
      },
      "description": "Parameters for updating an existing topic."
    },
    "UpdateCategory": {
      "type": "object",
      "properties": {
        "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."
        },
        "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."
        },
        "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."
        }
      },
      "title": "Category",
      "description": "Parameters for updating an existing category.",
      "x-internal": true
    },
    "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
    },
    "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."
        },
        "likeCount": {
          "type": "integer",
          "description": "Total number of post likes."
        },
        "postTimestamp": {
          "type": "integer",
          "description": "Time at which the object was created. Measured in seconds since the Unix epoch."
        },
        "postId": {
          "type": "integer",
          "description": "The unique identifier of a post."
        },
        "topicId": {
          "type": "integer",
          "description": "The unique identifier of a topic."
        },
        "dislikeCount": {
          "type": "integer",
          "description": "Total number of post dislikes."
        },
        "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."
            }
          }
        },
        "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."
              }
            }
          }
        },
        "attachmentCount": {
          "type": "integer",
          "description": "Total number of attachments in post."
        },
        "pending": {
          "type": "boolean",
          "description": "Boolean representing whether a post is pending or not. Pending post will only be displayed after approval of moderator."
        },
        "object": {
          "type": "string",
          "enum": [
            "Post"
          ],
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        },
        "editTimestamp": {
          "type": "integer",
          "description": "Time at which the object was edited. Measured in seconds since the Unix epoch.(Read Only)"
        },
        "messageText": {
          "type": "string",
          "description": "messageText is the text version of the message with all HTML removed."
        },
        "preview": {
          "type": "string",
          "description": "preview is a short text version of the message."
        },
        "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."
        },
        "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."
        },
        "URL": {
          "type": "string",
          "description": "The URL of the post."
        }
      },
      "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": {
      "type": "object",
      "required": [
        "title"
      ],
      "properties": {
        "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."
        },
        "viewInvisibleMembers": {
          "type": "boolean",
          "description": "The viewInvisibleMembers permission to create this object."
        },
        "viewOthersTopics": {
          "type": "boolean",
          "description": "The viewOthersTopics permission to create this object."
        },
        "viewableOnMembersList": {
          "type": "boolean",
          "description": "The viewableOnMembersList permission to create this object."
        },
        "uploadAttachments": {
          "type": "boolean",
          "description": "The uploadAttachments permission to create this object."
        },
        "changeUsername": {
          "type": "boolean",
          "description": "The changeUsername permission to create this object."
        },
        "viewForum": {
          "type": "boolean",
          "description": "The viewForum permission to create this object."
        },
        "startTopics": {
          "type": "boolean",
          "description": "The startTopics permission to create this object."
        },
        "deleteOwnTopics": {
          "type": "boolean",
          "description": "The deleteOwnTopics permission to create this object."
        },
        "createAlbums": {
          "type": "boolean",
          "description": "The createAlbums permission to create this object."
        },
        "moveOwnTopics": {
          "type": "boolean",
          "description": "The moveOwnTopics permission to create this object."
        },
        "viewAttachments": {
          "type": "boolean",
          "description": "The viewAttachments permission to create this object."
        },
        "editOwnProfile": {
          "type": "boolean",
          "description": "The editOwnProfile permission to create this object."
        },
        "customTitle": {
          "type": "boolean",
          "description": "The customTitle permission to create this object."
        },
        "viewAlbums": {
          "type": "boolean",
          "description": "The viewAlbums permission to create this object."
        },
        "signature": {
          "type": "boolean",
          "description": "The signature permission to create this object."
        },
        "viewTopicContent": {
          "type": "boolean",
          "description": "The viewTopicContent permission to create this object."
        },
        "setSelfAsInvisible": {
          "type": "boolean",
          "description": "The setSelfAsInvisible permission to create this object."
        },
        "editOwnImages": {
          "type": "boolean",
          "description": "The editOwnImages permission to create this object."
        },
        "requirePostApproval": {
          "type": "boolean",
          "description": "The requirePostApproval permission to create this object."
        },
        "viewCalendar": {
          "type": "boolean",
          "description": "The viewCalendar permission to create this object."
        },
        "moderateAlbums": {
          "type": "boolean",
          "description": "The moderateAlbums permission to create this object."
        },
        "editOwnPosts": {
          "type": "boolean",
          "description": "The editOwnPosts permission to create this object."
        },
        "postEvents": {
          "type": "boolean",
          "description": "The postEvents permission to create this object."
        },
        "viewCategory": {
          "type": "boolean",
          "description": "The viewCategory permission to create this object."
        },
        "viewProfiles": {
          "type": "boolean",
          "description": "The viewProfiles permission to create this object."
        },
        "editOwnEvents": {
          "type": "boolean",
          "description": "The editOwnEvents permission to create this object."
        },
        "replyOwnTopics": {
          "type": "boolean",
          "description": "The replyOwnTopics permission to create this object."
        },
        "viewOthersEvents": {
          "type": "boolean",
          "description": "The viewOthersEvents permission to create this object."
        },
        "replyTopics": {
          "type": "boolean",
          "description": "The replyTopics permission to create this object."
        },
        "deleteOwnPosts": {
          "type": "boolean",
          "description": "The deleteOwnPosts permission to create this object."
        },
        "deleteOwnEvents": {
          "type": "boolean",
          "description": "The deleteOwnEvents permission to create this object."
        },
        "deleteOwnImages": {
          "type": "boolean",
          "description": "The deleteOwnImages permission to create this object."
        },
        "deleteOwnProfile": {
          "type": "boolean",
          "description": "The deleteOwnProfile permission to create this object."
        },
        "requireEventApproval": {
          "type": "boolean",
          "description": "The requireEventApproval permission to create this object."
        },
        "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."
        }
      },
      "description": "Parameters for creating a new user group.",
      "x-internal": true
    },
    "UpdateModerator": {
      "type": "object",
      "properties": {
        "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 Update Schema",
      "description": "Updates the specific moderator by setting the values of the parameters passed. Any parameters not provided will be left unchanged.",
      "x-internal": true
    },
    "AddUser": {
      "type": "object",
      "required": [
        "email",
        "password",
        "username"
      ],
      "properties": {
        "username": {
          "type": "string",
          "description": "The username of the member."
        },
        "password": {
          "type": "string",
          "description": "The password of the member."
        },
        "email": {
          "type": "string",
          "description": "The email address of the member. "
        },
        "userGroups": {
          "type": "array",
          "description": "A list of user groups that belongs to this member.",
          "items": {
            "type": "integer"
          }
        },
        "signature": {
          "type": "string",
          "description": "Signature of member."
        },
        "name": {
          "type": "string",
          "description": "The name of the member."
        },
        "instantMessagingType": {
          "type": "string",
          "description": "Instant messaging type of the member."
        },
        "instantMessagingId": {
          "type": "string",
          "description": "Instant messaging id of the member."
        },
        "customFields": {
          "type": "array",
          "description": "A list of custom fields belongs to member.",
          "items": {
            "type": "object",
            "properties": {
              "profileFieldId": {
                "type": "integer",
                "description": "The unique identifier of custom field that belongs to this object."
              },
              "value": {
                "type": "string",
                "description": "The value of custom field. It can be string or array of strings depending on the type of custom field."
              }
            }
          }
        },
        "allowEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member allows other members to send them emails."
        },
        "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."
        },
        "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."
        },
        "suppressEmails": {
          "type": "boolean",
          "description": "Prevent the welcome, email verification, and admin notification emails from being sent."
        },
        "adminEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member can receive admin emails or not."
        },
        "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."
        },
        "mentionEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone mentions them in a post."
        },
        "mentionNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a web notification when they are mentioned in a post."
        },
        "quoteEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone quotes their post."
        },
        "quoteNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a web notification when someone quotes their post."
        },
        "eventEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone posts an event."
        },
        "digestEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a summary email when they haven\u2019t visited the forum in over a week."
        },
        "messageEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member can receive an email when someone sends them a message."
        },
        "namePrivate": {
          "type": "boolean",
          "description": "Boolean representing whether a member name can be private or not."
        },
        "autoFollow": {
          "type": "string",
          "description": "Automatically Follow. Value must be '' for 'Nothing', 'posts' for 'Topics I Start', 'threads' for 'Topics I Post In', 'alltopics' for All Topics."
        },
        "followedContentEmailFrequency": {
          "type": "string",
          "description": "Choose how often a member wants to be notified when content they follow is updated. Value can be 'never', 'weekly', 'daily', 'immediately'."
        },
        "birthDate": {
          "type": "string",
          "description": "Birth date of member. Value should be in mm/dd/yy format."
        }
      },
      "title": "User Post Schema",
      "description": "Creates a new user in Forum.",
      "x-internal": true
    },
    "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
    },
    "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": {
      "type": "object",
      "required": [
        "content",
        "title",
        "username"
      ],
      "properties": {
        "title": {
          "type": "string",
          "description": "The title of the topic."
        },
        "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."
        },
        "categoryId": {
          "type": "integer",
          "description": "The unique identifier of category to create this object."
        }
      },
      "description": "Parameters for creating a new topic.",
      "x-internal": true
    },
    "UpdateUser": {
      "type": "object",
      "properties": {
        "username": {
          "type": "string",
          "description": "The username of member."
        },
        "password": {
          "type": "string",
          "description": "The password of member."
        },
        "email": {
          "type": "string",
          "description": "The email address of the member."
        },
        "userGroups": {
          "type": "array",
          "description": "A list of user groups that belongs to this member.",
          "items": {
            "type": "integer"
          }
        },
        "signature": {
          "type": "string",
          "description": "Signature of member."
        },
        "name": {
          "type": "string",
          "description": "The name of member."
        },
        "instantMessagingType": {
          "type": "string",
          "description": "Instant messaging type of the member."
        },
        "instantMessagingId": {
          "type": "string",
          "description": "Instant messaging id of member."
        },
        "customFields": {
          "type": "array",
          "description": "A list of custom fields belongs to member.",
          "items": {
            "type": "object",
            "properties": {
              "profileFieldId": {
                "type": "integer",
                "description": "The unique identifier of custom field that belongs to this object."
              },
              "value": {
                "type": "string",
                "description": "The value of custom field. It can be string or array of strings depending on the type of custom field."
              }
            }
          }
        },
        "allowEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member allows other members to send them emails."
        },
        "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."
        },
        "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."
        },
        "suppressEmails": {
          "type": "boolean",
          "description": "If that option is enabled, it would not send any emails when the account is created."
        },
        "adminEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member can receive admin emails or not."
        },
        "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."
        },
        "mentionEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone mentions them in a post."
        },
        "mentionNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a web notification when they are mentioned in a post."
        },
        "quoteEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone quotes their post."
        },
        "quoteNotifications": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a web notification when someone quotes their post."
        },
        "eventEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives an email when someone posts an event."
        },
        "digestEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member receives a summary email when they haven\u2019t visited the forum in over a week."
        },
        "messageEmails": {
          "type": "boolean",
          "description": "Boolean representing whether a member can receive an email when someone sends them a message."
        },
        "namePrivate": {
          "type": "boolean",
          "description": "Boolean representing whether a member name can be private or not."
        },
        "autoFollow": {
          "type": "string",
          "description": "Automatically Follow. Value must be '' for 'Nothing', 'posts' for 'Topics I Start', 'threads' for 'Topics I Post In', 'alltopics' for All Topics."
        },
        "followedContentEmailFrequency": {
          "type": "string",
          "description": "Choose how often a member wants to be notified when content they follow is updated. Value can be 'never', 'weekly', 'daily', 'immediately'."
        },
        "birthDate": {
          "type": "string",
          "description": "Birth date of member. Value should be in mm/dd/yy format."
        },
        "likeNotifications": {
          "type": "boolean",
          "description": "It is a boolean representing whether the user should receive web notifications when someone likes their post."
        }
      },
      "title": "User Update Schema",
      "description": "Updates the specific user by setting the values of the parameters passed. Any parameters not provided will be left unchanged.",
      "x-internal": true
    },
    "AddMessage": {
      "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."
        },
        "userId": {
          "type": "integer",
          "description": "The userId of member to create a message."
        }
      },
      "description": "Parameters for sending a message in a conversation.",
      "x-internal": true
    },
    "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."
        }
      }
    },
    "Tag": {
      "type": "object",
      "properties": {
        "tagId": {
          "type": "integer",
          "description": "The unique identifier for a tag."
        },
        "tagName": {
          "type": "string",
          "description": "This is the name of the tag."
        },
        "object": {
          "type": "string",
          "description": "String representing the object\u2019s type. Objects of the same type share the same value."
        }
      }
    },
    "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."
        }
      }
    }
  },
  "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"
    }
  ]
}
