Cody Auth Service - Guía de OAuth2

Introducción

Esta guía describe el flujo de autenticación OAuth2 implementado en el servicio de autenticación de Cody. El servicio sigue el estándar OAuth2 para la autenticación y autorización de aplicaciones.

Flujo de OAuth2

1. Registro del Cliente

El primer paso es registrar tu aplicación como cliente OAuth2.

Endpoint: POST /auth/oauth/v2/client

Rate Limit: 2 requests/hour

Body de la petición:

{
    "tenant_id": "string",
    "user_id": "string",
    "redirect_uri": "string"
}

Respuesta exitosa (201 Created):

{
    "client_id": "uuid",
    "client_secret": "uuid"
}

2. Autorización

Obtén un código de autorización para el cliente registrado.

Endpoint: GET /auth/oauth/v2/auth

Rate Limit: 5 requests/hour

Query Parameters:

client_id: UUID
scope: Scope

Respuesta exitosa (200 OK):

{
    "authorization_code": "string"
}

3. Obtención del Token

Intercambia el código de autorización por tokens de acceso y refresh.

Endpoint: POST /auth/oauth/v2/token

Rate Limit: 5 requests/hour

Body de la petición:

{
    "client_id": "uuid",
    "client_secret": "uuid",
    "code": "string"
}

Respuesta exitosa (200 OK):

{
    "access_token": "string",
    "refresh_token": "string",
    "token_type": "Bearer",
    "expires_in": 3600
}

4. Refrescar Token

Obtén un nuevo token de acceso usando el refresh token.

Endpoint: POST /auth/oauth/v2/refresh

Rate Limit: 5 requests/minute

Body de la petición:

{
    "refresh_token": "string"
}

Respuesta exitosa (200 OK):

{
    "access_token": "string",
    "token_type": "Bearer",
    "expires_in": 3600
}

Endpoints Adicionales

Listar Clientes

Endpoint: GET /auth/oauth/v2/client

Query Parameters:

tenant_id: string

Respuesta exitosa (200 OK):

[
    {
        "client_id": "uuid",
        "client_secret": "uuid",
        "tenant_id": "string",
        "user_id": "string",
        "redirect_uri": "string"
    }
]

Health Check

Endpoint: GET /auth/health

Respuesta exitosa (200 OK):

{
    "status": "ok"
}

Manejo de Errores

El servicio utiliza códigos de estado HTTP estándar para indicar el resultado de las peticiones:

Ejemplo de respuesta de error:
{
    "detail": "Invalid client_id or client_secret or authorization_code",
    "status_code": 401
}

Límites de Tasa (Rate Limits)

El servicio implementa los siguientes límites de tasa para proteger contra abusos:

Seguridad

Documentación Interactiva

Para una documentación más detallada y la capacidad de probar los endpoints directamente, puedes acceder a: