Registry entry

Brazil Passport Application (SINPA)

Application for a Brazilian passport — first-time issuance, renewal, or replacement of a lost, stolen, retained, or expired passport — for an applicant who will be 18 or older, filed through the Federal Police's (Polícia Federal) own online passport-request system, SINPA (Sistema Nacional de Passaportes). Unlike most jurisdictions in this registry, Brazil uses a single unified online wizard for every request scenario rather than separate forms per scenario; the applicant's prior-passport situation (never had one, holds a valid one, lost, stolen, retained, or expired) is itself a field on the form (previousPassportStatus), so this document models that single wizard rather than splitting first-time/renewal/lost into separate schemas. Completing the wizard produces a protocol number and a personalized document checklist; the applicant then pays the federal fee (GRU), books an in-person biometric appointment, and attends with original documents. This document models only the online data-entry wizard (the four tabs: Dados pessoais, Documentos, Dados complementares, Revisar dados) — it does not submit the request, generate the GRU payment slip, or book the appointment. Applicants under 18 use the same wizard but the form additionally requires the CPF of a responsible party, a travel-authorization election, and the nationality of both parents — none of which is modeled here (see VERIFICATION.md).

Registry entry

br/pf/passport-application

Jurisdiction
Brazil · national
Version
1.0.0
Verification
draft

Authoritative source SINPA (Sistema Nacional de Passaportes) — "Nova solicitação de passaporte" online wizard, Divisão de Passaporte, Polícia Federal

Machine access

Schema document
registry/br/pf/passport-application/1.0.0/schema.jsonapplication/schema+json
Registry catalog
registry/index.jsonone record per schema id

Field reference

49 fields across 4 steps, read from the published schema.json, with names, types, requiredness, and validation as the document states them. The live government form remains the authoritative source.

Dados pessoais

  • fullName string required

    Full legal name. The review step warns that, per the ICAO international standard, surnames may be abbreviated when printed on the physical passport.

    length: 1–80classification: pii
  • sex enum required

    Sex as recorded for the passport.

    enum: male | female | unspecifiedclassification: pii
  • parent1Name string optional

    Full name of the applicant's first parent, as recorded in the civil registry document (birth or marriage certificate). Left blank only if the civil registry document itself does not record this parent.

    length: 0–80classification: pii
  • parent1Sex enum optional

    Sex of the first parent named in parent1Name.

    enum: male | female | unspecified
  • parent2Name string optional

    Full name of the applicant's second parent, as recorded in the civil registry document. Left blank only if the civil registry document itself does not record this parent.

    length: 0–80classification: pii
  • parent2Sex enum optional

    Sex of the second parent named in parent2Name.

    enum: male | female | unspecified
  • dateOfBirth date required

    The live form displays this as a DD/MM/AAAA masked text input; represent as an ISO 8601 full-date. This document is scoped to applicants who will be 18 or older: the same wizard, for a minor applicant, additionally requires a responsible party's CPF, a travel-authorization election, and both parents' nationality, none of which is modeled in this v1.0.0 document (see VERIFICATION.md).

    classification: pii
  • isEmancipatedMinor boolean optional

    Check if the applicant is a legally emancipated minor (emancipação, under Brazilian civil law). Present on the wizard regardless of computed age; out-of-scope minor-only fields elsewhere on the form are not modeled here.

  • isInternationalAdoption boolean optional

    Check if the applicant is in the process of international adoption.

  • raceOrColor enum required

    Self-declared race/color, following the IBGE (Brazilian Institute of Geography and Statistics) census categories.

    enum: 7 valuesclassification: pii
  • maritalStatus enum optional

    Estado civil

    enum: single | married | widowed | legally_separated | divorced | stable_union
  • nationality string required

    Chosen from a closed country dropdown (over 190 countries plus APATRIDA/stateless), defaulting to BRASIL. The form's own note instructs Brazilians with multiple nationalities to select Brasil.

    length: 0–40classification: pii
  • countryOfBirth string required

    Country of birth, chosen from the same closed country dropdown as nationality.

    length: 0–40classification: pii
  • stateOfBirth enum optional

    Brazilian state of birth. Required only when countryOfBirth is Brazil.

    enum: 27 values
  • cityOfBirth string optional

    City of birth within the selected Brazilian state, chosen from a state-dependent city dropdown (with a free-text fallback for a city not listed). Required only when countryOfBirth is Brazil.

    length: 0–30classification: pii
  • cityOfBirthAbroad string optional

    Free-text city of birth, used when countryOfBirth is not Brazil (the city dropdown only populates for Brazilian states).

    length: 0–30classification: pii
  • previousName string optional

    A previous legal name, if the applicant's name has changed. Leave blank if the applicant has never used a different legal name. If provided, previousNameChangeReason should also be provided (the source form pairs a free-text name with a reason dropdown and an 'Adicionar' button, letting more than one previous name be listed one at a time; this document models a single previous-name entry).

    length: 0–80classification: pii
  • previousNameChangeReason enum optional

    Reason for the previous name change named in previousName.

    enum: marital_status_change | judicial_decision | other_reason

Documentos

  • idDocumentNumber string optional

    Number of the applicant's national identity document (RG or equivalent).

    length: 0–20classification: pii
  • idDocumentIssueDate date optional

    The live form displays this as a DD/MM/AAAA masked text input; represent as an ISO 8601 full-date.

  • idDocumentIssuingAgency string optional

    Documento de Identificação — Órgão emissor

    length: 0–10
  • idDocumentIssuingState enum optional

    Documento de Identificação — UF de expedição

    enum: 27 values
  • cpf string optional

    Brazil's individual taxpayer registry number (Cadastro de Pessoas Físicas), masked on the form as ___.___.___-__.

    patternclassification: sensitive-pii
  • birthCertificateIsNewModel boolean optional

    Whether the birth or marriage certificate follows Brazil's unified post-2010 certificate model, which carries a matrícula (registration) number. If true, birthCertificateRegistrationNumber becomes the certificate's identifying reference.

  • birthCertificateRegistrationNumber string optional

    The unified certificate's matrícula number. Only entered (the source form disables this field otherwise) when birthCertificateIsNewModel is true.

    length: 0–32classification: pii
  • certificateType enum optional

    Certidão — Tipo

    enum: birth_certificate | marriage_certificate
  • certificateNumber string optional

    Certidão — Número

    length: 0–8
  • certificateBook string optional

    Certidão — Livro

    length: 0–4
  • certificatePage string optional

    Certidão — Folha

    length: 0–5
  • certificateRegistryOffice string optional

    The notary/registry office (cartório) that issued the birth or marriage certificate.

    length: 0–50
  • certificateIssuingState enum optional

    Certidão — UF de expedição

    enum: 27 values
  • certificateIssuingCity string optional

    City where the certificate was issued, chosen from a state-dependent city dropdown (with a free-text fallback for a city not listed).

    length: 0–30
  • previousPassportStatus enum required

    The applicant's prior-passport situation. This single field is what distinguishes a first-time application from a renewal, replacement of a lost/stolen document, or a document retained by an authority — Brazil's online wizard handles every scenario through one form rather than a separate form per scenario.

    enum: 7 values
  • previousPassportSeries string optional

    The two-letter series of the previous passport (e.g. for passport CP999999, the series is CP). Required whenever the applicant has held a previous passport.

    length: 0–2classification: pii
  • previousPassportNumber string optional

    The numeric part of the previous passport (e.g. for passport CP999999, the number is 999999). Required whenever the applicant has held a previous passport.

    length: 0–6classification: pii

Dados complementares

  • occupation string required

    Chosen from Brazil's official CBO (Classificação Brasileira de Ocupações) occupation list, a closed dropdown of several thousand entries on the source form. If the applicant's occupation is not listed, otherOccupation is used instead.

    length: 0–60
  • otherOccupation string optional

    Free-text occupation, completed only when the applicant's occupation is not in the closed CBO list.

    length: 0–30
  • email string required

    E-mail

    patternlength: 0–50classification: pii
  • emailConfirmation string required

    Must exactly match email.

    patternlength: 0–50classification: pii
  • countryOfResidence string required

    Country of current residence, chosen from the same closed country dropdown as nationality, defaulting to BRASIL.

    length: 0–40classification: pii
  • postalCode string required

    Brazilian postal code (Código de Endereçamento Postal), masked on the form as _____-___. The live form auto-loads the matching address when a valid CEP is entered and the field loses focus.

    patternclassification: pii
  • stateOfResidence enum optional

    Required only when countryOfResidence is Brazil.

    enum: 27 values
  • cityOfResidence string optional

    Chosen from a state-dependent city dropdown. Required only when countryOfResidence is Brazil.

    length: 0–30classification: pii
  • cityOfResidenceAbroad string optional

    Free-text city of residence, used when countryOfResidence is not Brazil.

    length: 0–30classification: pii
  • streetAddress string required

    Logradouro

    length: 0–100classification: pii
  • neighborhood string required

    Distrito/Bairro

    length: 0–50classification: pii
  • areaCode string optional

    Brazilian telephone area code (2 digits), paired with phoneNumber.

    length: 0–2classification: pii
  • phoneNumber string optional

    Telefone

    length: 0–10classification: pii

Revisar dados

  • declarationInformationCorrect boolean required

    Declaration that the information above is correct, and acknowledgement that any error in the data will delay issuance of the travel document.

Verification record

This file is the source-review record for this document version, per the manual-source-review-v1 practice.

Current claim

  • status: draft
  • verification.method: manual-source-review-v1
  • verification.lastVerifiedAt: 2026-07-06

The document was derived from a directly-read live source: the Federal Police's own SINPA (Sistema Nacional de Passaportes) online passport-request wizard, read field-by-field from the live, unauthenticated DOM. It remains draft, not verified, pending an independent second reviewer's field-by-field pass.

Why this document exists

This cycle (GOV-1364, the recurring GovSchema Standard Research routine) picked up Brazil's remaining un-scouted verticals. Brazil opened as the registry's 15th jurisdiction under GOV-1342/GOV-1296 with a single Business Formation schema (br/sp/jucesp/cnpj-registration-dbe); its Passport, DMV, Visa, and National ID verticals had not yet been researched (its only other candidate, GOV-1295 — Receita Federal individual income tax — was found too fragmentary to source safely and remains open in the backlog, not attempted again this cycle). This cycle scouted Brazil's Passport process and found a genuinely strong source: the Polícia Federal's own live online application wizard, reachable with no login, no CAPTCHA, and no IP block.

Source examined

Extraction method

Unlike most prior cycles' PDF/StreamDocs/screenshot-vision techniques, SINPA is a genuinely live, unauthenticated, four-tab HTML wizard (Dados pessoais / Documentos / Dados complementares / Revisar dados) with no CAPTCHA and no gov.br SSO gate — the strongest sourcing shape available: the actual page DOM, not a rendered image of it. Worked per [[browser-screenshots-setup]] (Playwright-core + Chromium already installed at /tmp/shotter from a prior cycle, LD_LIBRARY_PATH pointed at /paperclip/chrome-sysroot):

  1. Navigated directly to the wizard's entry URL. networkidle load, no redirect to any login page.
  2. All four tabs' HTML (including the later Documentos/Dados complementares/Revisar dados tabs, which are shown/hidden client-side rather than lazily fetched) are present in a single page load. Ran document.querySelectorAll('input, select, textarea') across the full DOM and recorded every element's id, name, type, maxLength, associated label text, and (for <select>) every <option>'s underlying value and visible text — not a truncated or paraphrased list.
  3. Screenshotted each of the four tabs directly (clicking the tab headers, which does not require passing client-side validation the way the "PRÓXIMO" step buttons do) to corroborate the extracted field inventory against the rendered layout and confirm section groupings/labels.
  4. Confirmed the CPF field (___.___.___-__) and CEP field (_____-___) input masks directly from the rendered screenshots, grounding this document's cpf/postalCode pattern validation.
  5. Read the exact worked example text next to the previous-passport series/number fields verbatim from the screenshot ("Exemplo: Para o passaporte CP999999 a série é CP e o número é 999999"), now reproduced in previousPassportSeries/previousPassportNumber's description.
  6. Did not click the final "ENVIAR" (submit) button at any point, and did not fill in any field with a real person's data — per GOVERNANCE.md, GovSchema describes and verifies processes, it does not submit them. Two supporting pages (gov.br/pt-br/servicos/obter-passaporte-comum-para-brasileiro, gov.br/pf/pt-br/assuntos/passaporte/documentacao/formulario/preenchendo) were also fetched directly to corroborate the overall process narrative (protocol number → GRU fee payment → in-person biometric appointment → pickup) described in this document's top-level description.

What was confirmed directly (verbatim, from the live DOM)

  • Dados pessoais tab: every field id/name/maxlength listed above; sexo's three coded option values (M/F/X); racaCor's seven IBGE categories (codes 1/2/3/4/5/8/9 — the select has an eighth, blank placeholder <option> that is not itself a category) with their numeric option codes; estadoCivil's six categories; the "Local de nascimento" country/UF/city cascading structure, including the distinct free-text city field used only when the country of birth isn't Brazil; the "Nomes anteriores" previous-name-plus-reason-dropdown pattern (three reason codes).
  • Documentos tab: the "Documento de Identificação" (RG) sub-block; the CPF and CPF-do-responsável fields (the latter deliberately excluded from this document — see Out of scope); the "Certidão" sub-block including the disabled-until-checked Matrícula field for the new unified certificate model, and the type/number/book/page/registry-office/state/city fields; the "Passaporte Anterior" Situação* dropdown's all seven option values verbatim, which is the field that lets one wizard cover first-time, renewal, lost, stolen, and retained-by-authority scenarios without a separate form per scenario — this is the central structural finding of this document.
  • Dados complementares tab: the large CBO occupation dropdown (confirmed large/closed, not enumerated per the au/apo-style precedent for free-text-modeled closed country/occupation dropdowns); the email + email-confirmation pair (grounding the emailMatchesConfirmation crossFieldValidation rule); the address sub-block's country/CEP/UF/city cascading structure (mirroring the birth-place structure) plus logradouro/bairro/DDD/telefone.
  • Revisar dados tab: the mandatory declaration checkbox text verbatim ("Declaro que as informações acima estão corretas e que estou ciente de que qualquer erro nos dados implicará em atraso na emissão do meu documento de viagem."), and the ICAO-surname-truncation warning now reflected in fullName's description.

What is out of scope for v1.0.0

  • Applicants under 18. The wizard is the same for a minor applicant, but the DOM additionally carries cpfResponsavel (CPF of the responsible party), an autorizacaoViagem three-option radio group (a minor's travel-authorization election), and paisNacionalidadeFiliacao1/2 (each parent's nationality) — none of which are modeled here. These fields sit on the Documentos/Dados complementares tabs and are always present in the DOM (the tab-based show/hide made it impractical to confirm, within this cycle's time budget, the exact client-side age threshold that reveals them), so this document is deliberately scoped to an applicant who will be 18 or older rather than guessing at the minor-specific conditional logic. A follow-up cycle could re-render with a page.selectOption/blur-driven age check to confirm the exact trigger and add a br/pf/passport-application-minor companion document.
  • checkEmancipado/checkAdocaoInternacional are included as fields (isEmancipatedMinor/isInternationalAdoption) since they are static, always-visible checkboxes on the Dados pessoais tab regardless of computed age — these are genuinely in scope.
  • Physical document checklist, GRU fee payment, and appointment booking. The wizard itself states it generates "a personalized document checklist" after the data-entry steps and that a separate GRU (Guia de Recolhimento da União) payment and in-person biometric appointment follow — none of this is part of the online wizard modeled here, and no fee amount is encoded (fees change; not stated on the wizard itself either).
  • documents[] (GSP-0014). The concrete physical-document checklist (RG original, birth/marriage certificate original, etc.) is generated dynamically by the live system after this wizard's data is submitted and was not independently sourced this cycle (a candidate source, gov.br/pf/pt-br/assuntos/passaporte/documentacao/lista-brasileiro, is noted for a follow-up cycle). Left absent rather than guessed.
  • Help-tooltip content behind the three orange "?" icons (Documento de Identificação, Certidão, Passaporte Anterior sections) — clicking them in headless Chromium did not reliably surface a distinct DOM overlay within this cycle's time budget; every field this document models was confirmed from the base form fields/labels/options directly, not from tooltip content, so this gap does not affect field accuracy, only some possibly-richer field descriptions.
  • Brazil's other three verticals (DMV, Visa, National ID) remain unresearched — candidates for a future cycle.

Mock-data conformance check (Phase 4)

A fabricated, non-submitting mock application packet lives at conformance/br/pf/passport-application/1.0.0/application-packet.json (+ .txt rendering). It was run against every requiredWhen/crossFieldValidation rule in this schema with a small mutation-testing script (baseline plus 10 deliberately-broken variants: missing conditional Brazil-birth fields, missing conditional abroad-birth field, missing previous-passport series/number when a prior passport is held, missing the new-model certificate registration number, a mismatched email confirmation, a false declaration, an invalid CPF pattern, and an invalid enum value) — every variant produced exactly the expected violation, and the unmodified baseline produced none. This document was not submitted to servicos.pf.gov.br or any other live system at any point, per GOVERNANCE.md.

Path to a verified claim (next step)

To advance this document to status: verified, a reviewer needs to independently re-render the same live SINPA wizard, re-check every sourceRef against it field by field, confirm the minor-applicant conditional logic (see Out of scope), and confirm no newer wizard revision has changed the field set.

Re-verification

Per the practice's Cadence, nextReviewBy is set to 2027-01-06 (~6 months): this is the registry's first Brazilian Passport document and the first document in this registry sourced by direct live-DOM extraction rather than a PDF/image/screenshot technique — the shorter end of the cadence is appropriate until the technique and the minor-applicant scope boundary are independently confirmed. Re-check the source, and confirm no newer wizard revision has been published, on or before that date and on any source.url change.

View the raw record (VERIFICATION.md)

Version history

  • 1.0.0 draft latest this page has verification record schema.json

Independent and non-affiliated

GovSchema is an independent, open-source project. This reference is not produced, reviewed, or endorsed by Polícia Federal — Divisão de Passaporte, Coordenação-Geral de Polícia de Imigração or any government. The authoritative source is always the live government form and its official instructions.