{"openapi":"3.1.0","info":{"title":"PGCC Admin","description":"Módulo de administração do PGCC","termsOfService":"http://swagger.io/terms/","license":{"name":"Apache 2.0","url":"http://springdoc.org"},"version":"v1"},"servers":[{"url":"/admin","description":"Caminho padrão"}],"security":[{"GCC-Token":[]}],"tags":[{"name":"Chaves Públicas","description":"API para gerenciamento de chaves públicas"}],"paths":{"/gcc/v1/chaves-publicas":{"get":{"tags":["Chaves Públicas"],"summary":"Consultar chaves públicas","description":"Exibe as chaves públicas da GCC","operationId":"consultarChavesPublicas","parameters":[{"name":"pagina","in":"query","description":"Número da página a ser consultada (padrão: 1)","required":false,"schema":{"type":"integer","format":"int32","exclusiveMinimum":0}},{"name":"quantidade","in":"query","description":"Quantidade de itens por página (padrão: 10)","required":false,"schema":{"type":"integer","format":"int32","exclusiveMinimum":0,"maximum":100}},{"name":"incluirRevogadas","in":"query","description":"Indica se chaves revogadas devem ser incluídas na resposta (padrão: false)","required":false,"schema":{"type":"boolean"}}],"responses":{"200":{"description":"Chaves públicas exibidas com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultaChavesRes"}}}},"404":{"description":"Página requisitada não encontrada","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}},"post":{"tags":["Chaves Públicas"],"summary":"Registrar chave pública","description":"Registra uma nova chave pública da GCC.\n\nO corpo da requisição deve conter apenas os _bytes_ da\n**chave pública** (ou seja, o conteúdo binário da chave pública, como no formato DER), respeitando o\ntipo de conteúdo `application/octet-stream`. Não deve ser enviado nenhum cabeçalho (_header_ ou\n_wrapper_) adicional.\n\nOs _bytes_ recebidos serão usados para verificar a assinatura digital de _hashes_ emitidos pela GCC.\n","operationId":"registrarChavePublica","requestBody":{"description":"Conteúdo da chave pública em formato binário (DER)","content":{"application/octet-stream":{"schema":{"type":"string","format":"byte"}},"application/x-x509-ca-cert":{"schema":{"type":"string","format":"byte"}}},"required":true},"responses":{"201":{"description":"Chave pública inserida com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistroChaveRes"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/gcc/v1/chaves-publicas/{id}":{"get":{"tags":["Chaves Públicas"],"summary":"Detalhar chave pública","description":"Detalha uma chave pública da GCC","operationId":"detalharChavePublica","parameters":[{"name":"id","in":"path","description":"ID da chave a ser detalhada","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-0000-0000-000000000000"}],"responses":{"200":{"description":"Chave pública encontrada com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetalheChaveRes"}}}},"404":{"description":"Chave pública não encontrada","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}},"delete":{"tags":["Chaves Públicas"],"summary":"Revogar chave pública","description":"Revoga uma chave pública da GCC","operationId":"revogarChavePublica","parameters":[{"name":"id","in":"path","description":"ID da chave a ser excluída","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-0000-0000-000000000000"}],"responses":{"200":{"description":"Chave pública revogada com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevogacaoChaveRes"}}}},"404":{"description":"Chave pública não encontrada","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}},"components":{"schemas":{"ChaveRegistradaDto":{"type":"object","properties":{"id":{"type":"string","description":"Identificador único da chave pública"},"cnpj":{"type":"string","description":"CNPJ da GCC associada à chave pública"},"chavePublica":{"type":"string","format":"byte","description":"Conteúdo da chave pública em formato byte array"},"dataCriacao":{"type":"string","format":"date-time","description":"Data e hora da criação da chave pública"}}},"RegistroChaveRes":{"type":"object","description":"Resposta do registro de chave pública","properties":{"chave":{"$ref":"#/components/schemas/ChaveRegistradaDto","description":"Chave pública registrada"}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"ChaveListadaDto":{"type":"object","properties":{"id":{"type":"string","description":"Identificador único da chave pública"},"chavePublica":{"type":"string","format":"byte","description":"Conteúdo da chave pública em formato byte array"},"dataCriacao":{"type":"string","format":"date-time","description":"Data de criação da chave pública"},"dataRevogacao":{"type":"string","format":"date-time","description":"Data de revogação da chave pública, se aplicável"}}},"ConsultaChavesRes":{"type":"object","description":"Resposta da consulta de chaves públicas","properties":{"chaves":{"type":"array","description":"Lista de chaves públicas listadas na consulta","items":{"$ref":"#/components/schemas/ChaveListadaDto"}},"paginaAtual":{"type":"integer","format":"int32","description":"Página atual da consulta"},"totalPaginas":{"type":"integer","format":"int32","description":"Total de páginas disponíveis na consulta"}}},"ChaveDetalhadaDto":{"type":"object","properties":{"id":{"type":"string","description":"Identificador único da chave pública"},"cnpj":{"type":"string","description":"CNPJ da GCC associada à chave pública"},"chavePublica":{"type":"string","format":"byte","description":"Conteúdo da chave pública em formato byte array"},"dataCriacao":{"type":"string","format":"date-time","description":"Data de criação da chave pública"},"dataRevogacao":{"type":"string","format":"date-time","description":"Data de revogação da chave pública, se aplicável"}}},"DetalheChaveRes":{"type":"object","description":"Resposta com o detalhe de uma chave pública","properties":{"chave":{"$ref":"#/components/schemas/ChaveDetalhadaDto","description":"Detalhes da chave pública"}}},"ChaveRevogadaDto":{"type":"object","properties":{"id":{"type":"string","description":"Identificador da chave pública"},"dataRevogacao":{"type":"string","format":"date-time","description":"Data e hora da revogação da chave pública"}}},"RevogacaoChaveRes":{"type":"object","description":"Resposta da revogação de uma chave pública","properties":{"chave":{"$ref":"#/components/schemas/ChaveRevogadaDto","description":"Chave pública revogada"}}}},"securitySchemes":{"GCC-Token":{"type":"mutualTLS","description":"Certificado da GCC usado na autenticação TLS mútua (mTLS).\nEste certificado é capturado automaticamente pelo Gateway de API."}}}}