-
Notifications
You must be signed in to change notification settings - Fork 1
Auth Service API Endpoints
Bobby Curley edited this page Oct 16, 2025
·
3 revisions
| Action | Method | Endpoint | Description |
|---|---|---|---|
| Register | POST | /auth/register/ | Registers a new user with a username, email, and password. Password is not stored, only used to derive auth key which gets stored with the user. |
| Login | POST | /auth/login/ | Authenticates an existing user and issues JWT access and refresh tokens. |
| Token Refresh | POST | /auth/token/ | Refreshes an expired token using a refresh token. |
| Logout | POST | /auth/logout/ | Invalidate a current refresh token by blacklisting it. |
Registers a new user with a username, email address, and password
{
"username": "bcurley",
"email": "curleyr@oregonstate.edu",
"password": "ThisIsMyStrongPassword123",
"password2": "ThisIsMyStrongPassword123"
}{
"username": "bcurley",
"email": "curleyr@oregonstate.edu",
"auth_key": "77947b924dad00d15e811c3bc7372a6d710cec078d6785a24d9b254d961c26e3"
}Duplicate username
{
"username": [
"A user with that username already exists."
]
}Mismatched passwords
{
"password": [
"Password fields didn't match."
]
}Invalid email address syntax
{
"email": [
"Enter a valid email address."
]
}Missing required field
{
"username": [
"This field is required."
],
"email": [
"This field is required."
],
"password": [
"This field is required."
],
"password2": [
"This field is required."
]
}Authenticate an existing user and issue a JWT Bearer access/refresh token.
{
"username": "bcurley",
"password": "ThisIsMyStrongPassword123"
}{
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYwMzc5OTkxLCJpYXQiOjE3NjAzNzkwOTEsImp0aSI6ImE3YTc5OTEwMzI0ODQ1YWViZmY0YjhkOGNiOWM0OGQ4IiwidXNlcl9pZCI6IjMifQ.tIyDetkhksQQckDZT1rj3-kk6BHC5W2Wbe5dmmVBEag",
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTc2MDQ2NTQ5MSwiaWF0IjoxNzYwMzc5MDkxLCJqdGkiOiI4ZGMwOWFhMGE0YTE0YjE0YTA1YmY2OTc3OTc4YTRmMiIsInVzZXJfaWQiOiIzIn0.aBSE7wLcrTw_7j6Mbrg8LGMMZzgzh-6xCbJTmKJEBdQ",
"type": "Bearer",
"expires_in": 900
}Invalid username or password
{
"non_field_errors": [
"Invalid username or password."
]
}User doesn't exist
{
"non_field_errors": [
"User does not exist"
]
}Missing required field
{
"username": [
"This field is required."
],
"password": [
"This field is required."
]
}Refresh an expired token using a refresh token
{
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTc2MDQ2NTQ5MSwiaWF0IjoxNzYwMzc5MDkxLCJqdGkiOiI4ZGMwOWFhMGE0YTE0YjE0YTA1YmY2OTc3OTc4YTRmMiIsInVzZXJfaWQiOiIzIn0.aBSE7wLcrTw_7j6Mbrg8LGMMZzgzh-6xCbJTmKJEBdQ"
}{
"access": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNzYwMzgwMDEyLCJpYXQiOjE3NjAzNzkxMTIsImp0aSI6IjEyYjdlZjNmZWUwMDQ1ZmY4MTc5OGI1MjNiYTU3ZDQ2IiwidXNlcl9pZCI6IjMifQ.F0jGR3e5cj37q2Tk9blEl4pfyJADPWq7xoxEr0zJXwo",
"refresh": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbl90eXBlIjoicmVmcmVzaCIsImV4cCI6MTc2MDQ2NTUxMiwiaWF0IjoxNzYwMzc5MTEyLCJqdGkiOiIxMjFlMjZhMzk2OTY0ZjU0OTQ2ZWZkYmNjOTM2NTM5OCIsInVzZXJfaWQiOiIzIn0.VHosO2VG51BxTJ1XJuOrSLeRyfcqaEVb-8xmXHppoEg"
}Invalid token
{
"detail": "Token is invalid",
"code": "token_not_valid"
}Blacklisted token
{
"detail": "Token is blacklisted",
"code": "token_not_valid"
}Missing required field
{
"refresh": [
"This field is required."
]
}Invalidate current refresh token by blacklisting it
{}Blacklisted token
{
"detail": "Token is blacklisted",
"code": "token_not_valid"
}Missing required field
{
"refresh": [
"This field is required."
]
}