Especificaciones
Segue-se uma descrição técnica dos requisitos para invocar o serviço Rest que solicitará, por meio de uma assinatura eletrónica, a prova de que o TPP possui o certificado QSealC correspondente, conforme descrito no regulamento eIDAS.
Especificações técnicas
Endpoint do serviço Rest
https://[DOMAIN]/BeRestServices/rest/tppservices/[API_ID]/registry
Dados de entrada
- timeStamp - Data e hora em que o pedido é iniciado. Para gerar este valor, deve usar o padrão Tempo Universal Coordenado (UTC) com o formato aaaa-MM-dd HH: mm: ssZ.
- b64Signature - Assinatura no formato binário codificado em Base64. O algoritmo da assinatura deve ser SHA256withRSA e o que é assinado são os dados usados no campo anterior codificado em UTF-8.
- b64Certificate - Certificado no formato binário codificado em Base64. Corresponde à parte pública do certificado usado para fazer a assinatura anterior.
- phone - Número de contacto do TPP.
- email - Endereço eletrónico do contacto do TPP.
- callbackURL – URL do CallBack.
Exemplo de mensagem enviada:
{ "timeStamp": "2019-05-24 14:17:29Z", "b64Signature": "HnMxPYD5s+0/LdGgdhYYZbuTQHGGp0JIZTOmvr/ub3GI6p6USwIk9VdCtmW5kWT5XFJdYApZO2dRJO+l9aEj66jnfHqFiYyrnQHs0JhItw0OsD2C8Vr3wLN4sMJGG31Y+rqLw8yh4SQ0RZxCXbbH3NwLodsak8jTfLKeIz8Km4wU8jFUr89fuYgdumQhqdAhCsszIA8to4HjlrtrUzY9SXpuPcnkdbPqfSitBAF8Qxd9dsXI2F6SR2NuDICpo4JqahXXjwErX6VwgoDeoHGtf+hZ46bDLSw5NQP3NSd/XJ622QrGyXWnJoLLKEZameHo++tw+dFmRKTGVWlygHxBqw==", "b64Certificate": "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", "phone": "666777777", "email": "test@mail.com", "callbackURL" : "https://URL/callback/" }
Dados de saída
- userName - Nome de utilizador gerado para acesso ao portal de desenvoltimento de APIs da entidade.
- userPassword - Password gerada para o utilizador.
- appId - Identificador da aplicação criada.
- key - Chaves geradas para uso na autenticação do OAUTH 2.0. Para cada chave, os campos a seguir são devolvidos.
- keyType - Tipo de chave. É facultada uma chave para usar em SANDBOX e outra para usar em PRODUÇÃO.
- consumerKey - Identificador para OAUTH 2.
- consumerSecret - Senha para o OAUTH 2.
- error - Se ocorrer um erro no serviço, é indicado neste campo.
Exemplo de resposta recebida:
{ "userName":"USER1559057720366", "userPassword":"H377LWr3Y1", "appId":"07289155-071d-4f59-9c03-f151625c8990", "key":[ { "keyType":"SANDBOX", "consumerKey":"dmHiuwCsx3Y6gGfNpLZfTWDOT3ga", "consumerSecret":"Eu3AGGqO2jbnWUEA4P0ElG5jLGMa" }, { "keyType":"PRODUCTION", "consumerKey":"OHN5tti0IX1RceedELh7thdcB5ga", "consumerSecret":"flBfLtgEHBqs1zN5bi7mVTsq7_ka" } ], "error":"" }
Os possíveis erros que o serviço pode devolver são:
- Error timestamp format - O carimbo de tempo não tem um formato correto.
- Timestamp not valid - O carimbo de tempo é posterior à data de envio.
- Timestamp expired - Excedeu o tempo estabelecido para aceitar o carimbo de tempo. O limite de tempo é de 30 segundos.
- Error base64 certificate format - A codificação Base64 do certificado não está correta.
- Error certificate format - Os dados enviados não correspondem a um certificado gerado corretamente.
- Certificate not valid - O certificado expirou ou foi revogado.
- Error base64 signature format - A codificação Base64 da assinatura não está correta.
- Error signature format - Os dados enviados não correspondem a uma assinatura corretamente formada.
- Signature not valid - A assinatura não é válida.
- Internal error - Ocorreu um erro interno no registo do TPP e na configuração do acesso às APIs.