{
  "openapi": "3.0.3",
  "info": {
    "title": "Ravi API",
    "version": "1.0.0",
    "description": "Identity provider for AI agents \u2014 provisioned phone numbers, email addresses, TOTP, OTP extraction, and E2E-encrypted passwords and secrets."
  },
  "paths": {
    "/api/auth/bind-identity/": {
      "post": {
        "operationId": "auth_bind_identity_create",
        "description": "Issue a new token pair with ``identity_uuid`` baked into the JWT claims.\n\nPOST /api/auth/bind-identity/\nBody: { \"identity\": \"<uuid>\" }\n\nCan be called multiple times to switch identities.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BindIdentityRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/BindIdentityRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/BindIdentityRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "jwtAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BindIdentityResponse"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/keys/identity/": {
      "get": {
        "operationId": "auth_keys_identity_list",
        "description": "List, create, and revoke identity API keys.",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/IdentityAPIKeyList"
                  }
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "auth_keys_identity_create",
        "description": "List, create, and revoke identity API keys.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/IdentityAPIKeyCreateRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/IdentityAPIKeyCreateRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/IdentityAPIKeyCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IdentityAPIKeyCreate"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/keys/identity/{uuid}/": {
      "delete": {
        "operationId": "auth_keys_identity_destroy",
        "description": "List, create, and revoke identity API keys.",
        "parameters": [
          {
            "in": "path",
            "name": "uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/auth/keys/management/": {
      "get": {
        "operationId": "auth_keys_management_list",
        "description": "List, create, and revoke management API keys.",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ManagementAPIKeyList"
                  }
                }
              }
            },
            "description": ""
          }
        }
      },
      "post": {
        "operationId": "auth_keys_management_create",
        "description": "List, create, and revoke management API keys.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ManagementAPIKeyCreateRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ManagementAPIKeyCreateRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ManagementAPIKeyCreateRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ManagementAPIKeyCreate"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/keys/management/{uuid}/": {
      "delete": {
        "operationId": "auth_keys_management_destroy",
        "description": "List, create, and revoke management API keys.",
        "parameters": [
          {
            "in": "path",
            "name": "uuid",
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "required": true
          }
        ],
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "204": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/auth/login/": {
      "post": {
        "operationId": "auth_login_create",
        "description": "Check the credentials and return the REST Token\nif the credentials are valid and authenticated.\nCalls Django Auth login method to register User ID\nin Django session framework\n\nAccept the following POST parameters: username, password\nReturn the REST Framework Token Object's key.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/LoginRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JWT"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/logout/": {
      "post": {
        "operationId": "auth_logout_create",
        "description": "Calls Django logout method and delete the Token object\nassigned to the current User object.\n\nAccepts/Returns nothing.",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/password/change/": {
      "post": {
        "operationId": "auth_password_change_create",
        "description": "Calls Django Auth SetPasswordForm save method.\n\nAccepts the following POST parameters: new_password1, new_password2\nReturns the success/fail message.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PasswordChangeRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/password/reset/": {
      "post": {
        "operationId": "auth_password_reset_create",
        "description": "Calls Django Auth PasswordResetForm save method.\n\nAccepts the following POST parameters: email\nReturns the success/fail message.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/password/reset/confirm/": {
      "post": {
        "operationId": "auth_password_reset_confirm_create",
        "description": "Password reset e-mail link is confirmed, therefore\nthis resets the user's password.\n\nAccepts the following POST parameters: token, uid,\n    new_password1, new_password2\nReturns the success/fail message.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetConfirmRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetConfirmRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PasswordResetConfirmRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/social/": {
      "post": {
        "operationId": "auth_social_create",
        "description": "Registers a new user.\n\nAccepts the following POST parameters: username, email, password1, password2.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/RegisterRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JWT"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/social/resend-email/": {
      "post": {
        "operationId": "auth_social_resend_email_create",
        "description": "Resends another email to an unverified email.\n\nAccepts the following POST parameter: email.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResendEmailVerificationRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/ResendEmailVerificationRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/ResendEmailVerificationRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/social/verify-email/": {
      "post": {
        "operationId": "auth_social_verify_email_create",
        "description": "Verifies the email associated with the provided key.\n\nAccepts the following POST parameter: key.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/VerifyEmailRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          },
          {}
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RestAuthDetail"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/token/refresh/": {
      "post": {
        "operationId": "auth_token_refresh_create",
        "description": "Takes a refresh type JSON web token and returns an access type JSON web\ntoken if the refresh token is valid.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefreshRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefreshRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TokenRefreshRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TokenRefresh"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/auth/token/verify/": {
      "post": {
        "operationId": "auth_token_verify_create",
        "description": "Takes a token and indicates if it is valid.  This view provides no\ninformation about a token's fitness for a particular use.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TokenVerifyRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/TokenVerifyRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/TokenVerifyRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "No response body"
          }
        }
      }
    },
    "/api/auth/user/": {
      "get": {
        "operationId": "auth_user_retrieve",
        "description": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.\n\nDefault accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            },
            "description": ""
          }
        }
      },
      "put": {
        "operationId": "auth_user_update",
        "description": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.\n\nDefault accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UserDetailsRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/UserDetailsRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/UserDetailsRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            },
            "description": ""
          }
        }
      },
      "patch": {
        "operationId": "auth_user_partial_update",
        "description": "Reads and updates UserModel fields\nAccepts GET, PUT, PATCH methods.\n\nDefault accepted fields: username, first_name, last_name\nDefault display fields: pk, username, email, first_name, last_name\nRead-only fields: pk, email\n\nReturns UserModel fields.",
        "tags": [
          "Auth"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PatchedUserDetailsRequest"
              }
            },
            "application/x-www-form-urlencoded": {
              "schema": {
                "$ref": "#/components/schemas/PatchedUserDetailsRequest"
              }
            },
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/PatchedUserDetailsRequest"
              }
            }
          }
        },
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/UserDetails"
                }
              }
            },
            "description": ""
          }
        }
      }
    },
    "/api/master/": {
      "get": {
        "operationId": "master_retrieve",
        "description": "Return the authenticated user's (master/owner) profile information.",
        "tags": [
          "Auth"
        ],
        "security": [
          {
            "identityKeyAuth": []
          },
          {
            "managementKeyAuth": []
          },
          {
            "jwtAuth": []
          },
          {
            "cookieAuth": []
          },
          {
            "basicAuth": []
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MasterResponse"
                }
              }
            },
            "description": ""
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BindIdentityRequest": {
        "type": "object",
        "properties": {
          "identity": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "identity"
        ]
      },
      "BindIdentityResponse": {
        "type": "object",
        "properties": {
          "access": {
            "type": "string"
          },
          "refresh": {
            "type": "string"
          }
        },
        "required": [
          "access",
          "refresh"
        ]
      },
      "IdentityAPIKeyCreate": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100
          },
          "identity_uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "identity_uuid",
          "label"
        ]
      },
      "IdentityAPIKeyCreateRequest": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          },
          "identity_uuid": {
            "type": "string",
            "format": "uuid"
          }
        },
        "required": [
          "identity_uuid",
          "label"
        ]
      },
      "IdentityAPIKeyList": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "masked_key": {
            "type": "string",
            "readOnly": true
          },
          "label": {
            "type": "string",
            "maxLength": 100
          },
          "identity": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "last_used_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_dt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_dt",
          "identity",
          "label",
          "masked_key",
          "uuid"
        ]
      },
      "JWT": {
        "type": "object",
        "description": "Serializer for JWT authentication.",
        "properties": {
          "access": {
            "type": "string"
          },
          "refresh": {
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/UserDetails"
          }
        },
        "required": [
          "access",
          "refresh",
          "user"
        ]
      },
      "LoginRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          },
          "password": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "password"
        ]
      },
      "ManagementAPIKeyCreate": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "maxLength": 100
          }
        },
        "required": [
          "label"
        ]
      },
      "ManagementAPIKeyCreateRequest": {
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100
          }
        },
        "required": [
          "label"
        ]
      },
      "ManagementAPIKeyList": {
        "type": "object",
        "properties": {
          "uuid": {
            "type": "string",
            "format": "uuid",
            "readOnly": true
          },
          "masked_key": {
            "type": "string",
            "readOnly": true
          },
          "label": {
            "type": "string",
            "maxLength": 100
          },
          "last_used_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_dt": {
            "type": "string",
            "format": "date-time",
            "readOnly": true
          }
        },
        "required": [
          "created_dt",
          "label",
          "masked_key",
          "uuid"
        ]
      },
      "MasterResponse": {
        "type": "object",
        "properties": {
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "email": {
            "type": "string",
            "format": "email"
          }
        },
        "required": [
          "email",
          "first_name",
          "last_name"
        ]
      },
      "PasswordChangeRequest": {
        "type": "object",
        "properties": {
          "new_password1": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "new_password2": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          }
        },
        "required": [
          "new_password1",
          "new_password2"
        ]
      },
      "PasswordResetConfirmRequest": {
        "type": "object",
        "description": "Serializer for confirming a password reset attempt.",
        "properties": {
          "new_password1": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "new_password2": {
            "type": "string",
            "minLength": 1,
            "maxLength": 128
          },
          "uid": {
            "type": "string",
            "minLength": 1
          },
          "token": {
            "type": "string",
            "minLength": 1
          }
        },
        "required": [
          "new_password1",
          "new_password2",
          "token",
          "uid"
        ]
      },
      "PasswordResetRequest": {
        "type": "object",
        "description": "Serializer for requesting a password reset e-mail.",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "minLength": 1
          }
        },
        "required": [
          "email"
        ]
      },
      "PatchedUserDetailsRequest": {
        "type": "object",
        "description": "User model w/o password",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "description": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
            "pattern": "^[\\w.@+-]+$",
            "maxLength": 150
          },
          "first_name": {
            "type": "string",
            "maxLength": 150
          },
          "last_name": {
            "type": "string",
            "maxLength": 150
          }
        }
      },
      "RegisterRequest": {
        "type": "object",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "maxLength": 150
          },
          "email": {
            "type": "string",
            "format": "email",
            "minLength": 1
          },
          "password1": {
            "type": "string",
            "writeOnly": true,
            "minLength": 1
          },
          "password2": {
            "type": "string",
            "writeOnly": true,
            "minLength": 1
          }
        },
        "required": [
          "email",
          "password1",
          "password2",
          "username"
        ]
      },
      "ResendEmailVerificationRequest": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "format": "email",
            "minLength": 1
          }
        },
        "required": [
          "email"
        ]
      },
      "RestAuthDetail": {
        "type": "object",
        "properties": {
          "detail": {
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "detail"
        ]
      },
      "TokenRefresh": {
        "type": "object",
        "properties": {
          "access": {
            "type": "string",
            "readOnly": true
          }
        },
        "required": [
          "access"
        ]
      },
      "TokenRefreshRequest": {
        "type": "object",
        "properties": {
          "refresh": {
            "type": "string",
            "writeOnly": true,
            "minLength": 1
          }
        },
        "required": [
          "refresh"
        ]
      },
      "TokenVerifyRequest": {
        "type": "object",
        "properties": {
          "token": {
            "type": "string",
            "writeOnly": true,
            "minLength": 1
          }
        },
        "required": [
          "token"
        ]
      },
      "UserDetails": {
        "type": "object",
        "description": "User model w/o password",
        "properties": {
          "pk": {
            "type": "integer",
            "readOnly": true,
            "title": "ID"
          },
          "username": {
            "type": "string",
            "description": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
            "pattern": "^[\\w.@+-]+$",
            "maxLength": 150
          },
          "email": {
            "type": "string",
            "format": "email",
            "readOnly": true,
            "title": "Email address"
          },
          "first_name": {
            "type": "string",
            "maxLength": 150
          },
          "last_name": {
            "type": "string",
            "maxLength": 150
          }
        },
        "required": [
          "email",
          "pk",
          "username"
        ]
      },
      "UserDetailsRequest": {
        "type": "object",
        "description": "User model w/o password",
        "properties": {
          "username": {
            "type": "string",
            "minLength": 1,
            "description": "Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.",
            "pattern": "^[\\w.@+-]+$",
            "maxLength": 150
          },
          "first_name": {
            "type": "string",
            "maxLength": 150
          },
          "last_name": {
            "type": "string",
            "maxLength": 150
          }
        },
        "required": [
          "username"
        ]
      },
      "VerifyEmailRequest": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "writeOnly": true,
            "minLength": 1
          }
        },
        "required": [
          "key"
        ]
      }
    }
  }
}
