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

# Criar Transação de Ingresso Protegido

> Cria uma transação de seguro Ingresso Protegido.

**Importante:** Este endpoint é utilizado para registrar vendas já realizadas. 
O pagamento é feito externamente pelo parceiro, e a transação é criada com status "pago" automaticamente.




## OpenAPI

````yaml /openapi/jackson.yaml post /seguros/ingresso-protegido/create
openapi: 3.0.0
info:
  title: Safest API
  description: >
    API para integração de vendas de seguros.


    ## Como usar esta documentação


    1. **Provisionamento**: um administrador cria ou ativa um `api_client` para
    o canal

    2. **Autenticação**: o canal obtém `access_token` e `refresh_token` com
    `client_id` e `client_secret`

    3. **Venda**: o canal registra a venda pelo endpoint genérico de integração
    ou por um endpoint específico

    4. **Consulta**: quando aplicável, o canal consulta status da venda ou do
    seguro emitido


    ## Quickstart de Integração


    1. Crie o cliente de API no endpoint administrativo

    2. Guarde o `client_secret` retornado, ele não é exibido novamente

    3. Gere um token em `/seguros/auth/token`

    4. Registre vendas em `/private/integration/sale`

    5. Use integrações específicas, como Clubfix, apenas quando o produto exigir
    esse fluxo dedicado


    ## Informações sobre Tokens


    - O **access_token** expira em **30 minutos**

    - Use o **refresh_token** para obter um novo access_token sem precisar das
    credenciais

    - O **refresh_token** expira em **7 dias**
  version: '1.0'
  contact:
    email: suporte@safest.com.br
servers:
  - url: https://beta-jackson.safest.com.br/api
    description: Beta Server
  - url: https://safest.triader.com.br/api
    description: Production Server
security: []
tags:
  - name: Auth
    description: |
      Endpoints para autenticação OAuth 2.0 Client Credentials.

      Use estas rotas para obter e renovar seu token de acesso.
  - name: Administração de Clientes
    description: >
      Endpoints administrativos para provisionar, listar, ativar, desativar e
      revogar credenciais de canais integrados.


      Estes endpoints são usados pelo time interno para onboarding de parceiros
      antes do uso da integração de vendas.
  - name: Integração de Vendas
    description: >
      Endpoint genérico para registrar vendas enviadas pelos canais de venda
      integrados.


      Este fluxo é o modelo principal do novo integrador Jackson:

      - autentica o canal via `client_id` e `client_secret`

      - identifica produto e plano pelo ID interno ou código de integração

      - registra a transação com idempotência por `externalSaleId`

      - calcula comissão do canal e líquido Jackson automaticamente
  - name: Ingresso Protegido
    description: >
      Seguro que protege o valor do ingresso em caso de imprevistos que impeçam
      a presença no evento.


      **Importante:** Este endpoint registra vendas já realizadas. O pagamento é
      feito externamente pelo parceiro.
  - name: Seguro Celular
    description: >
      Seguro com proteção completa para celular contra danos acidentais, roubo,
      furto e outros imprevistos.


      Integração com sistema Clubfix para processamento de pagamentos.
  - name: Artista Protegido
    description: >
      Fluxo de venda do produto Artista Protegido.


      O canal envia apenas os dados da transação e o Jackson orquestra a emissão
      internamente.
  - name: Seguro Lua de Mel
    description: >
      Seguro que protege sua viagem de lua de mel contra imprevistos, garantindo
      tranquilidade e cobertura.
paths:
  /seguros/ingresso-protegido/create:
    post:
      tags:
        - Ingresso Protegido
      summary: Criar Transação de Ingresso Protegido
      description: >
        Cria uma transação de seguro Ingresso Protegido.


        **Importante:** Este endpoint é utilizado para registrar vendas já
        realizadas. 

        O pagamento é feito externamente pelo parceiro, e a transação é criada
        com status "pago" automaticamente.
      operationId: createIngressoProtegido
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - productId
                - channelLink
                - nomeCompleto
                - cpfCnpj
                - dataNascimento
                - email
                - telefone
                - logradouro
                - bairro
                - cidade
                - uf
                - cep
                - dataPagamento
                - formaPagamento
                - tipoIngresso
                - numeroIngresso
                - dataEvento
                - valorIngresso
                - valorSeguro
              properties:
                productId:
                  type: integer
                  description: ID do produto/plano na tabela product
                  example: 1
                channelLink:
                  type: string
                  description: Link do canal do parceiro
                  example: partner-link-abc123
                nomeCompleto:
                  type: string
                  description: Nome completo do segurado (mín. 3 caracteres)
                  example: João da Silva Santos
                nomeSocial:
                  type: string
                  description: Nome social do segurado (opcional)
                  example: ''
                cpfCnpj:
                  type: string
                  description: CPF ou CNPJ do segurado (apenas números)
                  example: '12345678900'
                dataNascimento:
                  type: string
                  format: date
                  description: Data de nascimento (formato YYYY-MM-DD)
                  example: '1990-05-15'
                email:
                  type: string
                  format: email
                  description: Email do segurado
                  example: joao@email.com
                telefone:
                  type: string
                  description: Telefone do segurado
                  example: '11999999999'
                logradouro:
                  type: string
                  description: Logradouro com número
                  example: Rua das Flores, 123
                bairro:
                  type: string
                  description: Bairro
                  example: Centro
                cidade:
                  type: string
                  description: Cidade
                  example: São Paulo
                uf:
                  type: string
                  description: UF (2 caracteres)
                  example: SP
                cep:
                  type: string
                  description: CEP (apenas números)
                  example: '01310100'
                dataPagamento:
                  type: string
                  format: date
                  description: Data em que o pagamento foi realizado
                  example: '2026-02-11'
                formaPagamento:
                  type: string
                  description: Forma de pagamento utilizada
                  enum:
                    - credito
                    - debito
                    - pix
                    - boleto
                  example: credito
                tipoIngresso:
                  type: string
                  description: Tipo do ingresso
                  enum:
                    - inteira
                    - meia
                    - vip
                    - camarote
                    - pista
                    - arquibancada
                  example: inteira
                numeroIngresso:
                  type: string
                  description: Número identificador do ingresso
                  example: TICKET-2026-001234
                dataEvento:
                  type: string
                  format: date
                  description: Data do evento
                  example: '2026-09-15'
                valorIngresso:
                  type: number
                  description: Valor do ingresso em reais
                  example: 850
                valorSeguro:
                  type: number
                  description: Valor do seguro (prêmio) em reais
                  example: 42.5
      responses:
        '200':
          description: Transação criada com sucesso
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    example: Transação criada com sucesso
                  data:
                    type: object
                    properties:
                      transaction_id:
                        type: integer
                        example: 12345
                      status:
                        type: string
                        example: paid
                      pagamento_externo:
                        type: boolean
                        example: true
                      vigencia:
                        type: object
                        properties:
                          inicio:
                            type: string
                            format: date
                            example: '2026-09-15'
                          fim:
                            type: string
                            format: date
                            example: '2026-09-15'
                      calculo_iof:
                        type: object
                        properties:
                          valor_premio:
                            type: number
                            example: 850
                          percentual_iof:
                            type: number
                            example: 7.38
                          valor_iof:
                            type: number
                            example: 62.73
                          valor_total:
                            type: number
                            example: 912.73
        '400':
          description: Erro de validação
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      nomeCompleto:
                        type: array
                        items:
                          type: string
                        example:
                          - O campo nome completo é obrigatório
                  - type: object
                    properties:
                      error:
                        type: string
                        example: Produto inválido ou não autorizado para este canal
        '401':
          description: Não autorizado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
      security:
        - bearerAuth: []
components:
  schemas:
    UnauthorizedError:
      type: object
      properties:
        success:
          type: boolean
          example: false
        response:
          type: string
          example: Token not found.
        status_code:
          type: string
          example: '401'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: |
        Token JWT obtido através do endpoint /seguros/auth/token.

        Exemplo: Authorization: Bearer {seu_token}

````