{
  "info": {
    "_postman_id": "2ddde713-d6b8-408e-a63d-8515b6feaecd",
    "name": "EventsPro API v1",
    "description": "Coleção oficial e completa da EventsPro API v1.\n\nDocumentação: https://www.eventspro.com.br/api-documentation\n\nAutenticação: use a chave criada no painel em `Authorization: Bearer {{api_key}}`. Não envie e-mail ou senha.\n\nEscopos:\n- `event`: acesso somente ao evento vinculado;\n- `account`: acesso a todos os eventos atuais e futuros da conta.\n\nProteção do servidor:\n- eventos: até 120 requisições/minuto por chave;\n- participantes: até 60 requisições/minuto por chave;\n- listagens de participantes: 50 itens por padrão, máximo de 200;\n- ao receber HTTP 429, respeite o header `Retry-After`.\n\nOrdem sugerida de testes: Health check, autenticação alternativa, listagem de eventos, detalhe do evento, listagem de participantes e buscas individuais. Para sincronizações extensas, mantenha o mesmo `updated_until` em todas as páginas e avance com `after_id` até `has_more=false`.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "bearer",
    "bearer": [
      {
        "key": "token",
        "value": "{{api_key}}",
        "type": "string"
      }
    ]
  },
  "event": [
    {
      "listen": "prerequest",
      "script": {
        "type": "text/javascript",
        "exec": [
          "const baseUrl = pm.collectionVariables.get('base_url');",
          "if (baseUrl) {",
          "    pm.collectionVariables.set('base_url', baseUrl.replace(/\\/+$/, ''));",
          "}"
        ]
      }
    },
    {
      "listen": "test",
      "script": {
        "type": "text/javascript",
        "exec": [
          "pm.test('Resposta em JSON', function () {",
          "    pm.expect(pm.response.headers.get('Content-Type') || '').to.include('application/json');",
          "});",
          "pm.test('Tempo de resposta inferior a 5 segundos', function () {",
          "    pm.expect(pm.response.responseTime).to.be.below(5000);",
          "});",
          "pm.test('Resposta possui identificador de requisição', function () {",
          "    const requestIdHeader = pm.response.headers.get('X-Request-Id');",
          "    const payload = pm.response.json();",
          "    pm.expect(requestIdHeader || payload.meta?.request_id).to.exist;",
          "});",
          "if (pm.response.code === 429) {",
          "    pm.test('HTTP 429 informa Retry-After', function () {",
          "        pm.expect(pm.response.headers.get('Retry-After')).to.exist;",
          "    });",
          "}"
        ]
      }
    }
  ],
  "item": [
    {
      "name": "1 - Status",
      "item": [
        {
          "name": "Health check",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('API disponível', function () {",
                  "    pm.response.to.have.status(200);",
                  "    pm.expect(pm.response.json().status).to.eql('ok');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "auth": {
              "type": "noauth"
            },
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/health",
              "host": ["{{base_url}}"],
              "path": ["v1", "health"]
            },
            "description": "Verifica se a camada HTTP da API está disponível. Não consulta dados e não exige autenticação."
          },
          "response": []
        }
      ]
    },
    {
      "name": "2 - Eventos",
      "item": [
        {
          "name": "Listar eventos acessíveis",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Eventos retornados', function () {",
                  "    pm.response.to.have.status(200);",
                  "    const body = pm.response.json();",
                  "    pm.expect(body.data.events).to.be.an('array');",
                  "    pm.expect(body.meta.pagination).to.be.an('object');",
                  "});",
                  "const body = pm.response.json();",
                  "if (body.meta && body.meta.pagination && body.meta.pagination.next_after_id) {",
                  "    pm.collectionVariables.set('event_after_id', String(body.meta.pagination.next_after_id));",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events?per_page={{event_per_page}}&after_id={{event_after_id}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events"],
              "query": [
                {
                  "key": "per_page",
                  "value": "{{event_per_page}}",
                  "description": "Máximo de 100."
                },
                {
                  "key": "after_id",
                  "value": "{{event_after_id}}",
                  "description": "Cursor retornado em meta.pagination.next_after_id."
                },
                {
                  "key": "status",
                  "value": "active",
                  "disabled": true,
                  "description": "Filtro opcional pelo status do evento."
                },
                {
                  "key": "updated_since",
                  "value": "{{updated_since}}",
                  "disabled": true,
                  "description": "Filtro opcional em formato ISO 8601."
                }
              ]
            },
            "description": "Com chave de conta, lista todos os eventos do organizador. Com chave de evento, retorna somente o evento vinculado."
          },
          "response": []
        },
        {
          "name": "Detalhar evento por ID",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Evento retornado', function () {",
                  "    pm.response.to.have.status(200);",
                  "    pm.expect(pm.response.json().data.event.id).to.exist;",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}"]
            },
            "description": "Retorna o evento quando ele pertence ao escopo da chave."
          },
          "response": []
        },
        {
          "name": "Detalhar evento por URI",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Evento retornado', function () {",
                  "    pm.response.to.have.status(200);",
                  "    pm.expect(pm.response.json().data.event.uri).to.exist;",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_uri}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_uri}}"]
            },
            "description": "Retorna o evento usando a URI pública principal."
          },
          "response": []
        },
        {
          "name": "Detalhar evento por URI curta",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Evento retornado pela URI curta', function () {",
                  "    pm.response.to.have.status(200);",
                  "    const event = pm.response.json().data.event;",
                  "    pm.expect(event.id).to.exist;",
                  "    pm.expect(event.short_uri).to.exist;",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_short_uri}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_short_uri}}"]
            },
            "description": "Valida a resolução do evento usando app_event.uri_short."
          },
          "response": []
        }
      ]
    },
    {
      "name": "3 - Participantes",
      "item": [
        {
          "name": "Listar primeira página",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Página de participantes retornada', function () {",
                  "    pm.response.to.have.status(200);",
                  "    const body = pm.response.json();",
                  "    pm.expect(body.data.participants).to.be.an('array');",
                  "    pm.expect(body.meta.pagination.has_more).to.be.a('boolean');",
                  "});",
                  "const body = pm.response.json();",
                  "if (body.meta && body.meta.pagination && body.meta.pagination.next_after_id) {",
                  "    pm.collectionVariables.set('after_id', String(body.meta.pagination.next_after_id));",
                  "}",
                  "if (body.meta && body.meta.filters && body.meta.filters.updated_until) {",
                  "    pm.collectionVariables.set('updated_until', body.meta.filters.updated_until);",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?per_page={{per_page}}&after_id=0&payment_status={{payment_status}}&include_custom_fields={{include_custom_fields}}&include_deleted={{include_deleted}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [
                {
                  "key": "per_page",
                  "value": "{{per_page}}",
                  "description": "De 1 a 200; padrão 50."
                },
                {
                  "key": "after_id",
                  "value": "0",
                  "description": "Use 0 na primeira página."
                },
                {
                  "key": "payment_status",
                  "value": "{{payment_status}}",
                  "description": "valid, all ou lista numérica separada por vírgula."
                },
                {
                  "key": "include_custom_fields",
                  "value": "{{include_custom_fields}}",
                  "description": "Ative somente se precisar dos campos dinâmicos."
                },
                {
                  "key": "include_deleted",
                  "value": "{{include_deleted}}",
                  "description": "Inclui registros removidos para reconciliação."
                }
              ]
            },
            "description": "Retorna participantes em ordem crescente de ID. Os campos personalizados são opcionais para reduzir o custo da consulta."
          },
          "response": []
        },
        {
          "name": "Listar próxima página",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Próxima página retornada', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "const body = pm.response.json();",
                  "if (body.meta && body.meta.pagination && body.meta.pagination.next_after_id) {",
                  "    pm.collectionVariables.set('after_id', String(body.meta.pagination.next_after_id));",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?per_page={{per_page}}&after_id={{after_id}}&payment_status={{payment_status}}&include_custom_fields={{include_custom_fields}}&include_deleted={{include_deleted}}&updated_until={{updated_until}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [
                {"key": "per_page", "value": "{{per_page}}"},
                {"key": "after_id", "value": "{{after_id}}"},
                {"key": "payment_status", "value": "{{payment_status}}"},
                {"key": "include_custom_fields", "value": "{{include_custom_fields}}"},
                {"key": "include_deleted", "value": "{{include_deleted}}"},
                {
                  "key": "updated_until",
                  "value": "{{updated_until}}",
                  "description": "Mantenha o valor retornado na primeira página."
                }
              ]
            },
            "description": "Avança usando o cursor salvo automaticamente pela requisição anterior."
          },
          "response": []
        },
        {
          "name": "Detalhar participante por ID",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Participante retornado', function () {",
                  "    pm.response.to.have.status(200);",
                  "    pm.expect(pm.response.json().data.participant.id).to.exist;",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants/{{participant_id}}?include_custom_fields=true",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants", "{{participant_id}}"],
              "query": [
                {"key": "include_custom_fields", "value": "true"}
              ]
            },
            "description": "Busca pelo ID de app_registration_event. A consulta unitária aceita qualquer status de pagamento."
          },
          "response": []
        },
        {
          "name": "Detalhar participante pelo código do ingresso",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Participante retornado pelo código', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants/code/{{ticket_code}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants", "code", "{{ticket_code}}"]
            },
            "description": "Busca pelo código usado no QR Code/voucher."
          },
          "response": []
        },
        {
          "name": "Detalhar participante pelo documento",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Participante retornado pelo documento', function () {",
                  "    pm.response.to.have.status(200);",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants/document/{{document_type}}/{{document_number}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants", "document", "{{document_type}}", "{{document_number}}"]
            },
            "description": "document_type aceita o ID da opção ou nomes como CPF e Passaporte. Pontuação do documento é removida antes da consulta."
          },
          "response": []
        }
      ]
    },
    {
      "name": "4 - Sincronização incremental",
      "item": [
        {
          "name": "Iniciar janela de sincronização",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Janela incremental retornada', function () {",
                  "    pm.response.to.have.status(200);",
                  "    const body = pm.response.json();",
                  "    pm.expect(body.meta.filters.updated_until).to.exist;",
                  "});",
                  "const body = pm.response.json();",
                  "pm.collectionVariables.set('updated_until', body.meta.filters.updated_until);",
                  "pm.collectionVariables.set('after_id', body.meta.pagination.next_after_id ? String(body.meta.pagination.next_after_id) : '0');"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?updated_since={{updated_since}}&per_page={{per_page}}&after_id=0&payment_status=all&include_custom_fields=true&include_deleted=true",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [
                {
                  "key": "updated_since",
                  "value": "{{updated_since}}",
                  "description": "Data/hora da última sincronização concluída."
                },
                {"key": "per_page", "value": "{{per_page}}"},
                {"key": "after_id", "value": "0"},
                {"key": "payment_status", "value": "all"},
                {"key": "include_custom_fields", "value": "true"},
                {"key": "include_deleted", "value": "true"}
              ]
            },
            "description": "Primeira página da sincronização. A resposta define updated_until; use exatamente esse valor nas páginas seguintes para manter uma fotografia consistente."
          },
          "response": []
        },
        {
          "name": "Continuar janela de sincronização",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Página incremental retornada', function () {",
                  "    pm.response.to.have.status(200);",
                  "});",
                  "const body = pm.response.json();",
                  "if (body.meta.pagination.has_more) {",
                  "    pm.collectionVariables.set('after_id', String(body.meta.pagination.next_after_id));",
                  "} else {",
                  "    pm.collectionVariables.set('updated_since', body.meta.filters.updated_until);",
                  "    pm.collectionVariables.set('after_id', '0');",
                  "}"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?updated_since={{updated_since}}&updated_until={{updated_until}}&per_page={{per_page}}&after_id={{after_id}}&payment_status=all&include_custom_fields=true&include_deleted=true",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [
                {"key": "updated_since", "value": "{{updated_since}}"},
                {"key": "updated_until", "value": "{{updated_until}}"},
                {"key": "per_page", "value": "{{per_page}}"},
                {"key": "after_id", "value": "{{after_id}}"},
                {"key": "payment_status", "value": "all"},
                {"key": "include_custom_fields", "value": "true"},
                {"key": "include_deleted", "value": "true"}
              ]
            },
            "description": "Continue até meta.pagination.has_more ser false. Ao terminar, use updated_until como updated_since da próxima execução."
          },
          "response": []
        }
      ]
    },
    {
      "name": "5 - Autenticação e validações",
      "description": "Cenários de autenticação alternativa e respostas de erro esperadas. Estes testes não alteram dados.",
      "item": [
        {
          "name": "Autenticar com X-API-Key",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Header X-API-Key aceito', function () {",
                  "    pm.response.to.have.status(200);",
                  "    pm.expect(pm.response.json().data.event.id).to.exist;",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "auth": {"type": "noauth"},
            "method": "GET",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "X-API-Key", "value": "{{api_key}}", "type": "text"}
            ],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}"]
            },
            "description": "Valida o header alternativo X-API-Key sem herdar o Bearer da coleção."
          },
          "response": []
        },
        {
          "name": "Erro 401 - Chave ausente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Chave ausente retorna 401', function () {",
                  "    pm.response.to.have.status(401);",
                  "    pm.expect(pm.response.json().error.code).to.eql('missing_api_key');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "auth": {"type": "noauth"},
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events",
              "host": ["{{base_url}}"],
              "path": ["v1", "events"]
            },
            "description": "Cenário negativo esperado: nenhuma credencial é enviada."
          },
          "response": []
        },
        {
          "name": "Erro 401 - Chave inválida",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Chave inválida retorna 401', function () {",
                  "    pm.response.to.have.status(401);",
                  "    pm.expect(pm.response.json().error.code).to.eql('invalid_api_key');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "auth": {"type": "noauth"},
            "method": "GET",
            "header": [
              {"key": "Accept", "value": "application/json"},
              {"key": "Authorization", "value": "Bearer ep_live_CHAVE_INVALIDA_PARA_TESTE", "type": "text"}
            ],
            "url": {
              "raw": "{{base_url}}/v1/events",
              "host": ["{{base_url}}"],
              "path": ["v1", "events"]
            },
            "description": "Cenário negativo esperado usando uma chave fictícia."
          },
          "response": []
        },
        {
          "name": "Erro 422 - ID de participante inválido",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('ID inválido retorna 422', function () {",
                  "    pm.response.to.have.status(422);",
                  "    pm.expect(pm.response.json().error.code).to.eql('invalid_participant_id');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants/0",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants", "0"]
            },
            "description": "Cenário negativo esperado para validação do participant_id."
          },
          "response": []
        },
        {
          "name": "Erro 422 - Data incremental inválida",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Data inválida retorna 422', function () {",
                  "    pm.response.to.have.status(422);",
                  "    pm.expect(pm.response.json().error.code).to.eql('invalid_updated_since');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?updated_since=DATA_INVALIDA",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [{"key": "updated_since", "value": "DATA_INVALIDA"}]
            },
            "description": "Cenário negativo esperado para validação ISO 8601."
          },
          "response": []
        },
        {
          "name": "Erro 422 - Status de pagamento inválido",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Filtro inválido retorna 422', function () {",
                  "    pm.response.to.have.status(422);",
                  "    pm.expect(pm.response.json().error.code).to.eql('invalid_payment_status');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/events/{{event_id}}/participants?payment_status=INVALIDO",
              "host": ["{{base_url}}"],
              "path": ["v1", "events", "{{event_id}}", "participants"],
              "query": [{"key": "payment_status", "value": "INVALIDO"}]
            },
            "description": "Cenário negativo esperado para o filtro payment_status."
          },
          "response": []
        },
        {
          "name": "Erro 404 - Endpoint inexistente",
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "pm.test('Endpoint inexistente retorna 404', function () {",
                  "    pm.response.to.have.status(404);",
                  "    pm.expect(pm.response.json().error.code).to.eql('endpoint_not_found');",
                  "});"
                ]
              }
            }
          ],
          "request": {
            "method": "GET",
            "header": [{"key": "Accept", "value": "application/json"}],
            "url": {
              "raw": "{{base_url}}/v1/endpoint-inexistente",
              "host": ["{{base_url}}"],
              "path": ["v1", "endpoint-inexistente"]
            },
            "description": "Cenário negativo esperado para a resposta padronizada de rota inexistente."
          },
          "response": []
        }
      ]
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://www.eventspro.com.br/api",
      "type": "default"
    },
    {
      "key": "api_key",
      "value": "",
      "type": "secret"
    },
    {
      "key": "event_id",
      "value": "125",
      "type": "default"
    },
    {
      "key": "event_uri",
      "value": "meu-evento",
      "type": "default"
    },
    {
      "key": "event_short_uri",
      "value": "evento-curto",
      "type": "default"
    },
    {
      "key": "event_per_page",
      "value": "50",
      "type": "default"
    },
    {
      "key": "event_after_id",
      "value": "0",
      "type": "default"
    },
    {
      "key": "participant_id",
      "value": "1",
      "type": "default"
    },
    {
      "key": "ticket_code",
      "value": "CODIGO_DO_INGRESSO",
      "type": "default"
    },
    {
      "key": "document_type",
      "value": "CPF",
      "type": "default"
    },
    {
      "key": "document_number",
      "value": "00000000000",
      "type": "default"
    },
    {
      "key": "per_page",
      "value": "50",
      "type": "default"
    },
    {
      "key": "after_id",
      "value": "0",
      "type": "default"
    },
    {
      "key": "payment_status",
      "value": "valid",
      "type": "default"
    },
    {
      "key": "include_custom_fields",
      "value": "false",
      "type": "default"
    },
    {
      "key": "include_deleted",
      "value": "false",
      "type": "default"
    },
    {
      "key": "updated_since",
      "value": "2026-08-01T00:00:00-03:00",
      "type": "default"
    },
    {
      "key": "updated_until",
      "value": "",
      "type": "default"
    }
  ]
}
