{
  "components": {
    "schemas": {
      "CreateNestedBody": {
        "properties": {
          "users": {
            "items": {
              "$ref": "#/components/schemas/CreateUserBody"
            },
            "type": "array"
          }
        },
        "required": [
          "users"
        ],
        "type": "object"
      },
      "CreatePostBody": {
        "properties": {
          "content": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "CreateUserBody": {
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "ListUsersQueryParams": {
        "properties": {
          "email": {
            "format": "email",
            "type": "string"
          },
          "types": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "types"
        ],
        "type": "object"
      },
      "CreateUserPostImagesBody": {
        "properties": {
          "description": {
            "type": "string"
          }
        },
        "required": [
          "description"
        ],
        "type": "object"
      },
      "ListUsersHeaderParams": {
        "properties": {
          "Authorization": {
            "type": "string"
          },
          "X-Correlation-ID": {
            "type": "string"
          }
        },
        "required": [
          "Authorization"
        ],
        "type": "object"
      },
      "ModelDto": {
        "properties": {
          "age": {
            "type": "integer"
          },
          "email": {
            "format": "email",
            "type": "string"
          },
          "username": {
            "type": "string"
          }
        },
        "required": [
          "email",
          "username"
        ],
        "type": "object"
      },
      "UserQuery": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "basicAuth": {
        "scheme": "basic",
        "type": "http"
      },
      "bearerAuth": {
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "title": "My app",
    "version": "1.2.0"
  },
  "openapi": "3.0.0",
  "paths": {
    "/api": {
      "get": {
        "description": "Common description for all RootController operations",
        "operationId": "RootController.getDefaultPath",
        "responses": {
          "200": {
            "content": {
              "text/html; charset=utf-8": {}
            },
            "description": "Successful response"
          }
        },
        "security": [
          {
            "basicAuth": []
          }
        ],
        "summary": "Get default path",
        "tags": [
          "Root"
        ]
      }
    },
    "/api/stringPath": {
      "get": {
        "description": "Common description for all RootController operations",
        "operationId": "RootController.getStringPath",
        "responses": {
          "200": {
            "content": {
              "text/html; charset=utf-8": {}
            },
            "description": "Successful response"
          }
        },
        "security": [],
        "summary": "Get string path",
        "tags": [
          "Root"
        ]
      }
    },
    "/api/users": {
      "put": {
        "description": "Insert or update a user object - DEPRECATED in v1.0.1",
        "deprecated": true,
        "summary": "",
        "operationId": "UsersController.putUserDefault",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "limit": {
                    "type": "number"
                  },
                  "query": {
                    "$ref": "#/components/schemas/UserQuery"
                  },
                  "token": {
                    "type": "string"
                  }
                },
                "required": [
                  "token"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/": {
      "get": {
        "description": "List all users",
        "operationId": "UsersController.listUsers",
        "parameters": [
          {
            "in": "header",
            "name": "Authorization",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Correlation-ID",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "email",
            "required": false,
            "schema": {
              "format": "email",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "types",
            "required": true,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/cvs": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/ModelDto"
                  },
                  "type": "array"
                }
              }
            },
            "description": ""
          }
        },
        "summary": "List users",
        "tags": [
          "Users"
        ]
      },
      "post": {
        "operationId": "UsersController.createUser",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateUserBody"
              }
            }
          },
          "description": "CreateUserBody",
          "required": false
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelDto"
                }
              }
            },
            "description": "Created user object"
          }
        },
        "summary": "Create user",
        "tags": [
          "Users"
        ]
      },
      "put": {
        "operationId": "UsersController.createManyUsers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/CreateUserBody"
                }
              }
            }
          },
          "description": "CreateUserBody",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create many users",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/nested": {
      "post": {
        "operationId": "UsersController.createNestedUsers",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateNestedBody"
              }
            }
          },
          "description": "CreateNestedBody",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create nested users",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/withType": {
      "post": {
        "operationId": "UsersController.createUserWithType",
        "parameters": [
          {
            "in": "query",
            "name": "user",
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CreateUserBody"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ModelDto"
                }
              }
            },
            "description": "Created user object"
          }
        },
        "summary": "Create user with type",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{from}-{to}": {
      "get": {
        "operationId": "UsersController.listUsersInRange",
        "parameters": [
          {
            "in": "path",
            "name": "from",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "to",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "number"
            }
          },
          {
            "in": "query",
            "name": "",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "userId",
            "required": true,
            "schema": {
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          },
          "400": {
            "description": "Bad request"
          }
        },
        "summary": "List users in range",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{userId}/posts/{postId}/images": {
      "post": {
        "operationId": "UserPostsController.createUserPostImages",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "postId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreateUserPostImagesBody"
                  },
                  {
                    "properties": {
                      "images": {
                        "items": {
                          "format": "binary",
                          "type": "string"
                        },
                        "type": "array"
                      },
                      "token": {
                        "type": "string"
                      }
                    },
                    "required": [],
                    "type": "object"
                  }
                ]
              }
            }
          },
          "description": "CreateUserPostImagesBody",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "text/html; charset=utf-8": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create user post images",
        "tags": [
          "User Posts"
        ]
      }
    },
    "/api/users/{version}": {
      "delete": {
        "operationId": "UsersController.deleteUsersByVersion",
        "parameters": [
          {
            "in": "path",
            "name": "version",
            "required": true,
            "schema": {
              "pattern": "v?\\d{1}|all",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Delete users by version",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{userId}": {
      "get": {
        "operationId": "UsersController.getUser",
        "parameters": [
          {
            "in": "header",
            "name": "",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "X-Requested-With",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "userId",
            "required": false,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get user",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{userId}/avatar": {
      "put": {
        "operationId": "UsersController.putUserAvatar",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "image": {
                    "format": "binary",
                    "type": "string"
                  }
                },
                "required": [],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Put user avatar",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{userId}/posts": {
      "post": {
        "operationId": "UsersController.createUserPost",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/CreatePostBody"
                  },
                  {
                    "properties": {
                      "token": {
                        "type": "string"
                      }
                    },
                    "required": [],
                    "type": "object"
                  }
                ]
              }
            }
          },
          "description": "CreatePostBody",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Create user post",
        "tags": [
          "Users"
        ]
      }
    },
    "/api/users/{userId}/posts/{postId}": {
      "get": {
        "operationId": "UserPostsController.getUserPost",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "number"
            }
          },
          {
            "in": "path",
            "name": "postId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "text/html; charset=utf-8": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Get user post",
        "tags": [
          "User Posts"
        ]
      },
      "patch": {
        "operationId": "UserPostsController.patchUserPost",
        "parameters": [
          {
            "in": "path",
            "name": "userId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          },
          {
            "in": "path",
            "name": "postId",
            "required": true,
            "schema": {
              "pattern": "[^\\/#\\?]+?",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "token": {
                    "type": "string"
                  }
                },
                "required": [],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "text/html; charset=utf-8": {}
            },
            "description": "Successful response"
          }
        },
        "summary": "Patch user post",
        "tags": [
          "User Posts"
        ]
      }
    }
  }
}