Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 61 additions & 0 deletions docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,50 @@ const docTemplate = `{
}
}
},
"/uiapi/v2/orgao/media/{ano}": {
"get": {
"description": "Busca médias (remuneração base, outras remunerações, descontos e remuneração total) de cada órgão em um ano especificado.",
"produces": [
"application/json"
],
"tags": [
"ui_api"
],
"operationId": "GetAveragePerAgency",
"parameters": [
{
"type": "integer",
"description": "Ano para filtrar os dados",
"name": "ano",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Lista de dados de médias dos órgãos",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/uiapi.averagePerAgency"
}
}
},
"400": {
"description": "Parâmetro ANO inválido",
"schema": {
"type": "string"
}
},
"500": {
"description": "Erro ao buscar dados",
"schema": {
"type": "string"
}
}
}
}
},
"/uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes}": {
"get": {
"description": "Endpoint de resumo das remunerações mensal de um órgão. Fornece uma análise financeira abrangente para um órgão específico em um mês e ano determinados\n\nInformações Financeiras Detalhadas:\n- Remuneração base total e máxima\n- Outras remunerações e benefícios\n- Valor total de descontos\n- Contagem de membros\n- Análise de rubricas (penduricalhos) específicas\n\nContexto Adicional:\n- Marcadores de existência de dados anteriores/posteriores ao ano/mês consultados\n- Timestamp da coleta de dados\n- Detalhamento de diferentes tipos de remuneração (remuneração base, outras remunerações e descontos)",
Expand Down Expand Up @@ -1578,6 +1622,17 @@ const docTemplate = `{
}
}
},
"uiapi.averagePerAgency": {
"type": "object",
"properties": {
"id_orgao": {
"type": "string"
},
"media_por_membro": {
"$ref": "#/definitions/uiapi.perCapitaData"
}
}
},
"uiapi.backup": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1754,6 +1809,12 @@ const docTemplate = `{
"categoria_contracheque": {
"type": "string"
},
"desambiguacao_macro": {
"type": "string"
},
"desambiguacao_micro": {
"type": "string"
},
"detalhamento_contracheque": {
"type": "string"
},
Expand Down
61 changes: 61 additions & 0 deletions docs/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,50 @@
}
}
},
"/uiapi/v2/orgao/media/{ano}": {
"get": {
"description": "Busca médias (remuneração base, outras remunerações, descontos e remuneração total) de cada órgão em um ano especificado.",
"produces": [
"application/json"
],
"tags": [
"ui_api"
],
"operationId": "GetAveragePerAgency",
"parameters": [
{
"type": "integer",
"description": "Ano para filtrar os dados",
"name": "ano",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "Lista de dados de médias dos órgãos",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/uiapi.averagePerAgency"
}
}
},
"400": {
"description": "Parâmetro ANO inválido",
"schema": {
"type": "string"
}
},
"500": {
"description": "Erro ao buscar dados",
"schema": {
"type": "string"
}
}
}
}
},
"/uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes}": {
"get": {
"description": "Endpoint de resumo das remunerações mensal de um órgão. Fornece uma análise financeira abrangente para um órgão específico em um mês e ano determinados\n\nInformações Financeiras Detalhadas:\n- Remuneração base total e máxima\n- Outras remunerações e benefícios\n- Valor total de descontos\n- Contagem de membros\n- Análise de rubricas (penduricalhos) específicas\n\nContexto Adicional:\n- Marcadores de existência de dados anteriores/posteriores ao ano/mês consultados\n- Timestamp da coleta de dados\n- Detalhamento de diferentes tipos de remuneração (remuneração base, outras remunerações e descontos)",
Expand Down Expand Up @@ -1569,6 +1613,17 @@
}
}
},
"uiapi.averagePerAgency": {
"type": "object",
"properties": {
"id_orgao": {
"type": "string"
},
"media_por_membro": {
"$ref": "#/definitions/uiapi.perCapitaData"
}
}
},
"uiapi.backup": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -1745,6 +1800,12 @@
"categoria_contracheque": {
"type": "string"
},
"desambiguacao_macro": {
"type": "string"
},
"desambiguacao_micro": {
"type": "string"
},
"detalhamento_contracheque": {
"type": "string"
},
Expand Down
41 changes: 41 additions & 0 deletions docs/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,13 @@ definitions:
resumo_rubricas:
$ref: '#/definitions/uiapi.itemSummary'
type: object
uiapi.averagePerAgency:
properties:
id_orgao:
type: string
media_por_membro:
$ref: '#/definitions/uiapi.perCapitaData'
type: object
uiapi.backup:
properties:
hash:
Expand Down Expand Up @@ -495,6 +502,10 @@ definitions:
type: string
categoria_contracheque:
type: string
desambiguacao_macro:
type: string
desambiguacao_micro:
type: string
detalhamento_contracheque:
type: string
lotacao:
Expand Down Expand Up @@ -829,6 +840,36 @@ paths:
type: string
tags:
- ui_api
/uiapi/v2/orgao/media/{ano}:
get:
description: Busca médias (remuneração base, outras remunerações, descontos
e remuneração total) de cada órgão em um ano especificado.
operationId: GetAveragePerAgency
parameters:
- description: Ano para filtrar os dados
in: path
name: ano
required: true
type: integer
produces:
- application/json
responses:
"200":
description: Lista de dados de médias dos órgãos
schema:
items:
$ref: '#/definitions/uiapi.averagePerAgency'
type: array
"400":
description: Parâmetro ANO inválido
schema:
type: string
"500":
description: Erro ao buscar dados
schema:
type: string
tags:
- ui_api
/uiapi/v2/orgao/resumo/{orgao}/{ano}/{mes}:
get:
description: |-
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ toolchain go1.23.9

require (
github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12
github.com/dadosjusbr/storage v0.0.0-20250521134559-e17ec6ce3c9b
github.com/dadosjusbr/storage v0.0.0-20250527175952-898e1b7ea3a3
github.com/gocarina/gocsv v0.0.0-20220712153207-8b2118da4570
github.com/golang/mock v1.6.0
github.com/joho/godotenv v1.4.0
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12 h1:ufl8nbCEo6g2VH
github.com/dadosjusbr/proto v0.0.0-20221212025627-91c60aa3cd12/go.mod h1:gPA7VxjEmyez/xtln4qBj+tM1NO0/zcw3ryjxTRNSco=
github.com/dadosjusbr/storage v0.0.0-20250521134559-e17ec6ce3c9b h1:9hBbtKGqpa+njukDDsOTSJZBF/ixStpoHlZ3rJRI7LY=
github.com/dadosjusbr/storage v0.0.0-20250521134559-e17ec6ce3c9b/go.mod h1:y6Oi2/v4ebsTfgY8/ACqIA7IEApU8MoCRNBCl1iSlmI=
github.com/dadosjusbr/storage v0.0.0-20250527175952-898e1b7ea3a3 h1:yKu3lkCzvEtBjNY9FoBEHociNfazpnXhO6QKWFQxKx0=
github.com/dadosjusbr/storage v0.0.0-20250527175952-898e1b7ea3a3/go.mod h1:y6Oi2/v4ebsTfgY8/ACqIA7IEApU8MoCRNBCl1iSlmI=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
Expand Down
11 changes: 7 additions & 4 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,10 +82,10 @@ func newS3Client(c config) (*file_storage.S3Client, error) {
return s3Client, nil
}

// @title API do dadosjusbr.org
// @version 1.0
// @contact.name DadosJusBr
// @contact.url https://dadosjusbr.org
// @title API do dadosjusbr.org
// @version 1.0
// @contact.name DadosJusBr
// @contact.url https://dadosjusbr.org
func main() {
godotenv.Load() // There is no problem if the .env can not be loaded.
l, err := time.LoadLocation("America/Sao_Paulo")
Expand Down Expand Up @@ -199,7 +199,10 @@ func main() {
uiAPIGroup.GET("/v2/pesquisar", uiApiHandler.SearchByUrl)
// Baixa um conjunto de dados a partir de filtros informados por query params
uiAPIGroup.GET("/v2/download", uiApiHandler.DownloadByUrl)
// Baixa o readme do pacote de dados
uiAPIGroup.GET("/v2/readme", uiApiHandler.DownloadReadme)
// Retorna a média (base, benefícios, descontos e remuneração) de cada órgão em um ano
uiAPIGroup.GET("/v2/orgao/media/:ano", uiApiHandler.GetAveragePerAgency)

apiHandler := papi.NewHandler(pgS3Client, conf.DadosJusURL, conf.PackageRepoURL)
// Public API configuration
Expand Down
Loading