Skip to content
1. Authentication and Sessions

1. Authentication and Sessions

This tutorial covers user authentication in the dAIEDGE Middleware, including account creation, login, session management, and logout.

Overview

The dAIEDGE Middleware API uses session-based authentication. After logging in, you receive a session_id token that must be included in the x-session-id header for authenticated requests.

Authentication Flow

1. Sign Up → Receive session_id
2. Use session_id in x-session-id header
3. Make authenticated API calls
4. Logout when done (optional)

Prerequisites

Python Setup

pip install daiedge-middleware-client
import asyncio
import daiedge_middleware_client

configuration = daiedge_middleware_client.Configuration(
    host="https://middleware-daiedge.bisite.usal.es/api/v1"
)

Step 1: User Registration

Create a new user account on the platform.

Endpoint

POST /api/v1/auth/signup

Request

curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/signup \
  -H "Content-Type: application/json" \
  -d '{
    "email": "alice@example.com",
    "username": "alice",
    "password": "SecurePass123!"
  }'

Request Body

FieldTypeRequiredDescription
emailstringYesValid email address (must be unique)
usernamestringYesUsername (must be unique, valid format)
passwordstringYesPassword (minimum 6 characters)

Validation Rules

  • Email: Must be valid email format and not already registered
  • Username: Must follow valid username format and not be taken
  • Password: Minimum 6 characters (8+ recommended)

Response (200 OK)

{
  "uid": "0000019a95ee982dc1729b661cfc3116",
  "session_id": "8KpNqZ3vW92mxR5bLtYfHj-nMcPw6DsVg4TuEaBhI7e_pXzQrFdKjYvNsLhWcOiUfGgTq9rJ2MsXkPv8uZaF9g"
}
FieldDescription
uidUnique user identifier
session_idSession token for authenticated requests

Error Responses

CodeErrorCause
400EMAIL_INVALIDEmail format is invalid
400EMAIL_IN_USEEmail already registered
400USERNAME_INVALIDUsername format is invalid
400USERNAME_IN_USEUsername already taken
400WEAK_PASSWORDPassword too short (< 6 chars)

Step 2: User Login

Log in with existing credentials to obtain a session token.

Endpoint

POST /api/v1/auth/login

Request

curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "username": "alice",
    "password": "SecurePass123!"
  }'

Request Body

FieldTypeRequiredDescription
usernamestringYesUsername or email address
passwordstringYesAccount password

Response (200 OK)

{
  "uid": "0000019a95ee982dc1729b661cfc3116",
  "session_id": "2LmRpT7wX51nxV8bQtZgKd-pNcYx3FsWh6UvFcDiJ9f_qYaRsGeLkZwOtMiXdPjVgHhUs1sK4NtYlQw9vAbG2h"
}

Error Responses

CodeErrorCause
400INVALID_CREDENTIALSUsername not found or password incorrect
403INVALID_CREDENTIALSAuthentication failed
403USER_BANNEDUser account has been banned

Step 3: Using Your Session

Include the session_id in the x-session-id header for all authenticated requests.

Example: Get Authentication Context

curl -X GET https://middleware-daiedge.bisite.usal.es/api/v1/auth/context \
  -H "x-session-id: {SESSION_ID}"

Response (200 OK)

{
  "status": "LOGGED_IN",
  "uid": "0000019a95ee982dc1729b661cfc3116",
  "username": "alice",
  "email": "alice@example.com",
  "role": "user"
}

Possible Status Values

StatusMeaning
LOGGED_INUser authenticated and active
UNAUTHORIZEDNo valid session
USER_NOT_FOUNDSession exists but user deleted

Step 4: Session Persistence

Sessions are stored with the following properties:

  • Duration: 24 hours from creation
  • Storage: Server-side session management
  • Cookie: Session can also be set as HTTP cookie

Checking Session Status

curl -X GET https://middleware-daiedge.bisite.usal.es/api/v1/auth/context \
  -H "x-session-id: {SESSION_ID}"

Step 5: Logout

End your session when finished (optional but recommended).

Endpoint

POST /api/v1/auth/logout

Request

curl -X POST https://middleware-daiedge.bisite.usal.es/api/v1/auth/logout \
  -H "x-session-id: {SESSION_ID}"

Response (200 OK)

{}

Success returns an empty response.

Error Responses

CodeErrorCause
404SESSION_NOT_FOUNDInvalid or already expired session

Full Python Example

import asyncio
import daiedge_middleware_client

configuration = daiedge_middleware_client.Configuration(
    host="https://middleware-daiedge.bisite.usal.es/api/v1"
)

async def main():
    async with daiedge_middleware_client.ApiClient(configuration) as api_client:
        auth_api = daiedge_middleware_client.AuthApi(api_client)

        # Step 1: Sign up
        signup = await auth_api.auth_signup_post(
            daiedge_middleware_client.SignupRequest(
                email="alice@example.com",
                username="alice",
                password="SecurePass123!",
            )
        )
        print(f"Signed up - uid: {signup.uid}")

        # Step 2: Login
        login = await auth_api.auth_login_post(
            daiedge_middleware_client.LoginRequest(
                username="alice",
                password="SecurePass123!",
            )
        )
        configuration.api_key["AuthToken"] = login.session_id
        print(f"Logged in - session_id: {login.session_id[:20]}...")

        # Step 3: Check session
        context = await auth_api.auth_context_get()
        print(f"Status: {context.status}, role: {context.role}")

        # Step 4: Logout
        await auth_api.auth_logout_post()
        print("Logged out")

asyncio.run(main())

Next Steps

Now that you have authentication working, proceed to:

Related Topics