Skip to main content

O que é Adesão?

Adesão (ou “carona”) permite que um órgão compre usando uma ATA de outro órgão, sem fazer nova licitação.

Vantagem

Compra rápida - sem licitação

Requisito

ATA deve estar vigente

Passo a Passo

1. Encontre ATAs vigentes

import requests
from datetime import date

API_KEY = "ak_sua_chave"
BASE = "https://api.ata360.com.br"
headers = {"Authorization": f"Bearer {API_KEY}"}

# Buscar ATAs vigentes para Papel A4
resp = requests.get(f"{BASE}/api/items/vigentes",
    params={"codigo": 150233},
    headers=headers
)
atas = resp.json()["atas"]

print(f"Encontradas {len(atas)} ATAs vigentes")

2. Filtre por estado

# ATAs vigentes no Paraná
resp = requests.get(f"{BASE}/api/items/vigentes",
    params={"codigo": 150233, "uf": "PR"},
    headers=headers
)
atas_pr = resp.json()["atas"]

for ata in atas_pr[:5]:
    print(f"ATA: {ata['numero_controle_pncp_ata']}")
    print(f"  Preço: R$ {ata['valor_unitario']:.2f}")
    print(f"  Fornecedor: {ata['nome_fornecedor']}")
    print(f"  Válida até: {ata['data_vigencia_final']}")
    print()

3. Ordene por preço

# Ordenar do mais barato ao mais caro
atas_ordenadas = sorted(atas, key=lambda x: x["valor_unitario"])

print("Top 5 menores preços:")
for i, ata in enumerate(atas_ordenadas[:5], 1):
    print(f"{i}. R$ {ata['valor_unitario']:.2f} - {ata['nome_fornecedor']}")

4. Verifique detalhes da ATA escolhida

from urllib.parse import quote

ata_id = atas_ordenadas[0]["numero_controle_pncp_ata"]
encoded_id = quote(ata_id, safe="")

# Buscar detalhes completos
resp = requests.get(f"{BASE}/api/atas/{encoded_id}", headers=headers)
ata_completa = resp.json()

print(f"Órgão gerenciador: {ata_completa['metadata']['nomeOrgao']}")
print(f"Objeto: {ata_completa['metadata']['objetoContratacao']}")
print(f"Vigência: {ata_completa['metadata']['vigenciaInicio']} a {ata_completa['metadata']['vigenciaFim']}")

5. Baixe os documentos

# Baixar PDFs para análise
resp = requests.get(f"{BASE}/api/atas/{encoded_id}/arquivos", headers=headers)
arquivos = resp.json()["arquivos"]

for arq in arquivos:
    print(f"- {arq['titulo']}: {arq['url']}")

Script Completo

def buscar_ata_para_adesao(codigo_item, uf=None, max_resultados=10):
    """
    Busca ATAs vigentes para adesão, ordenadas por preço
    """
    params = {"codigo": codigo_item}
    if uf:
        params["uf"] = uf

    resp = requests.get(f"{BASE}/api/items/vigentes",
        params=params,
        headers=headers
    )
    atas = resp.json()["atas"]

    # Ordenar por preço
    atas_ordenadas = sorted(atas, key=lambda x: x["valor_unitario"])

    print(f"{'='*60}")
    print(f"ATAs VIGENTES PARA ADESÃO")
    print(f"Item: {codigo_item} | UF: {uf or 'Todas'}")
    print(f"{'='*60}")

    for i, ata in enumerate(atas_ordenadas[:max_resultados], 1):
        print(f"\n{i}. ATA: {ata['numero_controle_pncp_ata']}")
        print(f"   Preço: R$ {ata['valor_unitario']:.2f}")
        print(f"   Fornecedor: {ata['nome_fornecedor']}")
        print(f"   UF: {ata['uf']}")
        print(f"   Válida até: {ata['data_vigencia_final']}")
        print(f"   Qtd disponível: {ata.get('quantidade_disponivel', 'N/A')}")

    return atas_ordenadas[:max_resultados]

# Uso
melhores_atas = buscar_ata_para_adesao(150233, uf="PR")

Checklist para Adesão

1

Verificar vigência

A ATA deve estar dentro do período de validade
2

Verificar quantidade

Deve haver quantidade disponível para adesão
3

Contatar órgão gerenciador

Solicitar autorização para adesão
4

Contatar fornecedor

Confirmar que aceita fornecer para seu órgão
5

Formalizar adesão

Emitir termo de adesão e empenho
Nem toda ATA permite adesão. Verifique no edital se há previsão de “carona”.