Overview
The SIORG API provides the official organizational structure of the Brazilian Federal Executive Branch. SIORG codes identify ministries, agencies, departments, and other organizational units.
Why it matters for tesouror: The CUSTOS
API uses SIORG codes in the organizacao_n1,
organizacao_n2, and organizacao_n3 parameters.
The SIORG functions serve as dictionaries to look up
these codes.
Looking up organization codes
Step 1: List top-level organizations (N1)
library(tesouror)
library(dplyr)
# List all federal executive branch organizations
orgaos <- get_siorg_organizations(power_code = 1, sphere_code = 1)
# Key columns:
# codigo_unidade – SIORG code (use as organizacao_n1 in CUSTOS)
# codigo_unidade_pai – parent unit code
# nome – organization name
# sigla – abbreviation
# codigo_tipo_unidade – "orgao" or "entidade"
# codigo_natureza_juridica – 1=Empresa Pública, 2=Fundação, 3=Adm.Direta, 4=Autarquia
# Find the Ministry of Education
mec <- orgaos |> filter(grepl("Educação", nome), codigo_tipo_unidade == "orgao")
mec |> select(codigo_unidade, nome, sigla)
# codigo_unidade = "244" → this is the org_level1 for CUSTOSStep 2: Browse sub-units (N2, N3)
The codigo_unidade_pai column lets you navigate the
hierarchy. Units whose codigo_unidade_pai matches the
ministry’s code are direct children (N2 level). Their children are
N3.
# All organizations under MEC (direct children = N2)
mec_children <- orgaos |>
filter(codigo_unidade_pai == "244") |> # MEC's code
select(codigo_unidade, nome, sigla, codigo_tipo_unidade)
mec_children
# Examples: INEP (249), FNDE (253), CAPES (478), etc.
# For deeper structure, use get_siorg_structure()
estrutura <- get_siorg_structure(unit_code = 244)
estrutura |> select(codigo_unidade, codigo_unidade_pai, nome, sigla)Step 3: Use in CUSTOS queries
SIORG returns plain codes like "244", but the CUSTOS API
expects zero-padded 6-digit strings like "000244". The
package pads automatically — just pass the SIORG code directly:
# Active staff costs for MEC — "244" is auto-padded to "000244"
custos_mec <- get_costs_active_staff(
year = 2023,
org_level1 = 244 # numeric or character, both work
)
# Drill down to INEP
custos_inep <- get_costs_active_staff(
year = 2023,
org_level1 = 244,
org_level2 = 249 # auto-padded to "000249"
)Step 4: Get details of a single unit
# Full details for AGU (code 46)
agu <- get_siorg_unit(unit_code = 46)
agu |> select(codigo_unidade, nome, sigla, codigo_natureza_juridica)Functions
| Portuguese | English | Description |
|---|---|---|
get_siorg_orgaos() |
get_siorg_organizations() |
List organizations (organs + entities) |
get_siorg_estrutura() |
get_siorg_structure() |
Get organizational structure tree |
get_siorg_unidade() |
get_siorg_unit() |
Get details of a single unit |
Parameter mapping
SIORG codes in CUSTOS
The CUSTOS API uses SIORG codes as 6-digit zero-padded strings (e.g.,
"000244"). The package auto-pads plain codes, so you can
pass 244, "244", or "000244" —
all work.
The CUSTOS response also includes co_organizacao_n0 (the
top-level authority, e.g., Presidência da República =
"000026"), which is not a query parameter but appears in
the results.
| CUSTOS parameter | How to find in SIORG | Example |
|---|---|---|
organizacao_n1 /
org_level1
|
Top-level org: codigo_unidade where
codigo_tipo_unidade == "orgao"
|
244 → auto-padded to "000244"
(MEC) |
organizacao_n2 /
org_level2
|
Child of N1: codigo_unidade where
codigo_unidade_pai == "<N1 code>"
|
249 → "000249" (INEP) |
organizacao_n3 /
org_level3
|
Child of N2: use get_siorg_structure() for
deeper levels |
40523 → "040523"
|
Response columns
Key columns returned by get_siorg_orgaos() /
get_siorg_organizations():
| Column | Description |
|---|---|
codigo_unidade |
SIORG code (use as organizacao_n1/n2/n3 in
CUSTOS) |
codigo_unidade_pai |
Parent unit’s SIORG code (for navigating the hierarchy) |
nome |
Full name of the organization |
sigla |
Abbreviation (e.g., "MEC",
"INEP") |
codigo_tipo_unidade |
"orgao" or "entidade"
|
codigo_natureza_juridica |
1 = Empresa Pública, 2 =
Fundação, 3 = Adm. Direta, 4 = Autarquia |
codigo_esfera |
1 = Federal, 2 =
State/District |
codigo_poder |
1 = Executive, 2 =
Legislative, 3 = Judiciary |