{"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":"Webhooks","description":"API para gerenciamento de webhooks"}],"paths":{"/gcc/v1/webhooks/{id}":{"get":{"tags":["Webhooks"],"summary":"Detalhar webhook","description":"Exibe os detalhes de um webhook específico da GCC","operationId":"detalharWebhook","parameters":[{"name":"id","in":"path","description":"ID do webhook a ser detalhado","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-0000-0000-000000000000"}],"responses":{"200":{"description":"Detalhes do webhook exibidos com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetalheWebhookRes"}}}},"404":{"description":"Webhook não encontrado","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}},"put":{"tags":["Webhooks"],"summary":"Atualizar webhook","description":"Atualiza um webhook da GCC","operationId":"atualizarWebhook","parameters":[{"name":"id","in":"path","description":"ID do webhook a ser detalhado","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-0000-0000-000000000000"}],"requestBody":{"description":"Dados para atualização do webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtualizacaoWebhookReq"}}},"required":true},"responses":{"200":{"description":"Webhook atualizado com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtualizacaoWebhookRes"}}}},"404":{"description":"Webhook não encontrado","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":["Webhooks"],"summary":"Excluir webhook","description":"Exclui um webhook da GCC","operationId":"excluirWebhook","parameters":[{"name":"id","in":"path","description":"ID do webhook a ser detalhado","required":true,"schema":{"type":"string","format":"uuid"},"example":"00000000-0000-0000-0000-000000000000"}],"responses":{"200":{"description":"Webhook excluído com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExclusaoWebhookRes"}}}},"404":{"description":"Webhook não encontrado","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}},"/gcc/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"Consultar webhooks","description":"Exibe os webhooks da GCC","operationId":"consultarWebhooks","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}}],"responses":{"200":{"description":"Webhooks exibidos com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsultaWebhookRes"}}}},"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":["Webhooks"],"summary":"Registrar webhook","description":"Registra um novo webhook para o cliente","operationId":"registrarWebhook","requestBody":{"description":"Dados para registro do webhook","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistroWebhookReq"}}},"required":true},"responses":{"201":{"description":"Webhook inserido com sucesso","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistroWebhookRes"}}}},"400":{"description":"Requisição inválida","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}},"components":{"schemas":{"AtualizacaoWebhookReq":{"type":"object","description":"Requisição para atualização de webhook. Campos nulos ou não presentes são ignorados.","properties":{"url":{"type":"string","description":"Nova URL do webhook","example":"https://meu-webhook.com/endpoint"},"chaveAcesso":{"type":"string","description":"Chave de acesso (Bearer) do webhook. Envie um texto em branco para desabilitar."}}},"AtualizacaoWebhookRes":{"type":"object","description":"Resposta de atualização de webhook","properties":{"webhook":{"$ref":"#/components/schemas/WebhookAtualizadoDto"}}},"WebhookAtualizadoDto":{"type":"object","description":"Dados do webhook atualizado","properties":{"id":{"type":"string","description":"Identificador único do webhook"},"url":{"type":"string","description":"URL do webhook"},"chaveAcesso":{"type":"string","description":"Chave de acesso (Bearer) do webhook"},"dataAtualizacao":{"type":"string","format":"date-time","description":"Data e hora da última atualização do webhook"}}},"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":{}}}},"RegistroWebhookReq":{"type":"object","description":"Requisição para o registro de um novo webhook","properties":{"url":{"type":"string","description":"URL do webhook","example":"https://meu-webhook.com/endpoint"},"chaveAcesso":{"type":"string","description":"Chave de acesso (Bearer) do webhook"}}},"RegistroWebhookRes":{"type":"object","description":"Resposta do registro de um novo webhook","properties":{"webhook":{"$ref":"#/components/schemas/WebhookRegistradoDto","description":"Dados do webhook registrado"}}},"WebhookRegistradoDto":{"type":"object","description":"Dados do webhook registrado","properties":{"id":{"type":"string","description":"Identificador único do webhook"},"url":{"type":"string","description":"URL do webhook"},"dataCriacao":{"type":"string","format":"date-time","description":"Data e hora de criação do webhook"}}},"ConsultaWebhookRes":{"type":"object","description":"Resposta da consulta de webhooks","properties":{"webhooks":{"type":"array","description":"Lista de webhooks cadastrados","items":{"$ref":"#/components/schemas/WebhookListadoDto"}},"paginaAtual":{"type":"integer","format":"int32","description":"Página atual da consulta"},"totalPaginas":{"type":"integer","format":"int32","description":"Quantidade total de páginas disponíveis"}}},"WebhookListadoDto":{"type":"object","description":"Dados de um webhook","properties":{"id":{"type":"string","description":"Identificador único do webhook"},"url":{"type":"string","description":"URL do webhook"},"dataCriacao":{"type":"string","format":"date-time","description":"Data e hora de criação do webhook"},"dataAtualizacao":{"type":"string","format":"date-time","description":"Data e hora da última atualização do webhook"}}},"DetalheWebhookRes":{"type":"object","description":"Resposta com o detalhe de um webhook","properties":{"webhook":{"$ref":"#/components/schemas/WebhookDetalhadoDto","description":"Detalhes do webhook"}}},"WebhookDetalhadoDto":{"type":"object","properties":{"id":{"type":"string","description":"Identificador único do webhook"},"url":{"type":"string","description":"URL do webhook"},"chaveAcesso":{"type":"string","description":"Chave de acesso (Bearer) do webhook"},"dataCriacao":{"type":"string","format":"date-time","description":"Data e hora de criação do webhook"},"dataAtualizacao":{"type":"string","format":"date-time","description":"Data e hora da última atualização do webhook"},"dataExclusao":{"type":"string","format":"date-time","description":"Data e hora de exclusão do webhook"}}},"ExclusaoWebhookRes":{"type":"object","description":"Resposta de exclusão de webhook","properties":{"webhook":{"$ref":"#/components/schemas/WebhookExcluidoDto","description":"Webhook excluído"}}},"WebhookExcluidoDto":{"type":"object","description":"Webhook excluído","properties":{"id":{"type":"string","description":"ID do webhook excluído"},"dataExclusao":{"type":"string","format":"date-time","description":"Data e hora da exclusão do webhook"}}}},"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."}}}}