{"openapi":"3.1.0","info":{"title":"PGCC Consentimento Cidadão","description":"API de suporte a GCCs para prover serviços do Serpro LGPD, Privacidade Digital do Cidadão (PDC)","contact":{"name":"Projeto","url":"https://gitcorporativo.serpro/denatran/pgcc/pgcc-consentimento"},"version":"0.0.1-SNAPSHOT"},"servers":[{"url":"/consentimento","description":"Caminho padrão"}],"tags":[{"name":"v1","description":"Todos os recursos da versão inicial da API para GCCs"},{"name":"Consentimentos","description":"Recursos voltados a pedidos de consentimento para o uso de dados pessoais de titulares por\nusuários","x-parent":"v1"},{"name":"Ciências","description":"Recursos voltados à ciência de tratamentos de dados pessoais de titulares por usuários","x-parent":"v1"},{"name":"Autenticação","description":"Recursos voltados à autenticação de titulares por intermédio do Gov.br","x-parent":"v1"}],"paths":{"/v1/consentimentos/{cpf}/{id}/status/{status}":{"put":{"tags":["Consentimentos","v1"],"summary":"Estado do pedido de consentimento do titular","description":"Atualiza o estado do pedido de consentimento do titular associado ao CPF e identificado pelo ID para\no novo valor de estado respectivamente informados no caminho da URI.\nO novo estado do pedido de consentimento pode ser apenas `ativo`, `negado` ou `revogado`. Pedidos de\nconsentimento com estado `pendente` podem ser atualizados para `ativo` ou `negado`. Pedidos de\nconsentimento com estado `ativo` podem ser atualizados para `revogado`.\n","operationId":"consentimentoStatus","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Identificador do pedido de consentimento","required":true,"schema":{"type":"string"}},{"name":"status","in":"path","description":"Novo estado do pedido de consentimento","required":true,"schema":{"type":"string","enum":["ATIVO","REVOGADO","NEGADO"]}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"403":{"description":"Usuário não autorizado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConsentimentoResumido"}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/consentimentos/{cpf}":{"get":{"tags":["Consentimentos","v1"],"summary":"Pedidos de consentimento do titular","description":"Consulta todos os pedidos de consentimento do titular associado ao CPF informado no caminho da URI\ne, opcionalmente, filtrados pelo usuário associado ao CNPJ dado na cadeia de busca.\n","operationId":"consentimentos","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"cnpj","in":"query","description":"Opcional: CNPJ do usuário para filtragem","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"403":{"description":"Usuário não autorizado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ConsentimentoResumido"}}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/consentimentos/{cpf}/{id}":{"get":{"tags":["Consentimentos","v1"],"summary":"Pedido de consentimento detalhado do titular","description":"Consulta detalhes do pedido de consentimento do titular associado ao CPF e identificado pelo ID\ninformados no caminho da URI, respectivamente.\n","operationId":"consentimentoDetalhado","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Identificador do pedido de consentimento","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"403":{"description":"Usuário não autorizado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConsentimentoDetalhado"}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/ciencias/{cpf}":{"get":{"tags":["Ciências","v1"],"summary":"Ciências de tratamentos de dados do titular","description":"Consulta todas as ciências de tratamentos de dados do titular associado ao CPF informado no caminho\nda URI e, opcionalmente, filtradas pelo usuário associado ao CNPJ informado na cadeia de busca.\n","operationId":"tratamentos","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"cnpj","in":"query","description":"Opcional: CNPJ do usuário para filtragem","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"403":{"description":"Usuário não autorizado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/CienciaResumida"}}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/ciencias/{cpf}/{id}":{"get":{"tags":["Ciências","v1"],"summary":"Ciência de tratamento de dados detalhado do titular","description":"Consulta detalhes da ciência de tratamento de dados do titular associado ao CPF e identificada pelo\nID informados no caminho da URI, respectivamente.\n","operationId":"tratamentoDetalhado","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"id","in":"path","description":"Identificador da ciência de tratamento de dados","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"403":{"description":"Usuário não autorizado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CienciaDetalhada"}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/autenticacao/{cpf}":{"get":{"tags":["Autenticação","v1"],"summary":"Estado de autenticação do titular","description":"Consulta o estado de autenticação do titular associado ao CPF informado no caminho da URI.\n","operationId":"statusAutenticacao","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TitularAutenticadoStatus"}}}}},"security":[{"GCC-x509-Scheme":[]}]}},"/v1/autenticacao/{cpf}/url":{"get":{"tags":["Autenticação","v1"],"summary":"Link de autenticação do titular","description":"Gera um endereço de autenticação Gov.br para o titular associado ao CPF informado no caminho da URI\nque redireciona para a URL de redirecionamento informada como parâmetro.\n","operationId":"urlAutenticacao","parameters":[{"name":"cpf","in":"path","description":"CPF do titular","required":true,"schema":{"type":"string"}},{"name":"redirectUrl","in":"query","description":"URL de redirecionamento após autenticação","required":false,"schema":{"type":"string"}}],"responses":{"400":{"description":"Requisição malfeita","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"401":{"description":"Usuário não autenticado","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"500":{"description":"Erro interno","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ProblemaDetalhado"}}}},"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TitularLoginUrl"}}}}},"security":[{"GCC-x509-Scheme":[]}]}}},"components":{"schemas":{"ProblemaDetalhado":{"type":"object","description":"Detalhes de erros da API, incluindo título, descrição, status, instância e tipo,\nconforme o padrão RFC 9457","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":{}}}},"ConsentimentoResumido":{"type":"object","description":"Pedido de consentimento resumido","properties":{"id":{"type":"string","description":"Identificador"},"status":{"type":"string","description":"Status","enum":["ATIVO","NEGADO","REVOGADO","PENDENTE","EXPIRADO"]},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da criação"},"dataExpiracao":{"type":"string","format":"date-time","description":"Data e hora de expiração"},"cnpjUsuario":{"type":"string","description":"CNPJ do usuário controlador"},"href":{"type":"string","description":"URI do recurso detalhado"}}},"Categoria":{"type":"object","description":"Categoria dos dados","properties":{"identificador":{"type":"string","description":"Identificador da categoria"},"descricao":{"type":"string","description":"Descrição"},"rotulo":{"type":"string","description":"Rótulo"},"metadados":{"type":"array","description":"Metadados","items":{"$ref":"#/components/schemas/Metadado"}}}},"ConsentimentoDetalhado":{"type":"object","description":"Pedido de consentimento detalhado","properties":{"id":{"type":"string","description":"Identificador"},"idTemplatePdc":{"type":"string","description":"Identificador do template"},"status":{"type":"string","description":"Status","enum":["ATIVO","NEGADO","REVOGADO","PENDENTE","EXPIRADO"]},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da criação"},"dataExpiracao":{"type":"string","format":"date-time","description":"Data e hora de expiração"},"categoria":{"$ref":"#/components/schemas/Categoria","description":"Categoria dos dados"},"usuario":{"$ref":"#/components/schemas/UsuarioControlador","description":"Usuário controlador dos dados"},"finalidade":{"$ref":"#/components/schemas/Finalidade","description":"Finalidade dos dados"},"titular":{"$ref":"#/components/schemas/Titular","description":"Titular dos dados"},"historico":{"type":"array","description":"Histórico de status do consentimento","items":{"$ref":"#/components/schemas/StatusConsentimento"}}}},"Finalidade":{"type":"object","description":"Finalidade do tratamento de dados","properties":{"identificador":{"type":"string","description":"Identificador"},"descricao":{"type":"string","description":"Descrição"},"rotulo":{"type":"string","description":"Rótulo"}}},"Metadado":{"type":"object","description":"Metadado associado ao dado pessoal","properties":{"identificador":{"type":"string","description":"Identificador do metadado"},"descricao":{"type":"string","description":"Descrição do metadado"},"rotulo":{"type":"string","description":"Rótulo do metadado"},"sensivel":{"type":"boolean","description":"Indica se o metadado é sensível"}}},"Responsavel":{"type":"object","description":"Responsável DPO","properties":{"cpf":{"type":"string","description":"CPF do responsável"},"cnpj":{"type":"string","description":"CNPJ do responsável"},"tipo":{"type":"string","description":"Tipo do responsável"}}},"StatusConsentimento":{"type":"object","description":"Atualização de status do consentimento","properties":{"status":{"type":"string","description":"Status"},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da atualização"},"dataExpiracao":{"type":"string","format":"date-time","description":"Data e hora de expiração"}}},"Titular":{"type":"object","description":"Titular dos dados","properties":{"cpf":{"type":"string","description":"CPF","example":12345678901},"nome":{"type":"string","description":"Nome completo","example":"Fulano de Tal"},"email":{"type":"string","description":"Endereço eletrônico","example":"fulano@email.com.br"}}},"UsuarioControlador":{"type":"object","description":"Usuário controlador dos dados","properties":{"cnpj":{"type":"string","description":"CNPJ do usuário"},"nome":{"type":"string","description":"Nome do usuário"},"email":{"type":"string","description":"Endereço eletrônico do usuário"},"contato":{"type":"string","description":"Contato"},"responsavel":{"$ref":"#/components/schemas/Responsavel","description":"Responsável"}}},"CienciaResumida":{"type":"object","description":"Ciência de tratamento de dados resumida","properties":{"id":{"type":"string","description":"Identificador"},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da criação"},"cnpjUsuario":{"type":"string","description":"CNPJ do usuário"},"href":{"type":"string","description":"URI do recurso detalhado"}}},"CienciaDetalhada":{"type":"object","description":"Ciência de tratamento de dados detalhada","properties":{"id":{"type":"string","description":"Identificador"},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da criação"},"titular":{"$ref":"#/components/schemas/Titular","description":"Titular dos dados"},"usuario":{"$ref":"#/components/schemas/UsuarioControlador","description":"Controlador dos dados"},"finalidade":{"$ref":"#/components/schemas/Finalidade","description":"Finalidade do uso do dado"},"historico":{"type":"array","description":"Histórico dos tratamentos de dados","items":{"$ref":"#/components/schemas/StatusTratamento"}},"hipoteses":{"type":"array","description":"Hipóteses tratadas","items":{"$ref":"#/components/schemas/Hipotese"}}}},"DetalheHipotese":{"type":"object","description":"Detalhe da hipótese de tratamento","properties":{"envolveDadoSensivel":{"type":"boolean","description":"Identifica se envolve dado sensível segundo a LGPD"},"id":{"type":"string","description":"ID único da Hipótese"},"nome":{"type":"string","description":"Nome da Hipótese"}}},"Hipotese":{"type":"object","description":"Hipótese de ciência de dados","properties":{"complemento":{"type":"string","description":"Complemento legal da hipótese"},"hipoteseTratamento":{"$ref":"#/components/schemas/DetalheHipotese","description":"Dados da hipótese de ciência de dados"}}},"StatusTratamento":{"type":"object","description":"Atualização de status do vínculo de tratamento","properties":{"info":{"type":"string","description":"Informações extras"},"dataHora":{"type":"string","format":"date-time","description":"Data e hora da atualização"},"dataInicio":{"type":"string","format":"date-time","description":"Data de início do tratamento"},"metadados":{"type":"array","description":"Metadados tratados","items":{"$ref":"#/components/schemas/Metadado"}}}},"TitularAutenticadoStatus":{"type":"object","description":"Status de autenticação do titular","properties":{"autenticado":{"type":"boolean","description":"Indica se o titular está autenticado"},"horaExpiracao":{"type":"string","description":"Hora de expiração da autenticação no formato ISO 8601"}}},"TitularLoginUrl":{"type":"object","description":"Resposta com URL para login do titular","properties":{"url":{"type":"string","description":"URL para login do titular"}}}},"securitySchemes":{"GCC-x509-Scheme":{"type":"mutualTLS","description":"Certificado da GCC usado na autenticação TLS mútua (mTLS).\nEste certificado é capturado automaticamente pelo Gateway de API."}}}}