openapi: 3.1.0
info:
  title: Max Open API
  description: >-
    Referencia de las APIs públicas de Max Capital: autenticación, tenencias, cuenta corriente e instrumentos. Las Base
    URLs por ambiente y las reglas transversales (versionado, fechas, errores, límites de uso) están en Convenciones.
  contact:
    name: Contacto
    email: openapi@max.capital
  version: 1.0.3
servers:
  - url: https://openapi-dev.max.capital/gateway-openapi/api
    description: Desarrollo (sandbox)
tags:
  - name: Autenticación
    description: Métodos de autenticación
  - name: Tenencias
    description: Operaciones sobre tenencias
  - name: Cuenta corriente
    description: Información relacionada a la cuenta corriente
  - name: Instrumentos
    description: Catálogos e información de instrumentos
  - name: eCheqs
    description: Información de los eCheqs recibidos por la comitente
  - name: Fondos comunes de inversión
    description: Consulta de información de fondos comunes de inversión.
paths:
  /v1/mutual-funds/{cafciCode}:
    get:
      tags:
        - Fondos comunes de inversión
      summary: Consultar fondo por código CAFCI
      description: Obtiene la información de un fondo específico identificado por su código CAFCI.
      operationId: getFundByCafciCode
      parameters:
        - name: cafciCode
          in: path
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: Fondo obtenido correctamente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MutualFundDTO'
              examples:
                Fondo:
                  description: Fondo
                  value:
                    id: 587
                    name: MAX MONEY MARKET Clase B
                    description: Max Money Market
                    fundClass: Clase B
                    cajaValoresCode: '25487'
                    cafciCode: 3853
                    currencyIsoCode: ARS
                    assetManagementCompanyCode: 395
                    redemptionSettlementTerm: 0
                    price: 5600
                    numberOfDecimalPlaces: 5
                    lastPriceDate: '2026-07-13'
                    variation: 0
                    minimumAmount: 1000
                    configurationTimes:
                      - openingTime: 12:00Z
                        closingTime: 23:30Z
                        requestType: SUBSCRIPTION
                      - openingTime: 12:00Z
                        closingTime: 23:30Z
                        requestType: REDEMPTION
                    totalNetWorth: 403281549337.03
                    marketVariation:
                      daily: 0.2519
                      weekly: 0.3509
                      monthly: 1.5734
                      biyearly: 11.584
                      yearly: 36.9116
                      ytd: 12.8387
        '404':
          description: Fondo no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/instruments/kinds:
    get:
      tags:
        - Instrumentos
      summary: Consultar los tipos de instrumento
      description: >-
        Obtiene el catálogo de tipos de instrumento (instrumentKind) con su código y descripción. Las especies llevan
        prefijo E (ej. E1 Acciones Locales, E31 CEDEARS) y los fondos prefijo F (ej. F1 Fondos Locales). Si se indica el
        parámetro code, devuelve únicamente ese tipo; si no, devuelve el catálogo completo. Permite resolver el
        instrumentKindCode devuelto en /v1/holdings/instruments.
      operationId: getInstrumentKinds
      parameters:
        - name: code
          in: query
          required: false
          schema:
            type: string
      responses:
        '200':
          description: Tipos de instrumento obtenidos exitosamente
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/InstrumentKindResponseDTO'
              examples:
                Tipos de instrumento:
                  description: Tipos de instrumento
                  value:
                    - code: E1
                      description: Acciones Locales
                    - code: E3
                      description: Titulos Provinciales
                    - code: E31
                      description: CEDEARS
                    - code: F1
                      description: Fondos Locales
  /v1/holdings/mutual-funds:
    get:
      tags:
        - Tenencias
      summary: Consultar la tenencia de un FCI de una cuenta
      description: >-
        Obtiene la tenencia en cuotapartes de una cuenta comitente sobre un Fondo Común de Inversión a una fecha,
        discriminando la parte disponible de la comprometida (por ejemplo, cuotapartes afectadas a un rescate en curso).
      operationId: getMutualFundHoldings
      parameters:
        - name: accountHolderNumber
          in: query
          required: true
          schema:
            type: integer
            format: int64
            example: 12345
          example: 12345
        - name: date
          in: query
          description: Fecha de la tenencia (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha de la tenencia (YYYY-MM-DD)
            example: '2026-02-19'
          example: '2026-02-19'
        - name: mutualFundCafciCode
          in: query
          description: Código CAFCI del fondo
          required: true
          schema:
            type: integer
            format: int64
            description: Código CAFCI del fondo
            example: 3853
          example: 3853
      responses:
        '200':
          description: Tenencia obtenida exitosamente (puede ser una lista vacía)
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MutualFundHoldingsResponseDTO'
              examples:
                Tenencia de FCI:
                  description: Tenencia de FCI
                  value:
                    - sharePrice: 2.339641
                      availableShareAmounts: 22656.9232
                      availableValuation: 53009.07
                      unavailableShareAmounts: 0
                      unavailableValuation: 0
                      valuation: 53009.07
        '403':
          description: El comitente no pertenece al usuario
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Comitente o fondo no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/holdings/monetary:
    get:
      tags:
        - Tenencias
      summary: Consultar los saldos monetarios de una cuenta
      description: >-
        Obtiene los saldos monetarios de una cuenta comitente para una fecha, agrupados por plazo: t0 (inmediato), t1
        (24 horas), future (+24 horas) y committed (comprometido). Cada plazo trae un monto por moneda, únicamente en
        Pesos (ARS), Dólar MEP (USD) y Dólar Cable (EXT).
      operationId: getMonetaryHoldings
      parameters:
        - name: accountHolderNumber
          in: query
          required: true
          schema:
            type: integer
            format: int64
        - name: date
          in: query
          required: true
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Saldos monetarios obtenidos exitosamente
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/MonetaryHoldingResponseDTO'
              examples:
                Saldos monetarios:
                  description: Saldos monetarios
                  value:
                    - monetaryType: t0
                      monetaryHoldings:
                        - amount: 2483167
                          unavailable: 0
                          currencyIsoCode: ARS
                        - amount: 149966
                          unavailable: 0
                          currencyIsoCode: EXT
                        - amount: 319.07
                          unavailable: 0
                          currencyIsoCode: USD
                    - monetaryType: t1
                      monetaryHoldings:
                        - amount: 0
                          unavailable: 0
                          currencyIsoCode: ARS
                        - amount: 0
                          unavailable: 0
                          currencyIsoCode: EXT
                        - amount: 10
                          unavailable: 0
                          currencyIsoCode: USD
                    - monetaryType: future
                      monetaryHoldings:
                        - amount: 0
                          unavailable: 0
                          currencyIsoCode: ARS
                        - amount: 0
                          unavailable: 0
                          currencyIsoCode: EXT
                        - amount: 0
                          unavailable: 0
                          currencyIsoCode: USD
                    - monetaryType: committed
                      monetaryHoldings:
                        - amount: 570717.8
                          unavailable: 0
                          currencyIsoCode: ARS
                        - amount: 2066
                          unavailable: 0
                          currencyIsoCode: EXT
                        - amount: 311
                          unavailable: 0
                          currencyIsoCode: USD
        '403':
          description: El comitente no pertenece al usuario
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Comitente no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/holdings/instruments:
    get:
      tags:
        - Tenencias
      summary: Consultar las tenencias de una cuenta
      description: Obtiene la lista de tenencias (por instrumento) de una cuenta comitente para una fecha específica
      operationId: getHoldings
      parameters:
        - name: accountHolderNumber
          in: query
          required: true
          schema:
            type: integer
            format: int64
        - name: date
          in: query
          required: true
          schema:
            type: string
            format: date
      responses:
        '200':
          description: Lista de tenencias obtenida exitosamente
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/HoldingsResponseDTO'
              examples:
                Tenencias:
                  description: Tenencias
                  value:
                    - ticker: GGAL
                      denomination: GRUPO FINANCIERO GALICIA B1V.ESC.
                      alias: GGAL - GRUPO FINANCIERO GALICIA B1V.ESC.
                      currencyIsoCode: ARS
                      total: 50
                      priceDate: '2026-07-22'
                      price: 8150
                      totalValuation: 407500
                      dailyPriceVariation: 2.32
                      instrumentKindCode: E1
                    - ticker: YPFD
                      denomination: YPF S.A. D ESCRITURALES
                      alias: YPFD - YPF S.A. D ESCRITURALES
                      currencyIsoCode: ARS
                      total: 10
                      priceDate: '2026-07-22'
                      price: 81700
                      totalValuation: 817000
                      dailyPriceVariation: 1.33
                      instrumentKindCode: E1
                    - ticker: AL30
                      denomination: BONO REP. ARGENTINA USD STEP UP 2030
                      alias: AL30 - BONO REP. ARGENTINA USD STEP UP 2030
                      currencyIsoCode: USD
                      total: 100
                      priceDate: '2026-07-22'
                      price: 861.4
                      totalValuation: 86140
                      dailyPriceVariation: 0.3
                      instrumentKindCode: E2
                    - ticker: AAPL
                      denomination: CEDEAR APPLE INC.
                      alias: AAPL - CEDEAR APPLE INC.
                      currencyIsoCode: ARS
                      total: 30
                      priceDate: '2026-07-22'
                      price: 25600
                      totalValuation: 768000
                      dailyPriceVariation: -0.46
                      instrumentKindCode: E31
                    - ticker: TSLA
                      denomination: CEDEAR TESLA, INC.
                      alias: TSLA - CEDEAR TESLA, INC.
                      currencyIsoCode: ARS
                      total: 25
                      priceDate: '2026-07-22'
                      price: 39660
                      totalValuation: 991500
                      dailyPriceVariation: 0.05
                      instrumentKindCode: E31
                    - ticker: MELI
                      denomination: CEDEAR MERCADOLIBRE INC.
                      alias: MELI - CEDEAR MERCADOLIBRE INC.
                      currencyIsoCode: ARS
                      total: 20
                      priceDate: '2026-07-22'
                      price: 23680
                      totalValuation: 473600
                      dailyPriceVariation: -0.54
                      instrumentKindCode: E31
                    - ticker: '25485'
                      denomination: MAX MONEY MARKET Clase A
                      alias: 25485 - MAX MONEY MARKET Clase A
                      currencyIsoCode: ARS
                      total: 1000
                      priceDate: '2026-07-21'
                      price: 5600
                      totalValuation: 5600000
                      dailyPriceVariation: 0
                      instrumentKindCode: F1
                    - ticker: '25516'
                      denomination: MAX RENTA FIJA DOLARES FCI Clase A MEP
                      alias: 25516 - MAX RENTA FIJA DOLARES FCI Clase A MEP
                      currencyIsoCode: USD
                      total: 500
                      priceDate: '2026-07-21'
                      price: 1
                      totalValuation: 500
                      dailyPriceVariation: 0.12
                      instrumentKindCode: F1
        '403':
          description: El comitente no pertenece al usuario
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Comitente no encontrado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /v1/echeqs:
    get:
      tags:
        - eCheqs
      summary: Consultar eCheqs recibidos
      description: >-
        Devuelve los eCheqs recibidos por la comitente en un rango de fechas, aplicado contra el tipo de fecha que
        indica `dateType` y filtrado opcionalmente por estado.


        Cuando el banco no informa el detalle del eCheq, los campos que dependen de él llegan vacíos: `issuer`,
        `previousEndorser`, `cmc7` y `groupId` como string vacío, e `issueDate` en `null`. `previousEndorser` además
        viene vacío —y es el caso más frecuente— cuando el eCheq no fue endosado ni cedido.
      operationId: getEcheqs
      parameters:
        - name: accountHolderNumber
          in: query
          description: Número de comitente
          required: true
          schema:
            type: integer
            format: int64
            description: Número de comitente
            example: 12345
          example: 12345
        - name: dateType
          in: query
          description: >-
            Tipo de fecha por el que se filtra. OPERATION y PAYMENT están informadas en todos los eCheqs; las otras
            cuatro se completan más adelante en el ciclo de vida, así que al filtrar por ellas los eCheqs que todavía no
            las tienen quedan afuera del resultado.
          required: true
          schema:
            type: string
            description: >-
              Tipo de fecha por el que se filtra. OPERATION y PAYMENT están informadas en todos los eCheqs; las otras
              cuatro se completan más adelante en el ciclo de vida, así que al filtrar por ellas los eCheqs que todavía
              no las tienen quedan afuera del resultado.
            enum:
              - OPERATION
              - PAYMENT
              - ISSUE
              - ESTIMATED_ACCREDITATION
              - ACCREDITATION
              - RECEIPT
            example: PAYMENT
          example: PAYMENT
        - name: dateFrom
          in: query
          description: Fecha desde, inclusive (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha desde, inclusive (YYYY-MM-DD)
            example: '2026-06-01'
          example: '2026-06-01'
        - name: dateTo
          in: query
          description: Fecha hasta, inclusive (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha hasta, inclusive (YYYY-MM-DD)
            example: '2026-06-30'
          example: '2026-06-30'
        - name: status
          in: query
          description: >-
            Lista de estados externos. Se puede repetir el parámetro para filtrar por varios
            (status=ACCEPTED&status=CREDITED). Omitirlo devuelve todos los estados.
          required: false
          schema:
            type: array
            description: >-
              Lista de estados externos. Se puede repetir el parámetro para filtrar por varios
              (status=ACCEPTED&status=CREDITED). Omitirlo devuelve todos los estados.
            items:
              type: string
              description: >-
                Lista de estados externos. Se puede repetir el parámetro para filtrar por varios
                (status=ACCEPTED&status=CREDITED). Omitirlo devuelve todos los estados.
              enum:
                - LOADED
                - ACCEPTED
                - DEPOSITED
                - CREDITED
                - REJECTED
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ReceivedEcheqResponse'
              examples:
                eCheqs recibidos:
                  description: eCheqs recibidos
                  value:
                    - externalId: K7M42XQP9013BNR
                      number: '18400031'
                      accountHolderNumber: 12345
                      checkExternalStatus: ACCEPTED
                      status: AWAITING_ACCEPTANCE
                      currencyIsoCode: ARS
                      amount: 150000
                      channel: COMAFI
                      issueDate: '2026-06-10'
                      operationDate: '2026-06-12'
                      paymentDate: '2026-06-10'
                      estimatedAccreditationDate: '2026-06-16'
                      accreditationDate: null
                      payer:
                        businessName: EMPRESA PAGADORA SOCIEDAD ANON
                        cuit: '30712345678'
                        bank: BANCO COMAFI SOCIEDAD ANONIMA
                      issuer:
                        name: EMPRESA PAGADORA SOCIEDAD ANON
                        cuit: '30712345678'
                        bankName: BANCO COMAFI SOCIEDAD ANONIMA
                      previousEndorser:
                        name: ''
                        cuit: ''
                      document:
                        type: CUIT
                        number: '30712345678'
                      receipt:
                        id: 1234
                        code: 987654
                        date: '2026-06-12'
                      cmc7: '29900012345678901234567890123'
                      groupId: '0'
                      observations: El eCheq no está en estado depositado en Comafi
                      traceId: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
                      createdAt: '2026-06-12T10:30:00-03:00'
                      updatedAt: '2026-06-12T10:32:15-03:00'
                      lastModifiedBy: null
                    - externalId: P3N88WRT5027FDL
                      number: '18400032'
                      accountHolderNumber: 12345
                      checkExternalStatus: LOADED
                      status: LOADED
                      currencyIsoCode: USD
                      amount: 2500.5
                      channel: COMAFI
                      issueDate: null
                      operationDate: '2026-06-12'
                      paymentDate: '2026-06-20'
                      estimatedAccreditationDate: null
                      accreditationDate: null
                      payer:
                        businessName: OTRA EMPRESA SOCIEDAD ANONIMA
                        cuit: '30712345680'
                        bank: BANCO DE LA NACION ARGENTINA
                      issuer:
                        name: ''
                        cuit: ''
                        bankName: ''
                      previousEndorser:
                        name: ''
                        cuit: ''
                      document:
                        type: CUIT
                        number: '30712345681'
                      receipt:
                        id: null
                        code: null
                        date: null
                      cmc7: ''
                      groupId: ''
                      observations: null
                      traceId: 9f8e7d6c-5b4a-4392-8170-6f5e4d3c2b1a
                      createdAt: '2026-06-12T06:14:02-03:00'
                      updatedAt: null
                      lastModifiedBy: null
  /v1/current-account/monetaries:
    get:
      tags:
        - Cuenta corriente
      summary: Consultar cuenta corriente monetaria
      description: Devuelve la información de la cuenta corriente desde el punto de vista monetario
      operationId: getMonetary
      parameters:
        - name: accountHolderNumber
          in: query
          description: Número de comitente
          required: true
          schema:
            type: integer
            format: int64
            description: Número de comitente
            example: 12345
          example: 12345
        - name: number
          in: query
          description: 'Deprecado: usar accountHolderNumber. Alias histórico; si se envían ambos, se usa accountHolderNumber.'
          required: false
          deprecated: true
          schema:
            type: integer
            format: int64
            deprecated: true
            description: 'Deprecado: usar accountHolderNumber. Alias histórico; si se envían ambos, se usa accountHolderNumber.'
            example: 12345
          example: 12345
        - name: dateFrom
          in: query
          description: Fecha de inicio del rango (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha de inicio del rango (YYYY-MM-DD)
            example: '2025-01-01'
          example: '2025-01-01'
        - name: dateTo
          in: query
          description: Fecha de fin del rango (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha de fin del rango (YYYY-MM-DD)
            example: '2025-12-31'
          example: '2025-12-31'
        - name: dateType
          in: query
          description: 'Tipo de fecha (opciones: OPERATION (concertación), SETTLEMENT (Liquidación))'
          required: true
          schema:
            type: string
            description: 'Tipo de fecha (opciones: OPERATION (concertación), SETTLEMENT (Liquidación))'
            enum:
              - OPERATION
              - SETTLEMENT
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CurrentAccountMonetaryResponse'
              examples:
                Cuenta corriente monetaria:
                  description: Cuenta corriente monetaria
                  value:
                    - currentAccountCode: -1
                      isPreviousBalance: true
                      operationDate: null
                      settlementDate: null
                      detail: Saldo Anterior
                      instrumentDescription: Dólar MEP - USD
                      currencyCode: 21
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 850.75
                      exchangeRate: null
                      fee: null
                      marketRights: null
                      interest: null
                    - currentAccountCode: -2
                      isPreviousBalance: false
                      operationDate: null
                      settlementDate: null
                      detail: Saldo al 02/12/2025
                      instrumentDescription: Dólar MEP - USD
                      currencyCode: 21
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 850.75
                      exchangeRate: null
                      fee: null
                      marketRights: null
                      interest: null
  /v1/current-account/instruments:
    get:
      tags:
        - Cuenta corriente
      summary: Consultar cuenta corriente en instrumentos
      description: Devuelve la información de la cuenta corriente desde el punto de vista de los instrumentos
      operationId: getInstruments
      parameters:
        - name: accountHolderNumber
          in: query
          description: Número de comitente
          required: true
          schema:
            type: integer
            format: int64
            description: Número de comitente
            example: 12345
          example: 12345
        - name: number
          in: query
          description: 'Deprecado: usar accountHolderNumber. Alias histórico; si se envían ambos, se usa accountHolderNumber.'
          required: false
          deprecated: true
          schema:
            type: integer
            format: int64
            deprecated: true
            description: 'Deprecado: usar accountHolderNumber. Alias histórico; si se envían ambos, se usa accountHolderNumber.'
            example: 12345
          example: 12345
        - name: dateFrom
          in: query
          description: Fecha de inicio del rango (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha de inicio del rango (YYYY-MM-DD)
            example: '2025-01-01'
          example: '2025-01-01'
        - name: dateTo
          in: query
          description: Fecha de fin del rango (YYYY-MM-DD)
          required: true
          schema:
            type: string
            format: date
            description: Fecha de fin del rango (YYYY-MM-DD)
            example: '2025-12-31'
          example: '2025-12-31'
        - name: dateType
          in: query
          description: 'Tipo de fecha (opciones: OPERATION (concertación), SETTLEMENT (Liquidación))'
          required: true
          schema:
            type: string
            description: 'Tipo de fecha (opciones: OPERATION (concertación), SETTLEMENT (Liquidación))'
            enum:
              - OPERATION
              - SETTLEMENT
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CurrentAccountInstrumentsResponse'
              examples:
                Cuenta corriente en instrumentos:
                  description: Cuenta corriente en instrumentos
                  value:
                    - isPreviousBalance: true
                      currentAccountCode: -1
                      operationDate: null
                      settlementDate: null
                      expirationDate: null
                      detail: Saldo Anterior
                      isAvailable: true
                      instrumentDescription: MAX RENTA FIJA DOLARES FCI Clase A MEP - 25516
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 5000
                      currencyCode: 21
                      instrumentTypeCode: FD
                      fee: null
                      marketRights: null
                      instrument:
                        id: F774
                        cajaValoresCode: 25516
                        cafciCode: '3886'
                        denomination: MAX RENTA FIJA DOLARES FCI Clase A MEP
                        isinCode: null
                        ticker: '25516'
                      interest: null
                    - isPreviousBalance: true
                      currentAccountCode: -1
                      operationDate: null
                      settlementDate: null
                      expirationDate: null
                      detail: Saldo Anterior
                      isAvailable: true
                      instrumentDescription: MAX MONEY MARKET DOLARES Clase A - 27751
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 1800
                      currencyCode: 21
                      instrumentTypeCode: FD
                      fee: null
                      marketRights: null
                      instrument:
                        id: F832
                        cajaValoresCode: 27751
                        cafciCode: '5309'
                        denomination: MAX MONEY MARKET DOLARES Clase A
                        isinCode: null
                        ticker: '27751'
                      interest: null
                    - isPreviousBalance: true
                      currentAccountCode: -1
                      operationDate: null
                      settlementDate: null
                      expirationDate: null
                      detail: Saldo Anterior
                      isAvailable: true
                      instrumentDescription: MAX MONEY MARKET Clase A - 25485
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 500000
                      currencyCode: 1
                      instrumentTypeCode: FD
                      fee: null
                      marketRights: null
                      instrument:
                        id: F586
                        cajaValoresCode: 25485
                        cafciCode: '3852'
                        denomination: MAX MONEY MARKET Clase A
                        isinCode: null
                        ticker: '25485'
                      interest: null
                    - isPreviousBalance: true
                      currentAccountCode: -1
                      operationDate: null
                      settlementDate: null
                      expirationDate: null
                      detail: Saldo Anterior
                      isAvailable: true
                      instrumentDescription: GRUPO FINANCIERO GALICIA B1V.ESC. - GGAL /534
                      amount: null
                      price: null
                      net: null
                      gross: null
                      balance: 50
                      currencyCode: 1
                      instrumentTypeCode: ES
                      fee: null
                      marketRights: null
                      instrument:
                        id: E646
                        cajaValoresCode: 534
                        cafciCode: null
                        denomination: GRUPO FINANCIERO GALICIA B1V.ESC.
                        isinCode: ARP495251018
                        ticker: GGAL
                      interest: null
  /v1/login:
    post:
      tags:
        - Autenticación
      summary: Autenticar usuario de servicio
      description: Autentica un usuario de servicio mediante credenciales de cliente y devuelve un token de acceso.
      operationId: login
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginRequest'
        required: true
      responses:
        '200':
          description: Login exitoso
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoginResponse'
        '400':
          description: Bad Request
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Credenciales inválidas
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      servers:
        - url: https://openapi-dev.max.capital/auth/api
          description: Desarrollo (sandbox)
      security: []
components:
  schemas:
    ErrorResponse:
      type: object
      description: Respuesta de error estándar de la API
      properties:
        statusCode:
          type: string
          description: Código de estado HTTP
          example: '400'
        title:
          type: string
          description: Título del error
          example: Bad Request
        detail:
          type: string
          description: Descripción detallada del error
        errorCode:
          type: string
          description: Código de error de negocio
    FundConfigurationTimeDTO:
      type: object
      properties:
        openingTime:
          type: string
        closingTime:
          type: string
        requestType:
          type: string
          enum:
            - SUBSCRIPTION
            - REDEMPTION
    MarketDataVariationDTO:
      type: object
      properties:
        daily:
          type: number
        weekly:
          type: number
        monthly:
          type: number
        biyearly:
          type: number
        yearly:
          type: number
        ytd:
          type: number
    MutualFundDTO:
      type: object
      properties:
        id:
          type: integer
          format: int64
        name:
          type: string
          deprecated: true
          description: >-
            Deprecado: usar `description` y `fundClass`. Nombre completo del fondo; equivale a la concatenación de
            ambos.
          example: MAX MONEY MARKET Clase B
        description:
          type: string
        fundClass:
          type: string
        cajaValoresCode:
          type: string
        cafciCode:
          type: integer
          format: int64
        currencyIsoCode:
          type: string
        assetManagementCompanyCode:
          type: integer
          format: int32
        redemptionSettlementTerm:
          type: integer
          format: int32
        price:
          type: number
        numberOfDecimalPlaces:
          type: integer
          format: int32
        lastPriceDate:
          type: string
          format: date
        variation:
          type: number
        minimumAmount:
          type: number
        configurationTimes:
          type: array
          items:
            $ref: '#/components/schemas/FundConfigurationTimeDTO'
        totalNetWorth:
          type: number
        marketVariation:
          $ref: '#/components/schemas/MarketDataVariationDTO'
    InstrumentKindResponseDTO:
      type: object
      properties:
        code:
          type: string
          description: 'Código del tipo de instrumento: especies con prefijo E (ej. E1, E31), fondos con prefijo F (ej. F1)'
          example: E1
        description:
          type: string
          description: Descripción del tipo de instrumento
          example: Acciones Locales
    MutualFundHoldingsResponseDTO:
      type: object
      properties:
        sharePrice:
          type: number
          description: Precio de la cuotaparte
          example: 2.339641
        availableShareAmounts:
          type: number
          description: Cantidad de cuotapartes disponibles (no comprometidas)
          example: 22656.9232
        availableValuation:
          type: number
          description: Valuación de las cuotapartes disponibles
          example: 53009.07
        unavailableShareAmounts:
          type: number
          description: Cantidad de cuotapartes no disponibles (comprometidas, por ejemplo en rescates en curso)
          example: 0
        unavailableValuation:
          type: number
          description: Valuación de las cuotapartes no disponibles
          example: 0
        valuation:
          type: number
          description: Valuación total de la tenencia (disponible + no disponible)
          example: 53009.07
    MonetaryHoldingByCurrencyResponseDTO:
      type: object
      properties:
        amount:
          type: number
          description: >-
            Monto de este plazo (t0/t1/future/committed) en esta moneda, sin incluir el importe 'unavailable'. Es una
            posición bruta que puede incluir saldo comprometido o bloqueado, por lo que no representa el saldo
            disponible para operar.
          example: 255506.84
        unavailable:
          type: number
          description: >-
            Importe de este plazo que todavía no está disponible. Es el saldo estimado en proceso de liquidación por
            rescates de FCI. Es un valor separado de 'amount'. Solo t0/t1/future lo traen; en committed siempre es 0.
          example: 100
        currencyIsoCode:
          type: string
          description: >-
            Código ISO de la moneda (ARS = pesos, USD = dólar MEP, EXT = dólar cable). El endpoint devuelve únicamente
            estas tres monedas.
          example: ARS
    MonetaryHoldingResponseDTO:
      type: object
      properties:
        monetaryType:
          type: string
          description: 'Plazo del saldo: t0 (inmediato), t1 (24 horas), future (+24 horas), committed (comprometido)'
          enum:
            - t0
            - t1
            - future
            - committed
          example: t0
        monetaryHoldings:
          type: array
          items:
            $ref: '#/components/schemas/MonetaryHoldingByCurrencyResponseDTO'
    HoldingsResponseDTO:
      type: object
      properties:
        ticker:
          type: string
          description: Ticker del instrumento
          example: MEGQO
        denomination:
          type: string
          description: Denominación del instrumento
          example: Megainver Ahorro
        alias:
          type: string
          description: Alias del instrumento (ticker - denominación)
          example: MEGQO - Megainver Ahorro
        currencyIsoCode:
          type: string
          example: ARS
        total:
          type: number
          example: 424.12092
        priceDate:
          type: string
          format: date
          example: '2026-02-20'
        price:
          type: number
          example: 4.951418
        totalValuation:
          type: number
          example: 2100
        dailyPriceVariation:
          type: number
          example: 0
        instrumentKindCode:
          type: string
          description: >-
            Código de tipo de instrumento unificado: especies con prefijo E (ej. E1 Acciones Locales, E31 CEDEARS),
            fondos con prefijo F (ej. F1 Fondos Locales)
          example: E1
    EcheqDocument:
      type: object
      description: Documento asociado al eCheq
      properties:
        type:
          type: string
          description: Tipo de documento
          enum:
            - CUIT
            - CUIL
            - CDI
          example: CUIT
        number:
          type: string
          description: Número de documento
          example: '30712345678'
    EcheqIssuer:
      type: object
      description: Datos del emisor del eCheq. Sus campos llegan vacíos cuando el banco no informó el detalle del eCheq
      properties:
        name:
          type: string
          description: Razón social del emisor
          example: EMPRESA PAGADORA SOCIEDAD ANON
        cuit:
          type: string
          description: CUIT del emisor
          example: '30712345678'
        bankName:
          type: string
          description: Nombre del banco emisor
          example: BANCO COMAFI SOCIEDAD ANONIMA
    EcheqPayer:
      type: object
      description: Pagador del eCheq
      properties:
        businessName:
          type: string
          description: Denominación/Razón social del pagador
          example: EMPRESA PAGADORA SOCIEDAD ANON
        cuit:
          type: string
          description: CUIT del pagador
          example: '30712345678'
        bank:
          type: string
          description: Banco emisor del cheque
          example: BANCO COMAFI SOCIEDAD ANONIMA
    EcheqPreviousEndorser:
      type: object
      description: Datos del último endosante del eCheq. Sus campos llegan vacíos cuando el eCheq no fue endosado ni cedido
      properties:
        name:
          type: string
          description: Razón social del último endosante
          example: ENDOSANTE PREVIO SOCIEDAD RESP
        cuit:
          type: string
          description: CUIT del último endosante
          example: '30712345679'
    EcheqReceipt:
      type: object
      description: Recibo de cobro del eCheq. Sus campos llegan nulos mientras no se haya emitido
      properties:
        id:
          type: integer
          description: Identificador del recibo de cobro
          example: 1234
        code:
          type: integer
          description: Código del recibo de cobro
          example: 987654
        date:
          type: string
          format: date
          description: Fecha de emisión del recibo (YYYY-MM-DD)
          example: '2026-06-12'
          pattern: yyyy-MM-dd
    ReceivedEcheqResponse:
      type: object
      properties:
        externalId:
          type: string
          description: Identificador externo del cheque
          example: K7M42XQP9013BNR
        number:
          type: string
          description: Número del cheque
          example: '18400031'
        accountHolderNumber:
          type: integer
          format: int64
          description: Número de comitente al que pertenece el eCheq
          example: 12345
        checkExternalStatus:
          type: string
          description: Estado de negocio del cheque a lo largo de su ciclo de vida
          enum:
            - LOADED
            - ACCEPTED
            - DEPOSITED
            - CREDITED
            - REJECTED
          example: ACCEPTED
        status:
          type: string
          description: >-
            Estado actual del cheque dentro del procesamiento. Es independiente del estado de negocio: un cheque con
            checkExternalStatus en ACCEPTED puede tener este estado en ERROR
          example: AWAITING_ACCEPTANCE
        currencyIsoCode:
          type: string
          description: Moneda del cheque en código ISO 4217. Los valores en uso son ARS y USD
          example: ARS
        amount:
          type: number
          description: Monto del cheque
          example: 150000
        channel:
          type: string
          description: Canal del cheque
          example: COMAFI
        issueDate:
          type: string
          format: date
          description: Fecha emisión del cheque (YYYY-MM-DD). Nula cuando el banco no informó el detalle del eCheq
          example: '2026-06-10'
          pattern: yyyy-MM-dd
        operationDate:
          type: string
          format: date
          description: >-
            Fecha de operación (YYYY-MM-DD). Se asigna cuando el eCheq ingresa al sistema, así que puede ser posterior a
            la fecha de emisión
          example: '2026-06-12'
          pattern: yyyy-MM-dd
        paymentDate:
          type: string
          format: date
          description: Fecha de pago del cheque (YYYY-MM-DD)
          example: '2026-06-10'
          pattern: yyyy-MM-dd
        estimatedAccreditationDate:
          type: string
          format: date
          description: >-
            Fecha estimada de acreditación (YYYY-MM-DD). Se calcula durante la aceptación del eCheq, así que puede
            llegar nula incluso con checkExternalStatus en ACCEPTED si el procesamiento no alcanzó a calcularla
          example: '2026-06-16'
          pattern: yyyy-MM-dd
        accreditationDate:
          type: string
          format: date
          description: >-
            Fecha de acreditación (YYYY-MM-DD): el día en que los fondos ingresaron. Nula mientras el cheque no esté
            acreditado, en cuyo caso la referencia es estimatedAccreditationDate
          example: '2026-06-17'
          pattern: yyyy-MM-dd
        payer:
          $ref: '#/components/schemas/EcheqPayer'
          description: Pagador del eCheq
        issuer:
          $ref: '#/components/schemas/EcheqIssuer'
          description: Datos del emisor del eCheq
        previousEndorser:
          $ref: '#/components/schemas/EcheqPreviousEndorser'
          description: Datos del último endosante del eCheq
        document:
          $ref: '#/components/schemas/EcheqDocument'
          description: Documento asociado al eCheq
        receipt:
          $ref: '#/components/schemas/EcheqReceipt'
          description: Recibo de cobro
        cmc7:
          type: string
          description: CMC7 del eCheq. Vacío cuando el banco no informó el detalle del eCheq
          example: '29900012345678901234567890123'
        groupId:
          type: string
          description: Identificador de grupo del eCheq. Vacío cuando el banco no informó el detalle del eCheq
          example: '0'
        observations:
          type: string
          description: Observaciones o comentarios adicionales
          example: El eCheq no está en estado depositado en Comafi
        traceId:
          type: string
          description: Identificador único de rastreo
          example: 1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d
        createdAt:
          type: string
          format: date-time
          description: Fecha y hora de creación del registro, en hora de Argentina
          example: '2026-06-12T10:30:00-03:00'
        updatedAt:
          type: string
          format: date-time
          description: Fecha y hora de última actualización, en hora de Argentina
          example: '2026-06-12T10:32:15-03:00'
        lastModifiedBy:
          type: string
          description: Usuario que realizó la última modificación
          example: system
    CurrentAccountMonetaryResponse:
      type: object
      properties:
        currentAccountCode:
          type: integer
          format: int64
          description: Código de la cuenta corriente
          example: 123456789
        isPreviousBalance:
          type: boolean
          description: ¿Es saldo anterior?
          example: false
        operationDate:
          type: string
          format: date
          description: Fecha de operación (YYYY-MM-DD)
          example: '2025-04-01'
          pattern: yyyy-MM-dd
        settlementDate:
          type: string
          format: date
          description: Fecha de liquidación (YYYY-MM-DD)
          example: '2025-04-05'
          pattern: yyyy-MM-dd
        detail:
          type: string
          description: Detalle de la operación
          example: Compra de valores
        instrumentDescription:
          type: string
          description: Descripción del instrumento
          example: Bonos del Tesoro
        currencyCode:
          type: integer
          format: int64
          description: Código de la moneda (1 = Pesos, 4 = USD Cable, 21 = USD MEP)
          example: 1
        amount:
          type: number
          description: Monto de la operación
          example: 1000.5
        price:
          type: number
          description: Precio del instrumento
          example: 10.25
        net:
          type: number
          description: Importe neto
          example: 950
        gross:
          type: number
          description: Importe bruto
          example: 1050
        balance:
          type: number
          description: Saldo
          example: 5000
        exchangeRate:
          type: number
          description: Tipo de cambio del movimiento
          example: 1380
        fee:
          $ref: '#/components/schemas/FeeInfo'
          description: Información del arancel
        marketRights:
          $ref: '#/components/schemas/MarketRightsInfo'
          description: Información de derechos de mercado
        interest:
          $ref: '#/components/schemas/InterestInfo'
          description: Información de intereses
    FeeInfo:
      type: object
      properties:
        percentage:
          type: number
          description: Porcentaje aplicado como arancel.
          example: 0.5
        currencyCode:
          type: integer
          format: int64
          description: Código de la moneda en la que está expresado el arancel.
          example: 1
        amount:
          type: number
          description: Monto total del arancel.
          example: 5
        ivaCurrencyCode:
          type: integer
          format: int64
          description: Código de la moneda en la que está expresado el IVA del arancel.
          example: 1
        ivaAmount:
          type: number
          description: Monto del IVA aplicado al arancel.
          example: 1.05
    InterestInfo:
      type: object
      properties:
        amount:
          type: number
          description: Importe de los intereses generados por la operación
          example: 25.75
        ivaAmount:
          type: number
          description: Importe del IVA aplicado sobre los intereses
          example: 5.41
        ivaPercentage:
          type: number
          description: Porcentaje de IVA aplicado sobre los intereses
          example: 21
    MarketRightsInfo:
      type: object
      properties:
        percentage:
          type: number
          description: Porcentaje aplicado como derecho de mercado.
          example: 0.1
        currencyCode:
          type: integer
          format: int64
          description: Código de la moneda en la que está expresado el derecho de mercado.
          example: 1
        amount:
          type: number
          description: Monto total del derecho de mercado.
          example: 1
        ivaCurrencyCode:
          type: integer
          format: int64
          description: Código de la moneda en la que está expresado el IVA del derecho de mercado.
          example: 1
        ivaAmount:
          type: number
          description: Monto del IVA aplicado al derecho de mercado.
          example: 0.21
    CurrentAccountInstrumentsResponse:
      type: object
      properties:
        isPreviousBalance:
          type: boolean
          description: ¿Es saldo anterior?
          example: false
        currentAccountCode:
          type: integer
          format: int64
          description: Código de la cuenta corriente
          example: 123456789
        operationDate:
          type: string
          format: date
          description: Fecha de concertación (YYYY-MM-DD)
          example: '2025-04-10'
          pattern: yyyy-MM-dd
        settlementDate:
          type: string
          format: date
          description: Fecha de liquidación (YYYY-MM-DD)
          example: '2025-04-12'
          pattern: yyyy-MM-dd
        expirationDate:
          type: string
          format: date
          description: Fecha de vencimiento (YYYY-MM-DD)
          example: '2026-01-15'
          pattern: yyyy-MM-dd
        detail:
          type: string
          description: Detalle de la operación
          example: Compra de bonos corporativos
        isAvailable:
          type: boolean
          description: ¿Está disponible?
          example: true
        instrumentDescription:
          type: string
          description: Descripción del instrumento
          example: Obligación Negociable YPF
        amount:
          type: number
          description: Monto de la operación
          example: 100000.5
        price:
          type: number
          description: Precio del instrumento
          example: 105.25
        net:
          type: number
          description: Importe neto
          example: 95000
        gross:
          type: number
          description: Importe bruto
          example: 105000
        balance:
          type: number
          description: Saldo
          example: 500000
        currencyCode:
          type: integer
          format: int64
          description: Código de la moneda (1 = Pesos, 4 = USD Cable, 21 = USD MEP)
          example: 1
        instrumentTypeCode:
          type: string
          description: Código del tipo de instrumento
          example: 'ON'
        fee:
          $ref: '#/components/schemas/FeeInfo'
          description: Información del arancel
        marketRights:
          $ref: '#/components/schemas/MarketRightsInfo'
          description: Información de derechos de mercado
        instrument:
          $ref: '#/components/schemas/InstrumentInfoDTO'
          description: Información del instrumento
        interest:
          $ref: '#/components/schemas/InterestInfo'
          description: Información de intereses
    InstrumentInfoDTO:
      type: object
      properties:
        id:
          type: string
        cajaValoresCode:
          type: integer
          format: int64
        cafciCode:
          type: string
        denomination:
          type: string
        isinCode:
          type: string
        ticker:
          type: string
    LoginRequest:
      required:
        - clientId
        - clientSecret
      type: object
      properties:
        clientId:
          type: string
          description: Identificador del cliente
          example: demo-client-dev
        clientSecret:
          type: string
          description: Secreto del cliente
          example: <CLIENT_SECRET>
      description: Solicitud de login
    LoginResponse:
      type: object
      properties:
        accessToken:
          type: string
          description: Token de acceso
          example: <ACCESS_TOKEN>
        expiresIn:
          type: integer
          description: Vencimiento del token de acceso en segundos
          format: int32
          example: 720
        expiresAt:
          type: string
          description: Fecha de vencimiento del token de acceso en formato ISO 8601
          format: date-time
          example: '2024-06-01T14:15:59.999Z'
        tokenType:
          type: string
          description: Tipo de token de acceso
          example: Bearer
      description: Respuesta de login
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Token JWT obtenido en el login. Enviar en el header `Authorization: Bearer <token>`.'
security:
  - bearerAuth: []
