Malga Sessions API

Através da API de sessões é possível criar um pedido, composto por itens, métodos de pagamento e outros atributos, que pode ser pago através de um endpoint ou integrado ao MalgaCheckout. # Fluxo de criação e de pagamento de uma sessão - Crie uma `sessão` informando os dados básicos necessários - Utilize a `publicKey` retornada na criação ou recuperada na rota de detalhes no `X-Api-Key` para autenticar o pagamento **Dados básicos de um objeto do tipo session**

OpenAPI Specification

plug-sessions-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: '0.5'
  title: Documentação Malga 3DS2 Malga Sessions API
  description: "# Authentication\n\nOs serviços de API da Malga são protegidos através de chaves de acesso. Você pode gerenciar suas chaves de acesso através do seu dashboard.\n\nÉ importante armazenar suas chaves de maneira privada e segura uma vez que elas possuem privilégios de alteração na sua conta. Não compartilhe suas chaves, não deixe elas fixadas no seu código e nem armazene elas no seu servidor de controle de versão. Recomendamos utilizar variáveis de ambiente secretas para deixar a chave disponível para sua aplicação.\n\nA Autenticação para todos os chamadas da API é feita através de headers HTTP, sendo necessário informar seu identificador de cliente na Malga e a chave secreta de acesso.\n\n## X-Client-ID\n\nIdentificador única da sua conta na Malga. Deve ser enviado no header obrigatóriamente em todas as requisições feitas a API.\n\n| Security Scheme Type | API Key |\n|-----------------------|-----------|\n| Header parameter name | `X-Client-ID` |\n\n## X-Api-Key\n\nSua chave de acesso a API. Funciona em par com o client-id devendo ser enviado no header obrigatóriamente em todas as requisições feitas a API.\n\n| Security Scheme Type | API Key |\n|-----------------------|-----------|\n| Header parameter name | `X-Api-Key` |\n\n## Exemplo de requisicão autenticada\n\n```bash\n  curl --location --request GET 'https://api.malga.io/v1/' \\\n    --header 'X-Client-Id: <YOUR_CLIENT_ID>' \\\n    --header 'X-Api-Key: <YOUR_SECRET_KEY>'\n```\n"
servers:
- url: https://api.malga.io
  description: Production
security:
- X-Client-ID: []
  X-Api-Key: []
tags:
- name: Sessions
  description: '

    Através da API de sessões é possível criar um pedido, composto por itens, métodos de pagamento e outros atributos, que pode ser pago através de um endpoint ou integrado ao MalgaCheckout.


    # Fluxo de criação e de pagamento de uma sessão

    - Crie uma `sessão` informando os dados básicos necessários

    - Utilize a `publicKey` retornada na criação ou recuperada na rota de detalhes no `X-Api-Key` para autenticar o pagamento


    **Dados básicos de um objeto do tipo session**


    <SchemaDefinition schemaRef="#/components/schemas/Session" exampleRef="#/components/examples/Session" />

    '
paths:
  /v1/sessions:
    get:
      summary: Listar sessões
      operationId: listSessions
      description: 'Lista as sessões do cliente autenticado, com paginação e filtros opcionais.


        Sem o header `X-Client-Id`, a API responde `200` com `items` vazio e metadados de paginação padrão (não retorna erro).

        '
      parameters:
      - in: query
        name: page
        schema:
          type: integer
          minimum: 1
          default: 1
        required: false
        description: Número da página a ser listada (mínimo 1)
      - in: query
        name: limit
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 10
        required: false
        description: Quantidade de registros por página (padrão 10; máximo 100)
      - in: query
        name: order
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
        required: false
        description: 'Aceito como `asc` ou `desc` (padrão `desc`; valores inválidos caem para `desc`).

          A listagem atual ordena sempre por `createdAt` decrescente.

          '
      - in: query
        name: id
        schema:
          type: string
          format: uuid
        required: false
        description: Filtra pelo identificador da sessão
      - in: query
        name: status
        schema:
          type: string
          enum:
          - created
          - paid
          - canceled
          - voided
        required: false
        description: Filtra por status da sessão. Aceita múltiplos valores separados por vírgula
      - in: query
        name: isActive
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
        required: false
        description: Filtra sessões ativadas ou desativadas. Aceita múltiplos valores separados por vírgula (`true` e/ou `false`)
      - in: query
        name: merchantId
        schema:
          type: string
          format: uuid
        required: false
        description: Filtra pelo identificador do merchant
      - in: query
        name: orderId
        schema:
          type: string
          minLength: 2
        required: false
        description: Filtra pelo identificador do pedido. Se informado, deve ter no mínimo 2 caracteres Unicode após o trim
      - in: query
        name: multiplePayments.status
        schema:
          type: string
          enum:
          - active
          - disabled
          - canceled
        required: false
        description: 'Filtra pela disponibilidade agregada do link (`multiplePayments.status`). Aceita múltiplos valores separados por vírgula.

          `disabled` cobre links temporariamente indisponíveis, incluindo expiração por `dueDate`.

          '
      - in: query
        name: created.gt
        schema:
          type: string
          format: date-time
        required: false
        description: Filtra sessões com `createdAt` estritamente maior que o instante informado (RFC 3339 ou RFC 3339 com fração de segundos)
        example: '2026-03-24T03:00:00.000Z'
      - in: query
        name: created.lt
        schema:
          type: string
          format: date-time
        required: false
        description: Filtra sessões com `createdAt` estritamente menor que o instante informado (RFC 3339 ou RFC 3339 com fração de segundos)
        example: '2026-04-01T02:59:00.000Z'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionList'
              examples:
                SessionList:
                  $ref: '#/components/examples/SessionList'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Sessions
    post:
      summary: Criar nova sessão
      operationId: createSession
      description: 'Cria uma sessão de pagamento. Quando `maxPayments` é omitido, a sessão segue o fluxo 1:1 legado. Quando `maxPayments` é enviado, a sessão opera como link 1:N e a resposta completa retorna `multiplePayments` com a disponibilidade agregada para próximas cobranças.


        **Restrição pix/boleto em 1:N:** métodos `pix` e `boleto` não podem ser combinados com `maxPayments` finito maior que `1`. Nesse caso a API retorna `422` com `businessCode: "pix_boleto_multiple_payments_not_allowed"`. `maxPayments` omitido, `null`, `1` ou `-1` (ilimitado) continua permitido para pix/boleto. O bloqueio não se aplica a cartão de crédito.

        '
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateSession'
            examples:
              CreateSessionRequest:
                $ref: '#/components/examples/CreateSessionRequest'
              CreateSessionRequest1NFixed:
                $ref: '#/components/examples/CreateSessionRequest1NFixed'
              CreateSessionRequest1NUnlimited:
                $ref: '#/components/examples/CreateSessionRequest1NUnlimited'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
              examples:
                Session:
                  $ref: '#/components/examples/Session'
                Session1N:
                  $ref: '#/components/examples/Session1N'
        '422':
          description: 'Unprocessable Entity. Regras de negócio bloquearam a criação da sessão. O envelope segue o formato padrão de erro, com `businessCode` identificando a regra violada.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                PixBoletoMultiplePaymentsNotAllowed:
                  summary: Pix/boleto com maxPayments > 1
                  value:
                    error:
                      type: bad_request
                      code: 422
                      message: PIX and boleto payment methods do not support maxPayments greater than 1.
                      businessCode: pix_boleto_multiple_payments_not_allowed
                      details: []
                PlatformFeeExceedsLinkAmount:
                  summary: Taxa de plataforma maior ou igual ao valor do link
                  value:
                    error:
                      type: bad_request
                      code: 422
                      message: Calculated platform fee must be less than the link total amount.
                      businessCode: platform_fee_exceeds_link_amount
                      details: []
      tags:
      - Sessions
  /v1/sessions/{id}:
    get:
      summary: Recuperar detalhes de uma sessão
      operationId: getSession
      description: 'Retorna a sessão completa. Use este endpoint como fonte do estado agregado de `multiplePayments` após criação, pagamento, atualização, cancelamento ou consulta de histórico.

        '
      parameters:
      - name: id
        required: true
        description: Identificação da sessão a ser recuperada
        in: path
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionResponse'
              examples:
                Session:
                  $ref: '#/components/examples/Session'
      tags:
      - Sessions
    patch:
      summary: Atualizar relevância de uma sessão
      operationId: patchSession
      description: 'Atualiza campos de relevância da sessão: `isActive` (obrigatório), `dueDate` e `maxPayments` (sessões 1:N). A resposta é parcial e devolve apenas `id` e `isActive`; após a atualização, consulte `GET /v1/sessions/{id}` para obter o estado completo (`status`, `dueDate`, `maxPayments`, `multiplePayments`, etc.).


        **Restrição de reativação pix/boleto 1:1 consumida:** `isActive: true` em uma sessão pix ou boleto 1:1 já paga (`maxPayments = 1` com `paymentCount = 1`, ou sessão legada sem `maxPayments` já `paid` com `paymentCount = 1`) retorna `422` com `businessCode: "pix_boleto_one_to_one_reactivation_blocked"`. O bloqueio ignora `maxPayments` enviado no PATCH.

        '
      parameters:
      - name: id
        required: true
        description: Identificação da sessão a ser alterada
        in: path
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchSessionRequest'
            examples:
              PatchSessionRequest:
                $ref: '#/components/examples/PatchSessionRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PatchSession200Response'
              examples:
                PatchSession200Response:
                  $ref: '#/components/examples/PatchSession200Response'
        '422':
          description: 'Unprocessable Entity. Regras de negócio bloquearam a atualização da sessão. O envelope segue o formato padrão de erro, com `businessCode` identificando a regra violada.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                PixBoletoOneToOneReactivationBlocked:
                  summary: Reativação de sessão pix/boleto 1:1 já consumida
                  value:
                    error:
                      type: bad_request
                      code: 422
                      message: Consumed one-to-one PIX or boleto sessions cannot be reactivated.
                      businessCode: pix_boleto_one_to_one_reactivation_blocked
                      details: []
      tags:
      - Sessions
  /v1/sessions/{id}/charge:
    post:
      summary: Pagar uma sessão
      operationId: paySession
      description: 'Inicia uma cobrança para a sessão. Em sessões 1:N, cada chamada aceita representa uma tentativa individual dentro da capacidade configurada em `maxPayments`. A resposta é a cobrança criada e não retorna `multiplePayments`; consulte `GET /v1/sessions/{id}` para acompanhar o estado agregado atualizado.

        '
      parameters:
      - name: id
        required: true
        description: Identificação da sessão a ser paga
        in: path
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PaySessionRequest'
            examples:
              PaySessionCardRequest:
                $ref: '#/components/examples/PaySessionCardRequest'
              PaySessionCardRequestWithRecurrence:
                $ref: '#/components/examples/PaySessionCardRequestWithRecurrence'
              PaySessionPixRequest:
                $ref: '#/components/examples/PaySessionPixRequest'
              PaySessionDripRequest:
                $ref: '#/components/examples/PaySessionDripRequest'
              PaySessionBoletoRequest:
                $ref: '#/components/examples/PaySessionBoletoRequest'
              PaySessionNupayRequest:
                $ref: '#/components/examples/PaySessionNupayRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaySession201Response'
              examples:
                PaySession201CardResponse:
                  $ref: '#/components/examples/PaySession201CardResponse'
                PaySession201PixResponse:
                  $ref: '#/components/examples/PaySession201PixResponse'
                PaySession201DripResponse:
                  $ref: '#/components/examples/PaySession201DripResponse'
                PaySession201BoletoResponse:
                  $ref: '#/components/examples/PaySession201BoletoResponse'
                PaySession201NupayResponse:
                  $ref: '#/components/examples/PaySession201NupayResponse'
        '404':
          description: 'Sessão não encontrada ou não pertencente ao cliente informado em `X-Client-Id`.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: 'Unprocessable Entity. A cobrança não pode ser processada: sellers de split inválidos, ou sessão 1:N indisponível (link desativado ou limite de pagamentos atingido). Nos casos de indisponibilidade 1:N, o `businessCode` é `session_disabled` ou `multiple_payments_limit_reached`. O envelope segue o formato padrão de erro.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                InvalidSellers:
                  summary: Sellers de split inválidos
                  value:
                    error:
                      type: bad_request
                      code: 422
                      message: 'session cannot be charged: sellers not found [9f8b2c1a-4d3e-4a2b-8c7d-1e2f3a4b5c6d]'
                      details: []
                MultiplePaymentsLimitReached:
                  summary: Limite de pagamentos 1:N atingido
                  value:
                    error:
                      type: bad_request
                      code: 422
                      message: multiple payments limit reached
                      businessCode: multiple_payments_limit_reached
                      details: []
      tags:
      - Sessions
  /v1/sessions/{id}/cancel:
    post:
      summary: Cancelar uma sessão
      operationId: cancelSession
      parameters:
      - name: id
        required: true
        description: Identificação da sessão a ser cancelada
        in: path
        schema:
          type: string
          format: uuid
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelSession201Response'
              examples:
                CancelSession201Response:
                  $ref: '#/components/examples/CancelSession201Response'
      tags:
      - Sessions
  /v1/sessions/{id}/history:
    get:
      summary: Recuperar o histórico da sessão
      operationId: getSessionHistory
      description: 'Retorna a trilha de auditoria da sessão em ordem decrescente de criação, com os registros mais recentes primeiro: alterações de campos, tentativas de pagamento, confirmações assíncronas e expirações.


        Cada item representa um **registro de histórico** (`id` do evento), não o identificador da sessão. Use `action` (ação principal derivada) e `actions` (lista completa) junto com `diff` para entender o que ocorreu.


        O campo `status` em cada item segue a **semântica de produto** na leitura: expirações automáticas por `dueDate` ou limite 1:N podem aparecer como `disabled`, mesmo quando o status persistido no registro era `created`.


        Para o estado atual da sessão e de `multiplePayments`, consulte `GET /v1/sessions/{id}`. O histórico não substitui essa consulta.

        '
      parameters:
      - name: id
        required: true
        description: Identificação da sessão
        in: path
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionHistoryResponse'
              examples:
                SessionHistoryResponse:
                  $ref: '#/components/examples/SessionHistoryResponse'
        '400':
          description: Header `X-Client-Id` ausente ou identificador da sessão ausente no path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Sessão não encontrada para o par `id` + `X-Client-Id`
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Erro interno inesperado ao recuperar o histórico da sessão
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Sessions
  /v1/sessions/{id}/link:
    get:
      summary: Recupera sessão com os dados das configurações da empresa
      operationId: getSessionWithSettings
      description: 'Retorna a sessão completa junto das configurações da empresa usadas no Link de Pagamento. Também inclui `multiplePayments` para indicar a disponibilidade agregada do link em sessões 1:1 e 1:N.

        '
      parameters:
      - name: id
        required: true
        description: Identificação da sessão a ser recuperada
        in: path
        schema:
          type: string
          format: uuid
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SessionSettingsResponse'
      tags:
      - Sessions
components:
  schemas:
    VendorCharge:
      type: object
      description: Parâmetros adicionais para transacionar com `vendors`
      properties:
        id:
          type: string
          format: uuid
          description: Identificador do vendedor já cadastrado na API de [vendors](/api-reference/vendors/criacao-de-um-novo-vendedor)
        paymentFacilitatorId:
          type: string
          description: Seu código de Subadquirente na respectiva bandeira. [Verifique a lista de provedores suportados](/documentations/vendors/provedores)
          nullable: true
      required:
      - id
      - paymentFacilitatorId
    PaymentMethodDripObjectRequest:
      title: Drip
      type: object
      properties:
        paymentType:
          type: string
          enum:
          - drip
          description: Método da cobrança via Drip
        cancelRedirectUrl:
          type: string
          description: Link de redirecionamento em caso de cancelamento do pagamento no ambiente de checkout da Drip
        successRedirectUrl:
          type: string
          description: Link de redirecionamento em caso de aprovação do pagamento no ambiente de checkout da Drip
      required:
      - paymentType
    ErrorItem:
      properties:
        type:
          type: string
          enum:
          - api_error
          - bad_request
          - invalid_request_error
          - card_declined
        code:
          type: integer
          description: Código HTTP do erro (por exemplo, `422` em erros de regra de negócio).
        declinedCode:
          type: string
          description: Código de retorno da transação em caso de falha na autorização
        key:
          type: string
          description: 'Chave estável que identifica o erro de negócio (ex.: `bank_identifier_required`). Útil para tratar o erro programaticamente, independente da mensagem traduzida.'
        businessCode:
          type: string
          description: 'Chave estável de regra de negócio retornada em `422`. Permite tratar o erro programaticamente independente da mensagem traduzida. Exemplos em sessões: `pix_boleto_multiple_payments_not_allowed`, `pix_boleto_one_to_one_reactivation_blocked`, `platform_fee_exceeds_link_amount`, `session_disabled`, `multiple_payments_limit_reached`.

            '
        message:
          type: string
          description: Descrição breve do erro
        details:
          type: array
          description: Lista contendo objetos que detalham o erro de validação
    UserSettings:
      properties:
        id:
          type: string
          format: uuid
          description: Identificador das configurações da empresa
        logo:
          type: string
          format: uri
          description: URL do logo da empresa
        mainColor:
          type: string
          description: Cor primária
        secondaryColor:
          type: string
          description: Cor secundária
        attentionColor:
          type: string
          description: Cor utilizada para alertas
        errorColor:
          type: string
          description: Cor utilizada para as mensagens de erro
        successColor:
          type: string
          description: Cor utilizada nas mensagens de sucesso
        backgroundColor:
          type: string
          description: Cor de fundo
        clientId:
          type: string
          description: Identificador do cliente na Malga
        companyUrl:
          type: string
          description: 'Url que deve ser utilizada no link de pagamento. Ex: https://www.company.com'
        mastercardClickToPayDpaid:
          type: string
          description: Digital Payment Application ID (dpaId) para habilitar Mastercard Click to Pay no Link de Pagamento. Campo opcional.
        merchantId:
          type: string
          description: Indica se a configuração retornada é específica de um merchant (id do merchant) ou a configuração padrão do cliente (nesse caso sem valor).
    PaymentMethodNupayObjectRequest:
      title: NuPay
      type: object
      properties:
        paymentType:
          type: string
          enum:
          - nupay
          description: Método da cobrança via Nupay
        orderUrl:
          type: string
          description: URL da cobrança
        delayToAutoCancel:
          type: integer
          description: Tempo em minutos para a expiração de uma cobrança criada que não tenha sido paga
        returnUrl:
          type: string
          description: URL para a qual o cliente será redirecionado após finalizar o pagamento
        cancelUrl:
          type: string
          description: URL para onde o cliente será direcionado caso escolha não finalizar o pagamento e cancele o pedido
        recipients:
          type: array
          description: Beneficiários finais da transação NuPay (PLDFT). Campo opcional.
          items:
            $ref: '#/components/schemas/NupayRecipient'
      required:
      - paymentType
    PaySessionRequest:
      description: 'Corpo para pagamento da sessão (`paymentMethod` e `paymentSource`). Se existir split, as regras foram definidas na **criação da sessão** (`splitRules` em POST /v1/sessions) e são aplicadas ao processar esta cobrança; não envie `splitRules` aqui.

        '
      properties:
        customerId:
          type: string
          format: uuid
          description: Identificador de comprador para consulta futura
        paymentMethod:
          description: Define o método de cobrança
          oneOf:
          - $ref: '#/components/schemas/PaymentMethodCard'
          - $ref: '#/components/schemas/PaymentMethodPixObjectRequest'
          - $ref: '#/components/schemas/PaymentMethodBoleto'
          - $ref: '#/components/schemas/PaySessionPaymentMethodDripObjectRequest'
          - $ref: '#/components/schemas/PaymentSessionNuPay'
          - $ref: '#/components/schemas/PaymentMethodClickToPay'
        paymentSource:
          oneOf:
          - $ref: '#/components/schemas/SourceTypeCard'
          - $ref: '#/components/schemas/SourceTypeCardOneShot'
          - $ref: '#/components/schemas/SourceTypeToken'
          - $ref: '#/components/schemas/SourceTypeCustomer'
          - $ref: '#/components/schemas/SourceTypeCustomerData'
          - $ref: '#/components/schemas/SourceTypeClickToPay'
        fraudAnalysis:
          description: Parâmetros adicionais para análise de fraude. Alguns destes campos podem ser necessários para processar com provedores específicos.
          allOf:
          - $ref: '#/components/schemas/FraudAnalysisRequest'
      required:
      - paymentMethod
      - paymentSource
    SourceTypeCustomerData:
      title: Pagamentos com dados de Customer
      type: object
      description: Dados do customer para cobrança via Cartão, Pix ou Boleto
      properties:
        sourceType:
          type: string
          description: Tipo da origem da cobrança, usar `customer` para cobrança via Cartão, Pix ou Boleto
          enum:
          - customer
        customer:
          type: object
          properties:
            name:
              type: string
              description: Nome do usuario
            email:
              type: string
              description: Email do usuario
            phoneNumber:
              type: string
              description: Telefone de contato do usuario
            document:
              allOf:
              - $ref: '#/components/schemas/Document'
            address:
              allOf:
              - $ref: '#/components/schemas/Address'
          required:
          - email
          - phoneNumber
          - document
      required:
      - sourceType
      - customer
    FraudAnalysisRequest:
      properties:
        sla:
          type: number
          description: Valor em Minutos de SLA máximo de Análise do Pedido, se houver
        customer:
          description: Dados do comprador
          type: object
          properties:
            name:
              type: string
              description: Nome do usuario
            email:
              type: string
              description: Email do usuario
            phone:
              type: string
              description: Telefone de contato do usuario
            identityType:
              type: string
              description: Tipo de documento, consultar tabela de tipos suportados
            identity:
              type: string
              description: Número do documento formato conforme tipo selecionado
            maritalStatus:
              type: string
              description: Estado civil do usuario
            education:
              type: string
              description: Nível de escolaridade do usuario
            registrationDate:
              type: string
              description: Data de registro do cliente
            deliveryAddress:
              description: Endereço de entrega
              allOf:
              - $ref: '#/components/schemas/FraudAnalysisAddress'
            billingAddress:
              description: Endereço de cobrança
              allOf:
              - $ref: '#/components/schemas/FraudAnalysisAddress'
            browser:
              description: Informações sobre o navegador do usuário
              allOf:
              - $ref: '#/components/schemas/FraudAnalysisCustomerBrowser'
        mfa:
          description: Dados de Multi factor authentication
          type: object
          properties:
            smsOtpUsed:
              type: boolean
              description: Usuario utilizou OTP via SMS
            emailOtpUsed:
              type: boolean
              description: Usuario utilizou OTP via email
        cart:
          description: Detalhe do carrinho de produtos
          type: object
          properties:
            items:
              type: array
              items:
                type: object
                properties:
                  name:
                    type: string
                    description: Nome do item/evento
                  quantity:
                    type: integer
                    description: Quantidade de itens do pedido
                  sku:
                    type: string
                    description: Identificador único do item na loja
                  unitPrice:
                    type: integer
                    description: Valor unitário do item/evento em centavos
                  risk:
                    type: string
                    description: Definição do indice de risco do item
                    enum:
                    - High
                    - Low
                  description:
                    type: string
                    description: Descrição do item/evento
                  categoryId:
                    type: string
                    description: Categoria a qual o item/evento pertence
                  locality:
                    type: string
                    description: Definição de local, em caso de evento
                  date:
                    type: string
                    description: Definição de data, em caso de evento
                  type:
                    type: number
                    description: Definição de tipo, em caso de evento
                  genre:
                    type: string
                    description: Definição de gênero, em caso de evento
                  tickets:
                    type: object
                    description: Informações relacionadas aos ingressos, em caso de evento
                    properties:
                      quantityTicketSale:
                        type: number
                        description: Quantidade total de ingressos à venda
                      quantityEventHouse:
                        type: number
                        description: Quantidade de vezes que o evento será realizado na casa
                      convenienceFeeValue:
                        type: number
                        description: Taxa de Conveniência
                      quantityFull:
                        type: number
                        description: Quantidade de ingressos com valor integral
                      quantityHalf:
     

# --- truncated at 32 KB (119 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/plug/refs/heads/main/openapi/plug-sessions-api-openapi.yml