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

# Solicitar un token de acceso

> Utiliza este endpoint para obtener un token de acceso para un usuario o un cliente.

Solo puedes usar **un método de autenticación por solicitud**; elige el que se ajuste a tu caso de uso:

- **Para usuarios**: Autentícate con `username`, `password` y `grantType = password`.
- **Para comunicaciones máquina a máquina (M2M)**: Usa `clientId`, `clientSecret` y establece `grantType = client_credentials`.



## OpenAPI

````yaml es/openapi/v3-current/AM-auth.yaml post /v1/login/oauth/access_token
openapi: 3.1.0
info:
  title: Plugin de autenticación
  description: ''
  version: 2.6.7
servers:
  - url: https://auth.sandbox.lerian.net
security: []
tags:
  - name: API de autenticación
  - name: API de MFA
  - name: API de información del usuario
  - name: API de autorización
paths:
  /v1/login/oauth/access_token:
    post:
      tags:
        - API de autenticación
      summary: Solicitar un token de acceso
      description: >-
        Utiliza este endpoint para obtener un token de acceso para un usuario o
        un cliente.


        Solo puedes usar **un método de autenticación por solicitud**; elige el
        que se ajuste a tu caso de uso:


        - **Para usuarios**: Autentícate con `username`, `password` y `grantType
        = password`.

        - **Para comunicaciones máquina a máquina (M2M)**: Usa `clientId`,
        `clientSecret` y establece `grantType = client_credentials`.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RequestAccessTokenInput'
            examples:
              ClientCredentialsGrant:
                summary: Concesión de credenciales del cliente
                description: >-
                  Autenticación máquina a máquina (M2M) mediante credenciales de
                  cliente
                value:
                  grantType: client_credentials
                  clientId: ed1c72d366b07b84bd21
                  clientSecret: 81f42de0fbe038f1bfefac55328839c92e1878da
              PasswordGrant:
                summary: Concesión de contraseña
                description: >-
                  Autenticación de usuario mediante nombre de usuario y
                  contraseña
                value:
                  grantType: password
                  username: admin
                  password: Lerian@123
      responses:
        '200':
          description: >
            Devuelve las credenciales de acceso cuando la autenticación se
            realiza correctamente.


            Si el usuario tiene MFA habilitado, la respuesta contendrá un
            `MFAChallengeResponse` en su lugar, con un `mfaToken` temporal para
            completar el flujo de verificación a través de los endpoints de MFA.
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/OAuth2Token'
                  - $ref: '#/components/schemas/MFAChallengeResponse'
              examples:
                SuccessfulLogin:
                  summary: Inicio de sesión correcto (sin MFA)
                  value:
                    accessToken: >-
                      eyJhbGciOiJSUzI1NiIsImtpZCI6ImNlcnQtYnVpbHQtaW4iLCJ0eXAiOiJKV1QifQ...
                    idToken: >-
                      eyJhbGciOiJSUzI1NiIsImtpZCI6ImNlcnQtYnVpbHQtaW4iLCJ0eXAiOiJKV1QifQ...
                    tokenType: Bearer
                    expiresIn: 3600
                    refreshToken: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
                    scope: openid profile email
                MFARequired:
                  summary: MFA requerido
                  description: >-
                    Se devuelve cuando el usuario tiene MFA habilitado. Usa el
                    mfaToken con los endpoints de verificación o desafío de MFA.
                  value:
                    mfaRequired: true
                    mfaToken: eyJhbGciOiJIUzI1NiJ9...
                    availableMethods:
                      - app
                      - email
                    preferredMethod: app
          headers: {}
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Error0001:
                  $ref: '#/components/examples/Error0001'
                Error0003:
                  $ref: '#/components/examples/Error0003'
                Error0009:
                  $ref: '#/components/examples/Error0009'
                Error0013:
                  $ref: '#/components/examples/Error0013'
                Error0014:
                  $ref: '#/components/examples/Error0014'
                Error1001:
                  $ref: '#/components/examples/Error1001'
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Error1002:
                  $ref: '#/components/examples/Error1002'
                Error1004:
                  $ref: '#/components/examples/Error1004'
          headers: {}
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessage'
              examples:
                Error0005:
                  $ref: '#/components/examples/Error0005'
          headers: {}
      security: []
components:
  schemas:
    RequestAccessTokenInput:
      description: Información utilizada para solicitar un token de acceso.
      oneOf:
        - $ref: '#/components/schemas/PasswordGrantInput'
        - $ref: '#/components/schemas/ClientCredentialsGrantInput'
      discriminator:
        propertyName: grantType
        mapping:
          password:
            $ref: '#/components/schemas/PasswordGrantInput'
          client_credentials:
            $ref: '#/components/schemas/ClientCredentialsGrantInput'
    OAuth2Token:
      description: >-
        Información utilizada para gestionar los datos de autenticación OAuth2.
        Almacena de forma segura las credenciales de acceso, garantizando una
        autorización fluida y el control de los recursos protegidos.
      type: object
      required:
        - accessToken
        - tokenType
        - expiresIn
        - refreshToken
      properties:
        accessToken:
          type: string
          description: Token temporal que otorga al usuario acceso seguro a las API.
        expiresIn:
          type: integer
          description: Tiempo (en segundos) hasta que el token expira.
        idToken:
          type: string
          description: >-
            Detalles de identidad del usuario autenticado según el estándar
            OpenID Connect. Puede usarse para verificar la autenticación del
            usuario.
        refreshToken:
          type: string
          description: >-
            Token de larga duración que permite obtener un nuevo `access_token`
            sin necesidad de iniciar sesión nuevamente.
        scope:
          type: string
          description: Nivel de acceso otorgado a los tokens emitidos.
        tokenType:
          type: string
          description: Tipo de token emitido.
    MFAChallengeResponse:
      description: >-
        Se devuelve cuando se requiere verificación MFA tras validar
        correctamente las credenciales. Contiene el token temporal de MFA y los
        métodos de verificación disponibles.
      type: object
      required:
        - mfaRequired
        - mfaToken
        - availableMethods
        - preferredMethod
      properties:
        mfaRequired:
          type: boolean
          description: >-
            Indica que se requiere verificación MFA para completar la
            autenticación.
        mfaToken:
          type: string
          description: >-
            Token temporal utilizado para completar el flujo de MFA. Pásalo a
            los endpoints de verificación o desafío de MFA.
        availableMethods:
          type: array
          items:
            type: string
            enum:
              - app
              - email
              - sms
          description: Lista de métodos de MFA configurados para el usuario.
        preferredMethod:
          type: string
          enum:
            - app
            - email
            - sms
          description: Método de MFA preferido del usuario.
    ErrorMessage:
      description: Mensaje de error devuelto en la respuesta.
      type: object
      properties:
        code:
          type: string
          description: Identificador único y estable del error.
        title:
          type: string
          description: Resumen breve del problema.
        message:
          type: string
          description: Orientación detallada para resolver el error.
    PasswordGrantInput:
      description: >-
        Autenticación mediante nombre de usuario y contraseña para el inicio de
        sesión del usuario.
      type: object
      required:
        - grantType
        - username
        - password
      properties:
        grantType:
          type: string
          enum:
            - password
          description: >-
            Tipo de concesión para la autenticación de nombre de usuario y
            contraseña.
        username:
          type: string
          description: Nombre de usuario para la autenticación.
        password:
          type: string
          description: Contraseña para la autenticación.
          format: password
    ClientCredentialsGrantInput:
      description: >-
        Autenticación de credenciales de cliente para acceso máquina a máquina
        (M2M).
      type: object
      required:
        - grantType
        - clientId
        - clientSecret
      properties:
        grantType:
          type: string
          enum:
            - client_credentials
          description: Tipo de concesión para la autenticación de credenciales de cliente.
        clientId:
          type: string
          description: El identificador único del cliente proporcionado por Identity.
        clientSecret:
          type: string
          description: >-
            La clave secreta asociada al ID de cliente utilizada para la
            autenticación segura.
          format: password
  examples:
    Error0001:
      summary: Missing Fields in Request
      value:
        code: AUT-0001
        title: Missing Fields in Request
        message: >-
          Your request is missing one or more required fields. Please refer to
          the documentation to ensure all necessary fields are included in your
          request.
    Error0003:
      summary: Unexpected Fields in the Request
      value:
        code: AUT-0003
        title: Unexpected Fields in the Request
        message: >-
          The request body contains more fields than expected. Please send only
          the allowed fields as per the documentation. The unexpected fields are
          listed in the fields object.
    Error0009:
      summary: Bad Request
      value:
        code: AUT-0009
        title: Bad Request
        message: >-
          The server could not understand the request due to malformed syntax.
          Please check the listed fields and try again.
    Error0013:
      summary: Invalid Grant Type
      value:
        code: AUT-0013
        title: Invalid Grant Type
        message: >-
          The provided 'grantType' is not valid. Accepted grant types are
          'password', 'client_credentials', 'refresh_token', or others. Please
          provide a valid type.
    Error0014:
      summary: Grant Type Missing Fields
      value:
        code: AUT-0014
        title: Grant Type Missing Fields
        message: >-
          The provided 'grant_type' is missing required fields. Please refer to
          the documentation for guidance.
    Error1001:
      summary: Unsupported Grant Type
      value:
        code: AUT-1001
        title: Unsupported Grant Type
        message: >-
          The provided 'grantType' is not supported by this application. Please
          refer to the application's supported grant types.
    Error1002:
      summary: Invalid Username or Password
      value:
        code: AUT-1002
        title: Invalid Username or Password
        message: >-
          The provided 'username' or 'password' is incorrect. Please verify the
          credentials and try again.
    Error1004:
      summary: Invalid Client
      value:
        code: AUT-1004
        title: Invalid Client
        message: >-
          The provided 'clientId' or 'clientSecret' is incorrect. Please verify
          the credentials and try again.
    Error0005:
      summary: Internal Server Error
      value:
        code: AUT-0005
        title: Internal Server Error
        message: >-
          The server encountered an unexpected error. Please try again later or
          contact support.

````