{
  "swagger": "2.0",
  "info": {
    "description": "Create APIs at the speed of your thoughts",
    "version": "1.0.0",
    "title": "NocoDB",
    "contact": {}
  },
  "host": "localhost:8080",
  "basePath": "/",
  "tags": [
    {
      "name": "common"
    }
  ],
  "schemes": [
    "http"
  ],
  "paths": {
    "/auth/signin": {
      "post": {
        "security": [
        ],
        "tags": [
          "Authentication"
        ],
        "summary": "User login",
        "description": "",
        "operationId": "login",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Authentication user details",
            "required": true,
            "schema": {
              "$ref": "#/definitions/userAuth"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Authenticated successfully",
            "schema": {
              "$ref": "#/definitions/token"
            }
          }
        }
      }
    },
    "/auth/signup": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "User signup",
        "description": "",
        "operationId": "signup",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Signup user details",
            "required": true,
            "schema": {
              "$ref": "#/definitions/user"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Registration success",
            "schema": {
              "$ref": "#/definitions/token"
            }
          },
          "400": {
            "description": "Bad request"
          }
        }
      }
    },
    "/auth/password/forgot": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Password Forgot",
        "description": "",
        "operationId": "passwordForgot",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Email address",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "email": {
                  "type": "string",
                  "required": true,
                  "example": "test@nocodb.com"
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Mailed password reset link",
            "schema": {
              "type": "boolean"
            }
          }
        }
      }
    },
    "/auth/email/validate/{tokenId}": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Email validate link",
        "description": "",
        "operationId": "emailValidate",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "tokenId",
            "in": "path",
            "description": "random token id received",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Validated successfully"
          }
        }
      }
    },
    "/auth/token/validate/{tokenId}": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "Validate password reset token",
        "description": "",
        "operationId": "passwordResetTokenValidate",
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "tokenId",
            "in": "path",
            "description": "random token id received",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "Validated successfully"
          }
        }
      }
    },
    "/auth/password/reset/": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Password reset",
        "description": "",
        "operationId": "passwordReset",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "tokenId",
            "in": "path",
            "description": "random token id received",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "in": "body",
            "name": "body",
            "description": "Reset password details",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "password": {
                  "type": "string",
                  "format": "password",
                  "example": "password",
                  "required": true
                }
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Password reset successfully"
          }
        }
      }
    },
    "/user/me": {
      "get": {
        "tags": [
          "Authentication"
        ],
        "summary": "User details",
        "description": "",
        "operationId": "userDetails",
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "User details"
          }
        }
      }
    },
    "/user": {
      "put": {
        "tags": [
          "Authentication"
        ],
        "summary": "Update user details",
        "description": "",
        "operationId": "updateUserDetails",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "User details"
          }
        },
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Updated user details",
            "required": true,
            "schema": {
              "$ref": "#/definitions/user"
            }
          }
        ]
      }
    },
    "/user/password/change": {
      "post": {
        "tags": [
          "Authentication"
        ],
        "summary": "Update user details",
        "description": "",
        "operationId": "passwordChange",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "responses": {
          "200": {
            "description": "User details"
          }
        },
        "parameters": [
          {
            "in": "body",
            "name": "body",
            "description": "Current password and new password",
            "required": true,
            "schema": {
              "type": "object",
              "properties": {
                "currentPassword": {
                  "type": "string",
                  "format": "password",
                  "example": "password"
                },
                "newPassword": {
                  "type": "string",
                  "format": "password",
                  "example": "newPassword"
                }
              }
            }
          }
        ]
      }
    }
  },
  "definitions": {
    "userAuth": {
      "type": "object",
      "properties": {
        "email": {
          "type": "string",
          "format": "email",
          "nullable": false,
          "example": "test@nocodb.com"
        },
        "password": {
          "type": "string",
          "format": "password",
          "nullable": false,
          "example": "password"
        }
      }
    },
    "token": {
      "type": "object",
      "properties": {
        "token": {
          "type": "string",
          "format": "email",
          "nullable": false,
          "example": "< JWT Token >"
        }
      }
    },
    "user": {
      "allOf": [
        {
          "$ref": "#/definitions/userAuth"
        },
        {
          "type": "object",
          "properties": {
            "id": {
              "type": "integer",
              "nullable": false,
              "readOnly": true
            },
            "firstname": {
              "type": "string",
              "nullable": false,
              "example": "FirstName"
            },
            "lastname": {
              "type": "string",
              "nullable": false,
              "example": "LastName"
            },
            "roles": {
              "type": "object",
              "readOnly": true
            },
            "created_at": {
              "type": "string",
              "readOnly": true
            },
            "updated_at": {
              "type": "string",
              "readOnly": true
            },
            "email_verified": {
              "type": "boolean",
              "readOnly": true
            }
          }
        }
      ]
    }
  },
  "security": [
    {
      "xcAuth": []
    }
  ],
  "externalDocs": {
    "description": "Find out more about NocoDB",
    "url": "http://nocodb.com"
  },
  "securityDefinitions": {
    "xcAuth": {
      "type": "apiKey",
      "in": "header",
      "name": "xc-auth"
    }
  }
}