Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

RESTWeb Service REST

Produto:

TOTVS Automação Fiscal

Versões:

12.1.23+

Este documento tem o objetivo de fornecer informações para utilização do Web Service REST de integração com o TOTVS Automação Fiscal.

Para mais detalhes sobre o conceito de um serviços REST clique aqui.

Para mais detalhes sobre serviços REST na arquitetura Protheus clique aqui.


Índice

Índice
indent30px
absoluteUrltrue

Definição do Serviço

Nome: WSEsocial

Objetivo: Realizar o envio de informações relacionadas ao eSocial.

Descrição: Essa interface de integração irá realizar a criação de entidade, configuração do certificado digital e também disponibilizará método para consultar o ID da entidade, de acordo com parâmetros.

Métodos: POST e GET.

Configurações do Serviço


A  Configuração do serviço REST está documentada  no link Configuração REST SERVER - Protheus.

Estas parametrizações estão localizadas fisicamente no arquivo appserver.ini da pasta de instalação "[...]\BIN\APP"

Nota
titleImportante

Na seção HTTPURI, a chave PrepareIn deve ser comentada.

Segue exemplo de configuração do WS REST para utilização no modulo TAF:

[HTTPV11]
SOCKETS=HTTPREST
ENABLE=1

[HTTPREST]
Port=8080
URIs=HTTPURI
Security=0

[HTTPURI]
URL=/rest
;PrepareIn=
Instances=1,1
CORSEnable=1
AllowOrigin=*

[HTTPJOB]
MAIN=HTTP_START
ENVIRONMENT=P12

[TAF_CFGJOB]
Main=TAF_CFGJOB
Instances=1,1 **
PrepareIn=T1 *
nRefreshRate=50
ENVIRONMENT=P12[OnStart]
JOBS=HTTPJOB,TAF_CFGJOB
RefreshRate=120

*A chave PrepareIn deve conter o código do Grupo de Empresas(sigamat.emp/syscompany) utilizado no modulo TAF, abaixo exemplos configurações possíveis para as mesmas:

  • Utilizando o código do grupo; Ex: PrepareIn=01
  • Utilizando diversos códigos de grupos; Ex: PrepareIn=01,02,99 .
  • Utilizando a palavra ALL, neste caso o server vai considerar todos os grupos contidos no arquivo de empresas do Protheus/TAF; Ex PrepareIn=ALL

** A chave Instances na seção TAF_CFGJOB é opcional, se a mesma não existir o sistema ira considerar a quantidade de threads declarada na chave instances da seção HTTPURI.

Obs: O servidor cria Threads especificas para cada grupo de empresas de acordo com a configuração da chave Instances, por isso essa configuração deve ser realizada considerando a capacidade computacional do servidor.


Fonte: REST com ERP Microsiga Protheus

Definição dos métodos

POST

Descrição do Método: O método POST segue o conceito do próprio método em qualquer outro tipo de serviço REST, devendo seu conteúdo ser enviado no corpo da mensagem (body) no formato json.

O objetivo do método é enviar informações relacionadas ao eSocial para o TSS. 

Estrutura da mensagem enviada no POST (Request):

Atributo

Pai

Nivel

Ocorrência

Formato

ticketCode

-

1

1

String(36)

sourceBranch

-

1

1

String(6)

tpAmb

   -

1

1

String(2)

urlTSS

   -

1

1

-

lote

   -

1

1:N

-

registryType

   1

2

1

String(6)

registryKey

   1

2

1

String(250)

branchName

   1

2

1

String(250)

integrationMessage

   1

2

1

Memo

schemaVersion

   -

1

1

String(8)


ticketCode
– atributo raiz (string(36))

sourceBranch - Código Identificador da entidade TSS ( retornado na configuração do certificado)

tpAmb – Tipo do Ambiente 

urlTSS – URL serviço do TSS

lote - estrutura dos itens.

  • registryType - Tipo do Registro
  • registryKey – Chave do Registro (string(64))
  • integrationMessage - Arquivo/Evento a ser integrado, a mensagem deve ser enviada com criptografia BASE64. Obs: O XML pode ser enviado com a codificação UTF-8, neste caso é obrigatório o uso da declaração <?xml version="1.0" encoding="utf-8"?> no inicio do Xml
  • schemaVersion – XX_XX_XX


Aviso
titleAtenção!

Os atributos não obrigatórios têm que fazer parte da estrutura, somente o seu preenchimento é opcional.


Exemplo da URL para chamada do método "send":

http://localhost:8090/rest/wsesocial/v1/send/


Estrutura da mensagem de retorno do POST (Response):

Atributo

Pai

Nivel

Ocorrência

Formato

ticketCode

-

1

0:1

String(36)

registryKey

-

1

0:N

String(250)

coderr

   -

1

0:1

String(3)

description

   -

1

1

Memo Base64

key

   1

2

1

String(100)

success

   1

2

1

boolean (true : false)

error

   1

2

0:N

-

coderr

   2

3

1

Int(3)

description

   2

3

1

Memo Base64

keyAmount

   -

1

0:1

Int(9999)


ticketCode: Atributo raiz

coderr: Código do erro

description: Descrição do erro

registryKey

  • key: Chave do registro
  • success: Status do processamento do registro (True / False)

error

  • coderr: Código do erro
  • description: Descrição do erro

keyAmount: Quantidade de registros processados na requisição


Bloco de código
languagejs
themeEclipse
titleExemplo do request para o método Post
{
    "ticketCode": "TICKETABC1234b9ce64c5-094b-4c95-9b29-c22b5cbf94f3",
    "sourceBranch": "000004000001",
 
   "tpAmb": "2",
    "urlTSS": "http://localhost:8088",
    "lote": [{
"registryType": "S-1010",
"registryKey": "CHAVEDORERISTRO123",
"integrationMessage": "<eSocial xmlns='<evttabrubrica'>http://www.esocial.gov.br/schema/evt/evtTabRubrica/v02_05_00'><evtTabRubrica</evttabrubrica'> Id='ID1024973980000002019061817343887589'><ideEvento><tpAmb>2</tpAmb><procEmi>1</procEmi><verProc>1.0</verProc></ideEvento><ideEmpregador><tpInsc>1</tpInsc><nrInsc>02497398</nrInsc></ideEmpregador></evtTabRubrica></eSocial>",
"schemaVersion":"02_05_00"
},
{

        {
            "registryType": "S-10201200",
            "registryKey": "CHAVEDORERISTRO124dcd5ea38-3008-4229-ae80-6688e75dcefe",
            "integrationMessage": "<eSocial xmlns='<evttablotacao'>http://www.esocial.gov.br/schema/evt/evtTabLotacao/v02_05_00'><evtTabLotacao</evttablotacao'> Id='ID1024973980000002019031317110011792'><ideEvento><tpAmb>2</tpAmb><procEmi>1</procEmi><verProc>1.0</verProc></ideEvento><ideEmpregador><tpInsc>1</tpInsc><nrInsc>02497398</nrInsc></ideEmpregador><infoLotacao><inclusao><ideLotacao><codLotacao>LOT001001</codLotacao><iniValid>2018-01</iniValid></ideLotacao><dadosLotacao><tpLotacao>01</tpLotacao><tpInsc>1</tpInsc><nrInsc>02497398000149</nrInsc><fpasLotacao><fpas>507</fpas><codTercs>0079</codTercs></fpasLotacao></dadosLotacao></inclusao></infoLotacao></evtTabLotacao></eSocial>",
"schemaVersion":PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wNV8wMCc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMjIwMTkwNjIxMTkxMzIzNjM5ODknPjxpZGVFdmVudG8+PHRwQW1iPjI8L3RwQW1iPjxwcm9jRW1pPjE8L3Byb2NFbWk+PHZlclByb2M+MS4wPC92ZXJQcm9jPjwvaWRlRXZlbnRvPjxpZGVFbXByZWdhZG9yPjx0cEluc2M+MjwvdHBJbnNjPjxuckluc2M+OTk5OTk5OTk5OTk5OTk5PC9uckluc2M+PC9pZGVFbXByZWdhZG9yPjxpbmZvUnVicmljYT48aW5jbHVzYW8+PGlkZVJ1YnJpY2E+PGNvZFJ1YnI+MDAwMDAxPC9jb2RSdWJyPjxpZGVUYWJSdWJyPjAwMDAwMTwvaWRlVGFiUnVicj48aW5pVmFsaWQ+MjAxOS0wMTwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+VEVTVEU8L2RzY1J1YnI+PG5hdFJ1YnI+MTAwMDwvbmF0UnVicj48dHBSdWJyPjE8L3RwUnVicj48Y29kSW5jQ1A+MDA8L2NvZEluY0NQPjxjb2RJbmNJUlJGPjAwPC9jb2RJbmNJUlJGPjxjb2RJbmNGR1RTPjAwPC9jb2RJbmNGR1RTPjxjb2RJbmNTSU5EPjAwPC9jb2RJbmNTSU5EPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
            "schemaVersion": "02_05_00"
        },
        {
            "registryType": "S-10051010",
            "registryKey": "CHAVEDORERISTRO12657e09889-fb99-4a65-99f7-c2039041e151",
            "integrationMessage": "<eSocial xmlns='<evttabestab'>http://www.esocial.gov.br/schema/evt/evtTabEstab/v02_05_00'><evtTabEstab</evttabestab'> Id='ID1024973980000002019061817341123822'><ideEvento><tpAmb>2</tpAmb><procEmi>1</procEmi><verProc>1.0</verProc></ideEvento><ideEmpregador><tpInsc>1</tpInsc><nrInsc>02497398</nrInsc></ideEmpregador><infoEstab><inclusao><ideEstab><tpInsc>2</tpInsc><nrInsc>22573711005</nrInsc><iniValid>2019-01</iniValid></ideEstab><dadosEstab><cnaePrep></cnaePrep><aliqGilrat><aliqRat>0</aliqRat></aliqGilrat><infoTrab><regPt>0</regPt><infoApr><contApr>0</contApr></infoApr></infoTrab></dadosEstab></inclusao></infoEstab></evtTabEstab></eSocial>",
"schemaVersion":PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wNV8wMCc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMjIwMTkwNjIxMTkxMzIzNjM5ODknPjxpZGVFdmVudG8+PHRwQW1iPjI8L3RwQW1iPjxwcm9jRW1pPjE8L3Byb2NFbWk+PHZlclByb2M+MS4wPC92ZXJQcm9jPjwvaWRlRXZlbnRvPjxpZGVFbXByZWdhZG9yPjx0cEluc2M+MjwvdHBJbnNjPjxuckluc2M+OTk5OTk5OTk5OTk5OTk5PC9uckluc2M+PC9pZGVFbXByZWdhZG9yPjxpbmZvUnVicmljYT48aW5jbHVzYW8+PGlkZVJ1YnJpY2E+PGNvZFJ1YnI+MDAwMDAxPC9jb2RSdWJyPjxpZGVUYWJSdWJyPjAwMDAwMTwvaWRlVGFiUnVicj48aW5pVmFsaWQ+MjAxOS0wMTwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+VEVTVEU8L2RzY1J1YnI+PG5hdFJ1YnI+MTAwMDwvbmF0UnVicj48dHBSdWJyPjE8L3RwUnVicj48Y29kSW5jQ1A+MDA8L2NvZEluY0NQPjxjb2RJbmNJUlJGPjAwPC9jb2RJbmNJUlJGPjxjb2RJbmNGR1RTPjAwPC9jb2RJbmNGR1RTPjxjb2RJbmNTSU5EPjAwPC9jb2RJbmNTSU5EPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
            "schemaVersion": "02_05_00"
        }
    ]
}
Bloco de código
languagejs
themeEclipse
titleExemplo da mensagem de retorno do método Post
{
    "ticketCode": "TICKETABC1234b9ce64c5-094b-4c95-9b29-c22b5cbf94f3",
"coderr": "",
"description": "",
    "registryKey": [
        {
            "key": "CHAVEDORERISTRO123dcd5ea38-3008-4229-ae80-6688e75dcefe                                                                ",
            "success": false,
            "error": [
                {
                    "coderr": "99",
                    "description": "RXJybyBkZSBzY2hlbWE6IEVsZW1lbnQgJ3todHRwOi8vd3d3LmVzb2NpYWwuZ292LmJyL3NjaGVtYS9ldnQvZXZ0VGFiUnVicmljYS92MDJfMDVfMDB9ZXZ0VGFiUnVicmljYSc6IE1pc3NpbmcgY2hpbGQgZWxlbWVudChzKS4gRXhwZWN0ZWQgaXMgKCB7aHR0cDovL3d3dy5lc29jaWFsLmdvdi5ici9zY2hlbWEvZXZ0L2V2dFRhYlJ1YnJpY2EvdjAyXzA1XzAwfWluZm9SdWJyaWNhICkuCgRXJybyBkZSBzY2hlbWE6IEVsZW1lbnQgJ3todHRwOi8vd3d3LmVzb2NpYWwuZ292LmJyL3NjaGVtYS9ldnQvZXZ0VGFiUnVicmljYS92MDJfMDVfMDB9ZVNvY2lhbCc6IE5vIG1hdGNoaW5nIGdsb2JhbCBkZWNsYXJhdGlvbiBhdmFpbGFibGUgZm9yIHRoZSB2YWxpZGF0aW9uIHJvb3QuCg=="
                }
            ]
        },
        {
            "key": "CHAVEDORERISTRO124 ",
"success": true
},
{
"key": "CHAVEDORERISTRO126 ",
"57e09889-fb99-4a65-99f7-c2039041e151                                                                ",
            "success": false,
            "error": [
                {
                    "coderr": "99",
                    "description": "RXJybyBkZSBzY2hlbWE6IEVsZW1lbnQgJ3todHRwOi8vd3d3LmVzb2NpYWwuZ292LmJyL3NjaGVtYS9ldnQvZXZ0VGFiRXN0YWIvdjAyXzA1XzAwfWNuYWVQcmVwJzogJycgaXMgbm90IGEgdmFsaWQgdmFsdWUgb2YgdGhlIGxvY2FsIGF0b21pYyB0eXBlLgo=RXJybyBkZSBzY2hlbWE6IEVsZW1lbnQgJ3todHRwOi8vd3d3LmVzb2NpYWwuZ292LmJyL3NjaGVtYS9ldnQvZXZ0VGFiUnVicmljYS92MDJfMDVfMDB9bnJJbnNjJzogW2ZhY2V0ICdwYXR0ZXJuJ10gVGhlIHZhbHVlICc5OTk5OTk5OTk5OTk5OTknIGlzIG5vdCBhY2NlcHRlZCBieSB0aGUgcGF0dGVybiAnXGR7OCwxNH0nLgpFbGVtZW50ICd7aHR0cDovL3d3dy5lc29jaWFsLmdvdi5ici9zY2hlbWEvZXZ0L2V2dFRhYlJ1YnJpY2EvdjAyXzA1XzAwfW5ySW5zYyc6ICc5OTk5OTk5OTk5OTk5OTknIGlzIG5vdCBhIHZhbGlkIHZhbHVlIG9mIHRoZSBsb2NhbCBhdG9taWMgdHlwZS4K"
                }
            ]
        }
    ],
    "keyAmount": 32
}