Files
better-auth/docs/open-api.json
Bereket Engida d93dc53180 chore:lint
2024-11-23 03:05:31 +03:00

1968 lines
38 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"openapi": "3.1.1",
"info": {
"title": "Better Auth API",
"description": "The Better Auth API Endpoints gets documented here.\n\n## Resources\n\n* https://github.com/better-auth/better-auth\n* https://better-auth.com\n",
"version": "1.0.0",
"contact": {
"url": "https://better-auth.com"
}
},
"servers": [
{
"url": "{protocol}://{baseURL}/{path}",
"description": "Responds with your request data",
"variables": {
"baseURL": {
"default": "localhost:3000"
},
"protocol": {
"enum": ["https"],
"default": "https"
},
"path": {
"default": ""
}
}
}
],
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"tags": [
{
"name": "Sessions",
"description": "Everything about sessions"
},
{
"name": "Account",
"description": "Everything about account"
},
{
"name": "Callback",
"description": "Everything about callback"
},
{
"name": "Email Verification",
"description": "Everything about email verification"
},
{
"name": "Forget Password",
"description": "Everything about forget password"
},
{
"name": "Sign in",
"description": "Everything about sign in"
},
{
"name": "Sign out",
"description": "Everything about sign out"
},
{
"name": "Sign up",
"description": "Everything about sign up"
},
{
"name": "Update user",
"description": "Everything about update user"
}
],
"paths": {
"/get-session": {
"get": {
"tags": ["Sessions"],
"summary": "Get current session",
"descriptions": "It's used to get the currently logged in session.",
"operationId": "getSession",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Session"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/list-sessions": {
"get": {
"tags": ["Sessions"],
"summary": "List all sessions",
"descriptions": "It's used to list all the sessions.",
"operationId": "listSessions",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Session"
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/revoke-session": {
"post": {
"tags": ["Sessions"],
"summary": "Revoke a session",
"descriptions": "It's used to revoke a session.",
"operationId": "revokeSession",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"description": "Session ID",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/revoke-sessions": {
"post": {
"tags": ["Sessions"],
"summary": "Revoke all sessions",
"descriptions": "It's used to revoke all sessions.",
"operationId": "revokeSessions",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/revoke-other-sessions": {
"post": {
"tags": ["Sessions"],
"summary": "Revoke other sessions",
"descriptions": "It's used to revoke all other sessions, other than the current one.",
"operationId": "revokeOtherSessions",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/list-accounts": {
"get": {
"tags": ["Account"],
"summary": "List all accounts",
"descriptions": "It's used to list all the accounts linked to the current user.",
"operationId": "listAccounts",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Account"
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
}
}
}
},
"/link-social": {
"post": {
"tags": ["Account"],
"summary": "Link social account",
"descriptions": "It's used to link social account to the current user.",
"operationId": "linkSocial",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "currentURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"examples": [
"google",
"facebook",
"github",
"gitlab",
"twitter",
"linkedin",
"microsoft"
],
"default": "google"
},
"callbackURL": {
"type": "string",
"format": "url",
"required": false,
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"format": "url"
},
"redirect": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Social Account is already linked."]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/responses/Unauthorized"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Provider not found"]
}
}
}
}
}
}
}
}
},
"/callback/:id": {
"get": {
"tags": ["Callback"],
"summary": "Callback",
"descriptions": "It's used to callback the social account.",
"operationId": "callback",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "state",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "code",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
},
{
"name": "error",
"in": "query",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"302": {
"description": "Redirect on error or success"
}
}
}
},
"/send-verification-email": {
"post": {
"tags": ["Email Verification"],
"summary": "Send verification email",
"descriptions": "It's used to send verification email.",
"operationId": "sendVerificationEmail",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "currentURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"examples": ["bekacru@better-auth.com"]
},
"callbackURL": {
"type": "string",
"format": "url",
"required": false,
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Verification email isn't enabled",
"User not found"
]
}
}
}
}
}
}
}
}
},
"/verify-email": {
"get": {
"tags": ["Email Verification"],
"summary": "Verify email",
"descriptions": "It's used to verify email.",
"operationId": "verifyEmail",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "callbackURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User",
"nullable": true
},
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"302": {
"description": "Redirect"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Invalid token", "User not found"]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Session not found", "Invalid session"]
}
}
}
}
}
}
}
}
},
"/forget-password": {
"post": {
"tags": ["Forget Password"],
"summary": "Forget password",
"descriptions": "It's used to forget password.",
"operationId": "forgetPassword",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"examples": ["bekacru@better-auth.com"]
},
"redirctTo": {
"type": "string",
"format": "url",
"required": false,
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Reset password isn't enabled"]
}
}
}
}
}
}
}
}
},
"/reset-password/:token": {
"get": {
"tags": ["Forget Password"],
"summary": "Reset password with token",
"descriptions": "It's used to reset password with a token.",
"operationId": "resetPasswordToken",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "token",
"in": "path",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "callbackURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
],
"responses": {
"302": {
"description": "Redirect"
}
}
}
},
"/reset-password": {
"post": {
"tags": ["Forget Password"],
"summary": "Reset password",
"descriptions": "It's used to reset/set a new password.",
"operationId": "resetPassword",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "token",
"in": "query",
"required": true,
"schema": {
"type": "string",
"format": "uuid"
}
},
{
"name": "callbackURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"newPassword": {
"type": "string",
"examples": ["i-love-better-auth", "better-auth-is-cool"]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Token not found",
"Invalid token",
"Failed to update password"
]
}
}
}
}
}
}
}
}
},
"/sign-in/social": {
"post": {
"tags": ["Sign in"],
"summary": "Sign in with social account",
"descriptions": "It's used to sign in with social account.",
"operationId": "signInSocial",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "currentURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"provider": {
"type": "string",
"examples": [
"google",
"facebook",
"github",
"gitlab",
"twitter",
"linkedin",
"microsoft"
],
"default": "google"
},
"callbackURL": {
"type": "string",
"format": "url",
"required": false,
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
},
"idToken": {
"required": false,
"type": "object",
"properties": {
"token": {
"type": "string"
},
"nonce": {
"type": "string",
"required": false
},
"accessToken": {
"type": "string",
"required": false
},
"refreshToken": {
"type": "string",
"required": false
},
"expiresAt": {
"type": "integer",
"format": "int64",
"required": false
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User",
"nullable": true
},
"session": {
"$ref": "#/components/schemas/Session",
"nullable": true
},
"url": {
"type": "string",
"format": "url"
},
"redirect": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Invalid id token",
"Failed to get user info",
"User email not found"
]
}
}
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Provider not found",
"Provider does not support id token verification"
]
}
}
}
}
}
}
}
}
},
"/sign-in/email": {
"post": {
"tags": ["Sign in"],
"summary": "Sign in with email",
"descriptions": "It's used to sign in with email.",
"operationId": "signInEmail",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"examples": ["bekacru@better-auth.com"]
},
"password": {
"type": "string",
"examples": ["i-love-better-auth"]
},
"callbackURL": {
"type": "string",
"format": "url",
"required": false
},
"dontRememberMe": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User",
"nullable": true
},
"session": {
"$ref": "#/components/schemas/Session",
"nullable": true
},
"url": {
"type": "string",
"format": "url"
},
"redirect": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Invalid email"]
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Email and password is not enabled",
"Invalid email or password",
"Unexpected error",
"Failed to create session"
]
}
}
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Email is not verified. Check your email for a verification link"
]
}
}
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Email is not verified."]
}
}
}
}
}
}
}
}
},
"/sign-out": {
"post": {
"tags": ["Sign out"],
"summary": "Sign out",
"descriptions": "It's used to sign out.",
"operationId": "signOut",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Session not found"]
}
}
}
}
}
}
}
}
},
"/sign-up/email": {
"post": {
"tags": ["Sign up"],
"summary": "Sign up with email",
"descriptions": "It's used to sign up with email.",
"operationId": "signUpEmail",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "currentURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"examples": ["Bekacru"]
},
"email": {
"type": "string",
"format": "email",
"examples": ["bekacru@better-auth.com"]
},
"password": {
"type": "string",
"examples": ["i-love-better-auth"]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User"
},
"session": {
"$ref": "#/components/schemas/Session",
"nullable": true
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Email and password sign up is not enabled",
"Invalid email",
"Password is too short",
"Password is too long",
"Failed to create user",
"Failed to create session"
]
}
}
}
}
}
},
"422": {
"description": "Unprocessable Entity",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"User with this email already exists",
"Failed to create user"
]
}
}
}
}
}
}
}
}
},
"/update-user": {
"post": {
"tags": ["Update user"],
"summary": "Update user",
"descriptions": "It's used to update user.",
"operationId": "updateUser",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"required": false,
"type": "string",
"examples": ["Bekacru"]
},
"image": {
"required": false,
"type": "string",
"format": "url"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User"
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["You can't update email"]
}
}
}
}
}
}
}
}
},
"/change-password": {
"post": {
"tags": ["Update user"],
"summary": "Change password",
"descriptions": "It's used to change password.",
"operationId": "changePassword",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"currentPassword": {
"type": "string",
"examples": ["i-like-better-auth"]
},
"newPassword": {
"type": "string",
"examples": ["i-love-better-auth"]
},
"revokeOtherSessions": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/User"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Password is too short",
"Password too long",
"User does not have a password",
"Incorrect password"
]
}
}
}
}
}
},
"500": {
"description": "Internal Server Error",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": ["Unable to create session"]
}
}
}
}
}
}
}
}
},
"/set-password": {
"post": {
"tags": ["Update user"],
"summary": "Set password",
"descriptions": "It's used to set password.",
"operationId": "setPassword",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"newPassword": {
"type": "string",
"examples": ["i-love-better-auth"]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/User"
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Password is too short",
"Password too long",
"user already has a password"
]
}
}
}
}
}
}
}
}
},
"/delete-user": {
"post": {
"tags": ["Update user"],
"summary": "Delete user",
"descriptions": "It's used to delete user.",
"operationId": "deleteUser",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string",
"examples": ["i-love-better-auth"]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "integer",
"nullable": true
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"User does not have a password",
"Incorrect password"
]
}
}
}
}
}
}
}
}
},
"/change-email": {
"post": {
"tags": ["Update user"],
"summary": "Change email",
"descriptions": "It's used to change email.",
"operationId": "changeEmail",
"security": [
{
"bearerAuth": []
},
{
"apiKeyCookie": []
}
],
"parameters": [
{
"name": "currentURL",
"in": "query",
"required": false,
"schema": {
"type": "string",
"format": "url",
"examples": ["https://better-auth.com"]
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"newEmail": {
"type": "string",
"format": "email",
"examples": ["bekacru@better-auth.com"]
},
"callbackURL": {
"type": "string",
"format": "url",
"required": false,
"examples": ["https://better-auth.com"],
"default": "http://localhost:3000"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/User",
"nullable": true
},
"status": {
"type": "boolean",
"examples": [true]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"examples": [
"Change email is disabled",
"Email is the same",
"Couldn't update your email",
"Verification email isn't enabled"
]
}
}
}
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"bearerAuth": {
"type": "http",
"scheme": "bearer",
"description": "JWT Bearer token authentication"
},
"apiKeyCookie": {
"type": "apiKey",
"in": "cookie",
"name": "api_key",
"description": "API key browser cookie"
}
},
"responses": {
"BadRequest": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"Forbidden": {
"description": "Forbidden",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"NotFound": {
"description": "NotFound",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
},
"Unauthorized": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
},
"schemas": {
"Session": {
"type": "object",
"properties": {
"session": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"ipAddress": {
"type": "string",
"format": "ipv4",
"example": "127.0.0.1"
},
"userAgent": {
"type": "string"
},
"userId": {
"type": "string",
"format": "uuid"
}
}
},
"user": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"emailVerified": {
"type": "boolean"
},
"image": {
"type": "string",
"format": "url"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
}
}
},
"Account": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"accountId": {
"type": "string"
},
"providerId": {
"type": "string",
"examples": [
"google",
"facebook",
"github",
"gitlab",
"twitter",
"linkedin",
"microsoft"
]
},
"userId": {
"type": "string"
},
"accessToken": {
"type": "string"
},
"refreshToken": {
"type": "string"
},
"idToken": {
"type": "string"
},
"expiresAt": {
"type": "string",
"format": "date-time"
},
"password": {
"type": "string"
}
}
},
"User": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"emailVerified": {
"type": "boolean"
},
"image": {
"type": "string",
"format": "url"
},
"createdAt": {
"type": "string",
"format": "date-time"
},
"updatedAt": {
"type": "string",
"format": "date-time"
}
}
},
"Error": {
"type": "object",
"description": "RFC 7807 (https://datatracker.ietf.org/doc/html/rfc7807)",
"properties": {
"type": {
"type": "string",
"examples": ["https://example.com/errors/generic-error"]
},
"title": {
"type": "string",
"examples": ["Something went wrong here."]
},
"status": {
"type": "integer",
"format": "int64",
"examples": [403]
},
"detail": {
"type": "string",
"examples": ["Unfortunately, we cant provide further information."]
}
}
}
}
}
}