===== Como encontrar dados de contratações =====
- pncp.gov.br, no quadro contratações
- o link levará para: https://pncp.gov.br/app/editais?q=&status=recebendo_proposta&pagina=1
- em geral, marca-se o encerradas" para ver as contratações cujo processo já foi realizado
- por exemplo: https://pncp.gov.br/app/editais/63025530000104/2026/69
- em arquivos, costuma ter o PDF do edital
- a seção **informação complementar** tem o código para acompanhar a contratação (o botão está com problema). neste caso é: 10212805910022026
- acessa a contratação: https://cnetmobile.estaleiro.serpro.gov.br/comprasnet-web/public/compras/acompanhamento-compra?compra=10212805910022026
Caso se tratar de uma contratação da USP, dá para ver mais documentos em: https://portalservicos.usp.br/contratacoes/banco/precos/
===== API do compras.gov =====
# documentação
https://pncp.gov.br/api/pncp/swagger-ui/index.html
# geral
https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/2026/csv
# pega o sequencial da unidade
https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/{uasg}/2026/sequenciaisplano
# pegar os itens da sua unidade
https://pncp.gov.br/api/pncp/v1/orgaos/63025530000104/pca/2026/{sequencial}/itens
===== gerador de "etiqueta" para TR =====
from datetime import datetime
import json
import requests
import sys
pca_id = 63025530000104
ano = 2026
uasg = 102136
numero = int(sys.argv[1]) if len(sys.argv) > 1 else 1
geral = "https://pncp.gov.br/api/pncp/v1/orgaos/{pca_id}/pca/{uasg}/{ano}/sequenciaisplano".format(pca_id=pca_id, uasg=uasg, ano=ano)
r = requests.get(geral)
tmp = json.loads(r.text)
sequencial = tmp['sequencialPlano']
itens = "https://pncp.gov.br/api/pncp/v1/orgaos/{pca_id}/pca/{ano}/{sequencial}/itens".format(pca_id=pca_id, ano=ano, sequencial=sequencial)
r = requests.get(itens)
pca = json.loads(r.text)
dfd = [d for d in pca if d['numeroItem'] == numero].pop()
data = datetime.strptime(dfd['dataPublicacaoPncp'], "%Y-%m-%dT%H:%M:%S")
print("ID PCA no PNCP: {pca_id}-0-{sequencial}/{ano};".format(pca_id=pca_id, sequencial=f"{sequencial:06d}", ano=ano))
print("Data de publicação no PNCP: {data};".format(data=data.strftime("%d/%m/%Y")))
print("Id do item no PCA: {uasg}-{sequencial}/{ano}-{numero};".format(uasg=uasg, sequencial=sequencial, ano=ano, numero=numero))
print("Classe/Grupo: {classe_codigo} - {classe_nome};".format(classe_codigo=dfd['classificacaoSuperiorCodigo'], classe_nome=dfd['classificacaoSuperiorNome']))
print("Identificador da Futura Contratação: {futura_id}.".format(futura_id=dfd['grupoContratacaoCodigo']))