> ## Documentation Index
> Fetch the complete documentation index at: https://docs.metrito.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Login

> Autentica o usuário com e-mail e senha e retorna um token JWT para uso nas demais rotas autenticadas.

O token retornado deve ser enviado no header `Authorization: Bearer {token}` em todas as requisições autenticadas.


## Uso do Token

O token JWT retornado tem validade de **7 dias**. Após expirar, faça login novamente.

Envie o token em todas as requisições autenticadas:

```bash
curl -X GET https://api.metrito.com/v3/projects \
  -H "Authorization: Bearer {token}"
```

<Warning>Este endpoint é destinado a integrações server-to-server. Para a maioria dos casos de uso, recomendamos usar **API Keys** (chaves de serviço) que não expiram e têm escopos granulares. Veja a [página de autenticação](/api-reference/authentication) para mais detalhes.</Warning>


## OpenAPI

````yaml /openapi/platform.yaml post /v3/auth/login
openapi: 3.1.0
info:
  title: API da Plataforma — Metrito
  version: '3.0'
  description: >
    API para autenticação e consulta de recursos da plataforma Metrito
    (projetos, conexões).

    Utilizada para obter tokens JWT e listar recursos disponíveis para o usuário
    autenticado.
servers:
  - url: https://api.metrito.com
    description: Produção
security: []
paths:
  /v3/auth/login:
    post:
      summary: Autenticar na plataforma
      description: >
        Autentica o usuário com e-mail e senha e retorna um token JWT para uso
        nas demais rotas autenticadas.


        O token retornado deve ser enviado no header `Authorization: Bearer
        {token}` em todas as requisições autenticadas.
      operationId: login
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
            examples:
              default:
                summary: Login padrão
                value:
                  email: usuario@empresa.com
                  password: suaSenhaSegura123
      responses:
        '200':
          description: Login realizado com sucesso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
              example:
                token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
                user:
                  id: 60f1b2c3d4e5f6a7b8c9d0e1
                  name: João Silva
                  email: usuario@empresa.com
                  role: owner
        '400':
          description: Credenciais inválidas ou campos ausentes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                invalidCredentials:
                  summary: Credenciais inválidas
                  value:
                    error: Invalid credentials
                    message: E-mail ou senha incorretos
      security: []
components:
  schemas:
    LoginRequest:
      type: object
      required:
        - email
        - password
      properties:
        email:
          type: string
          format: email
          description: E-mail da conta Metrito
          example: usuario@empresa.com
        password:
          type: string
          description: Senha da conta
          example: suaSenhaSegura123
    LoginResponse:
      type: object
      properties:
        token:
          type: string
          description: Token JWT para autenticação nas demais rotas
        user:
          type: object
          properties:
            id:
              type: string
              description: ID do usuário
            name:
              type: string
              description: Nome do usuário
            email:
              type: string
              description: E-mail do usuário
            role:
              type: string
              description: Papel do usuário no workspace
              enum:
                - owner
                - admin
                - member
                - viewer
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          properties:
            type:
              type: string
              description: Categoria do erro.
              enum:
                - authentication_error
                - authorization_error
                - validation_error
                - not_found_error
                - platform_error
                - api_error
            code:
              type: string
              description: Código de erro específico.
            message:
              type: string
              description: Descrição legível do erro.

````