Assinatura Eletrônica

Histórico de modificações da API

API para comunicação dos eventos de assinatura eletrônica.

Comunicação assinatura

Informa uma assinatura eletrônica realizada pelo cliente na plataforma do parceiro.

Experimente

Solicitar URL

Cabeçalhos de solicitação

integer

Código da empresa preenchido a esquerda com zeros. Ex: 0514.

(opcional)
string
Tipo de mídia do corpo enviado para a API.
string
A chave de API atribuída a um indivíduo para acessar a API. Você pode encontrar a chave de API em sua conta.

Corpo da solicitação

{
  "linhaDeNegocio": "VIDA",
  "tipoDocumento": "PROPOSTA",
  "tipoAssinatura": "HASH",
  "idDocumento": "112233445566778900",
  "hash": "34U33B687F345SDDS4568",
  "data": "2020-04-07T10:03:55.0000000+00:00",
  "enderecoIP": "200.131.2.12",
  "responsavel": {
    "cpf": "69668613082",
    "nome": "Fulano de Tal",
    "email": "fulano.tal@email.com.br"
  },
  "usuario": {
    "login": "beltrano",
    "email": "beltrano@email.com.br"
  }
}
{
  "required": [
    "data",
    "enderecoIP",
    "hash",
    "idDocumento",
    "linhaDeNegocio",
    "responsavel",
    "tipoDocumento",
    "tipoAssinatura",
    "usuario"
  ],
  "type": "object",
  "properties": {
    "linhaDeNegocio": {
      "enum": [
        "VIDA"
      ],
      "type": "string",
      "description": "Indicador da linha de negócio"
    },
    "tipoDocumento": {
      "enum": [
        "PROPOSTA"
      ],
      "type": "string",
      "description": "Tipo do documento."
    },
    "tipoAssinatura": {
      "enum": [
        "HASH"
      ],
      "type": "string",
      "description": "Tipo de assinatura."
    },
    "idDocumento": {
      "type": "string",
      "description": "Identificador do documento."
    },
    "hash": {
      "type": "string",
      "description": "Código gerado na plataforma do parceiro pela função de hash. O hash deve garantir a autenticidade e o não-repúdio do cliente e a integridade do documento assinado."
    },
    "data": {
      "type": "string",
      "description": "Data e hora da assinatura do documento.",
      "format": "date-time"
    },
    "enderecoIP": {
      "maxLength": 39,
      "minLength": 7,
      "type": "string",
      "description": "Endereço IP v4 ou v6 com separadores."
    },
    "responsavel": {
      "required": [
        "cpf",
        "email",
        "nome"
      ],
      "type": "object",
      "properties": {
        "cpf": {
          "maxLength": 11,
          "minLength": 11,
          "type": "string",
          "description": "CPF do responsável sem separadores."
        },
        "nome": {
          "maxLength": 60,
          "type": "string",
          "description": "Nome do responsável."
        },
        "email": {
          "type": "string",
          "description": "e-Mail do responsável.",
          "format": "email"
        }
      }
    },
    "usuario": {
      "required": [
        "email",
        "login"
      ],
      "type": "object",
      "properties": {
        "login": {
          "maxLength": 30,
          "type": "string",
          "description": "Login do usuário."
        },
        "email": {
          "type": "string",
          "description": "e-Mail do usuário.",
          "format": "email"
        }
      }
    }
  },
  "example": {
    "linhaDeNegocio": "VIDA",
    "tipoDocumento": "PROPOSTA",
    "tipoAssinatura": "HASH",
    "idDocumento": "112233445566778900",
    "hash": "34U33B687F345SDDS4568",
    "data": "2020-04-07T10:03:55Z",
    "enderecoIP": "200.131.2.12",
    "responsavel": {
      "cpf": "69668613082",
      "nome": "Fulano de Tal",
      "email": "fulano.tal@email.com.br"
    },
    "usuario": {
      "login": "beltrano",
      "email": "beltrano@email.com.br"
    }
  }
}

Resposta 201

Resposta 400

Requisição inválida.

{
  "status": "400",
  "mensagem": "Requisição inválida."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 401

Acesso negado devido a chave de assinatura inválida. Certifique-se de fornecer uma chave válida para uma assinatura ativa.

{
  "status": "401",
  "mensagem": "Acesso negado devido a chave de assinatura inválida. Certifique-se de fornecer uma chave válida para uma assinatura ativa."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 403

Sem autorização para acessar o recurso solicitado.

{
  "status": "403",
  "mensagem": "Sem autorização para acessar o recurso solicitado."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 404

Recurso não encontrado.

{
  "status": "404",
  "mensagem": "Recurso não encontrado."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 415

{
  "status": "415",
  "mensagem": "Media type inválido."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 422

Erro de negócio.

{
  "status": "422",
  "mensagem": "Erro de negócio."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 500

Erro interno no servidor.

{
  "status": "500",
  "mensagem": "Erro interno no servidor."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Resposta 503

Serviço indisponível.

{
  "status": "503",
  "mensagem": "Serviço indisponível."
}
{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "description": "Código http de resposta."
    },
    "mensagem": {
      "type": "string",
      "description": "Descrição detalhada do erro."
    }
  }
}

Exemplos de código

@ECHO OFF

curl -v -X POST "https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura"
-H "CodigoEmpresa: "
-H "Content-Type: application/json"
-H "Ocp-Apim-Subscription-Key: {subscription key}"

--data-ascii "{body}" 
namespace CSHttpClientSample
{
    using System;
    using System.Net.Http.Headers;
    using System.Text;
    using System.Net.Http;
    using System.Web;

    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("CodigoEmpresa", "");
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            var uri = "https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura?" + queryString;

            HttpResponseMessage response;

            // Request body
            byte[] byteData = Encoding.UTF8.GetBytes("{body}");

            using (var content = new ByteArrayContent(byteData))
            {
               content.Headers.ContentType = new MediaTypeHeaderValue("< your content type, i.e. application/json >");
               response = await client.PostAsync(uri, content);
            }
        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura");


            URI uri = builder.build();
            HttpPost request = new HttpPost(uri);
            request.setHeader("CodigoEmpresa", "");
            request.setHeader("Content-Type", "application/json");
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
        };
      
        $.ajax({
            url: "https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("CodigoEmpresa","");
                xhrObj.setRequestHeader("Content-Type","application/json");
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "POST",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"POST"];
    // Request headers
    [_request setValue:@"" forHTTPHeaderField:@"CodigoEmpresa"];
    [_request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'CodigoEmpresa' => '',
    'Content-Type' => 'application/json',
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_POST);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'CodigoEmpresa': '',
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.urlencode({
})

try:
    conn = httplib.HTTPSConnection('api.icatuseguros.com.br')
    conn.request("POST", "/corporativo/assinatura-eletronica/v1/comunicacao-assinatura?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'CodigoEmpresa': '',
    'Content-Type': 'application/json',
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.parse.urlencode({
})

try:
    conn = http.client.HTTPSConnection('api.icatuseguros.com.br')
    conn.request("POST", "/corporativo/assinatura-eletronica/v1/comunicacao-assinatura?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('https://api.icatuseguros.com.br/corporativo/assinatura-eletronica/v1/comunicacao-assinatura')


request = Net::HTTP::Post.new(uri.request_uri)
# Request headers
request['CodigoEmpresa'] = ''
# Request headers
request['Content-Type'] = 'application/json'
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body