Árvore de páginas

Versões comparadas

Chave

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

Web Service REST

Produto:

TOTVS Automação Fiscal

Versões:

12.1.17+

Este documento tem o objetivo de fornecer informações para utilização do Web Service REST onde o TOTVS Automação Fiscal retorna, a partir de parâmetros de entrada, as mensagens XML que foram (ou serão) enviadas à base de dados do Governo.

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: WSGetXMLWSTAFGetXML

Objetivo: Requisitar ao TOTVS Automação Fiscal o retorno do XML de determinado registro ou lote de registros.

Descrição: O serviço permite que uma aplicação requisite ao TAF que retorne um ou mais dados dentro de uma estrutura XML, a mesma que foi (ou que será) enviada ao Governo. Caso o evento ainda não tenha sido transmitido ao Governo, será retornado o XML gerado pelo próprio TAF. Caso o evento já tenha sido transmitido e autorizado pelo Governo, será retornado o XML final (inclusive com a assinatura do TSS).

Métodos: GET

Configurações do Serviço

 


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

Nota
titleImportante

Na Seção HTTPURI TAF_CFGJOB a chave PrepareIn deve ser preenchida com o código da empresa/filial principal ou com "All" para todas os grupos de empresas empresas:

PrepareIn para grupo de empresa e filial específica
[TAF_CFGJOB]
MAIN=TAF_CFGJOB
Instances=5,30,5,1
HTTPURI]
URL=/rest
PrepareIn=99,01
Instances=1,1 
Environment=p12116
RefreshRate=120
PrepareIn para grupo de empresa e empresa específica 
[TAF_CFGJOB]
MAIN=TAF_CFGJOB
Instances=5,30,5,1
HTTPURI]
URL=/rest
PrepareIn=T1,D MG 01
Instances=1,1 
PrepareIn para todas os grupos de empresas
Environment=p12116
RefreshRate=120
 [HTTPURI]
URL=/rest
PrepareIn=All
Instances=1,1 

Fonte: REST com ERP Microsiga Protheus

 


Definição dos métodos

 



GET

 


Descrição Descrição do Método: O método GET retorna o XML que o TAF enviou, ou enviará, ao Governo para determinado registro. Caso o evento ainda não tenha sido transmitido ao Governo, será retornado o XML gerado pelo próprio TAF. Caso o evento já tenha sido transmitido e autorizado pelo Governo, será retornado o XML final (inclusive com a assinatura do TSS). 


A Consulta pode combinar parâmetros utilizando a sintaxe “Query String” conforme exemplo abaixo:

http://172.16.31.214:8085/rest/wstafst2?ticketCode=F95975312365478978936365524145236352&RegistryKey=KEYQWE7878RE4854545454998598571&startRecNo=0


ParâmetroDescriçãoObrigatório
ticketCodeTAFTICKETOC
registryKeyTAFKEYOC
startRecNoRecNo inicial para consultaO
searchModeFiltro para buscaN
 
sourceBranchCódigo Identificador da filialN


  • ticketCode – Código do TAFTICKET, Obrigatório caso registryKey não seja informado.
  • registryKey – Código do TAFKEY, Obrigatório caso ticketCode não seja informado.
  • startRecNo - Numero do RecNo Inicial a ser considerado na consulta. 
  • sourceBranch - Código Identificador da filial do ERP emissor.
    Observação : O Tamanho máximo do Response é 850 kB, quando a mensagem chega neste valor é realizado um retorno contendo os registros que já foram incrementados na resposta. O Controle dos itens restantes é feito através do lastRecNo que informa o RecNo do ultimo registro que fez parte da mensagem anterior (respeitando a chave),  caso o mesmo seja diferente de maxRecNo é por que existem itens a serem retornados, caso o contrario a consulta está completa.
  • searchMode – Modo de pesquisa, quando não informado o response retorna todos os TAFKEYs relacionados a busca, quando igual a 1 retorna a última ocorrência do TAFKEY, quando igual a 2 retorna a última ocorrência válida do TAFKEY. Este parâmetro é útil quando o mesmo TAFKEY é enviado em vários TAFTICKET diferentes.
Estrutura da Resposta do método GET Estrutura da Resposta do método GET (Response):
 


Atributo

Pai

Nivel

Ocorrência

Formato

type

-

1

1

-

code

-

1

1:N

String(36-100)

Items

-

1

1

-

registryKey

Items

2

1

String(100)

statusCode

ticketCode

Items

2

0:1

String(1)

statusDescription
statusItems2
0:
1String(
25
2)
registryType
xmlItems20:1

String(10)

registryTypeDescription
Memo - Base64
errorItems20:1String(
36
220)
validateErrors
messageAppItems20:1
-

validateErrorCode

validateErrors

3

0:1

String(
6
3)
validateErrorDetail
lastRecNo
validateErrors
-
3
1
0:
1
String
Int(
220
9999)
streamingErrors2
maxRecNo
Items
-
0:
1
-0:

streamingErrorCode

streamingErrors

3

1
String
Int(
6)streamingErrorDetail

streamingErrors

3

0:1

String(220)

registryProtocol

Items

2

0:1

String(60)

lastRecNo-11Int(9999)maxRecNo-11Int(9999)

 

9999)


  • type – Determina o agrupamento type – Determina o agrupamento do retorno que pode ser por status (Status do registro no TAFticketCode (TAFTICKET) ou registryType registryKey (TAFTPREGTAFKEY), o agrupamento depende dos parâmetros enviados no request, quando o status é registryKey é informado e o registryType omitidoticketCode omitido, o retorno será por status, caso registryKey caso contrário por registryTypeticketCode.
  • code  – Código do registro indicado no atributo type.
  • items  – Itens do response.
  • registryKey – código do TAFKEY. Essa informação sempre será retornada, para que a aplicação de origem consiga identificar o registro em sua própria base de dados.
  • statusCode – Status do registro no TAF, atributo exibido somente quando o agrupamento do request for por registryType.
  • statusDescription – Descrição do status no TAF, atributo exibido somente quando o agrupamento do request for por registryType.
  • registryType – Tipo do registro (conforme campo TAFTPREG), atributo exibido somente quando o agrupamento do request for por status.
  • registryTypeDescription – Descrição do tipo do registro (conforme campo TAFTPREG), atributo exibido somente quando o agrupamento do request for por status.
  • validateErrors – Agrupa todos os erros de layout identificado pelo processo de validação do TAF. Os erros são listados por validateErrorCode e validateErrorDetail.
  • validateErrorCode – Código do erro identificado pelo processo de validação do TAF.
  • validateErrorDetail – Descrição do erro identificado pelo processo de validação do TAF.
  • streamingErrors – Agrupa todos os erros de transmissão retornados do Governo para o TAF. Os erros são listados por streamingErrorCode e streamingErrorDetail.
  • streamingErrorCode – Código do erro retornado pelo Governo para o TAF, após transmissão do registro.
  • streamingErrorDetail – Descrição do erro retornado pelo Governo para o TAF, após transmissão do registro.
  • registryProtocol – Recibo retornado do Governo para o TAF após a transmissão do registro ter sido realizada com sucesso.
  • lastRecNo - Numero do RecNo do ultimo registro retornado na requisição.
  • maxRecNo - Informa o numero do RecNo do ultimo registro relacionado a consulta, deve ser utilizado juntamente com o lastRecNo para controlar a paginação e garantir o retorno de todos os registros.

Exemplos de requisição utilizando o método GET:

 

  • Consulta por status:

Request:

http://172.16.31.214:8085/rest/wsqueryelements2?status=4&startRecNo=0

 

  • ticketCode – código do ticket ( TAFTICKET ) relacionado ao registro retornado. Esse atributo somente é exibido quando type for igual a registryKey.
  • status – Status do registro na base de dados do TAF. Caso o registro não tenha sido integrado com sucesso ao TAF, neste campo será retornado -1.
  • xml XML do registro que foi ou será enviado ao Governo pelo TAF. A mensagem será retornada com criptografia BASE64.
  • error Retorna erro ocorrido durante o processamento da mensagem XML. Pode retornar uma mensagem de registro e/ou lote não encontrado, ou alguma ocorrência durante a geração da mensagem
  • messageApp Informa a aplicação que gerou o XML retornado. Caso o registro esteja com status de autorizado ('4') na base de dados do TAF, será retornado o xml gerado pelo TSS, para os demais status será retornado o XML gerado pelo TAF. Retornos possíveis: 'TAF' ou 'TSS'.
  • lastRecNo – Numero do RecNo do ultimo registro retornado na requisição.
  • maxRecNo – Informa o numero do RecNo do ultimo registro relacionado a consulta, deve ser utilizado juntamente com o lastRecNo para controlar a paginação e garantir o retorno de todos os registros.

Exemplos de requisição utilizando o método GET:


  • Consulta por registryKey:

Request:

http://172.16.31.214:8085/rest/wstafgetxml?registryKey=99_01_S-1050_20160715_1601130001 (1).XML&startRecno=0



Bloco de código
languagejs
themeEclipse
titleResponse:
 {
  "type": "registryKey

 

Bloco de código
languagejs
themeEclipse
titleResponse:
{
  "type": "status",
  "code": "4",
  99_01_S-1050_20160715_1601130001 (1).XML",
  "items": [
    {
      "registryKeyticketCode": "KEY000001S-220020170101",
      "registryType": "S-220097250dd3-e1d9-1c59-622d-f20447e06879",
      "registryTypeDescriptionstatus": "Admissão do Funcionário0",
      "registryProtocolxml": "20170520081000S2200"
    },
    {PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJIb3JUdXIvdjAyXzAyXzAxJz48ZXZ0VGFiSG9yVHVyIElkPSdJRDE1MzExMzc5MTAwMDAwMDIwMTcwNTMwMTYyNTUyMjgzOTgnPjxpZGVFdmVudG8+PHRwQW1iPjc8L3RwQW1iPjxwcm9jRW1pPjE8L3Byb2NFbWk+PHZlclByb2M+MS4wPC92ZXJQcm9jPjwvaWRlRXZlbnRvPjxpZGVFbXByZWdhZG9yPjx0cEluc2M+MTwvdHBJbnNjPjxuckluc2M+NTMxMTM3OTE8L25ySW5zYz48L2lkZUVtcHJlZ2Fkb3I+PGluZm9Ib3JDb250cmF0dWFsPjxpbmNsdXNhbz48aWRlSG9yQ29udHJhdHVhbD48Y29kSG9yQ29udHJhdD4wMDQwMTAxNjwvY29kSG9yQ29udHJhdD48aW5pVmFsaWQ+MjAxNi0wMzwvaW5pVmFsaWQ+PC9pZGVIb3JDb250cmF0dWFsPjxkYWRvc0hvckNvbnRyYXR1YWw+PGhyRW50cj4wOTAwPC9ockVudHI+PGhyU2FpZGE+MTgzMDwvaHJTYWlkYT48ZHVySm9ybmFkYT41MTA8L2R1ckpvcm5hZGE+PHBlckhvckZsZXhpdmVsPlM8L3BlckhvckZsZXhpdmVsPjwvZGFkb3NIb3JDb250cmF0dWFsPjwvaW5jbHVzYW8+PC9pbmZvSG9yQ29udHJhdHVhbD48L2V2dFRhYkhvclR1cj48L2VTb2NpYWw+",
      "registryKeymessageApp": "KEY000001S-210020170101TAF",
    }
  ],
  "registryTypelastRecNo": "S-2100"204,
      "registryTypeDescription": "Cadastro Inicial do Funcionário",
      "registryProtocol": "20170521151402S2100"
    }
 ],
  "lastRecNo": 2,
  "maxRecNo": 2204
}

 


  • Consulta por registryTypeticketCode:

Request:

http://172.16.31.214:8085/rest/wsqueryelements2wstafgetxml?registryType=S-2200&startRecNo=0

 

ticketCode=97250dd3-e1d9-1c59-622d-f20447e06879&startRecno=0


Bloco de código
languagejs
themeEclipse
titleResponse após a execução do processamento:do processamento:
 {
  "type": "ticketCode",
  "code": "97250dd3-e1d9-1c59-622d-f20447e06879",
  "items": [
    {{
  "type": "registryType",
  "code": "S-2200",
  "items": [
    {
      "registryKey": "KEY000001S-220020170101",
      "statusCode": "4",
      "statusDescription": "Registro Transmitido com sucesso",
      "registryProtocol": "20170520081000S2200"
    },
    {
      "registryKey": "KEY004301S-220020170823",
      "statusCode": "1",
      "statusDescription": "Registro não Transmitido - Inválido",
      "validateErrosregistryKey": [
			{ 
		  	 "validateErrorCode"99_01_S-1010_20160715_1201450001 (1).XML",
      "status": "0002671",
		     	 "validateErrorDetailxml": "A data de admissão do trabalhador João da Silva, para a categoria [103] (aprendiz), deve ser maior ou igual a [20/12/2000]"
			}
			{ 
			   "validateErrorCode": "000335",
			   "validateErrorDetail": "A data de admissão deve ser anterior a data de início do e-Social."
			}
		]
    } 
PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wMl8wMSc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMTUzMTEzNzkxMDAwMDAwMjAxNzA1MzAxNjI3NDcyODM5OCc+PGlkZUV2ZW50bz48dHBBbWI+NzwvdHBBbWI+PHByb2NFbWk+MTwvcHJvY0VtaT48dmVyUHJvYz4xLjA8L3ZlclByb2M+PC9pZGVFdmVudG8+PGlkZUVtcHJlZ2Fkb3I+PHRwSW5zYz4xPC90cEluc2M+PG5ySW5zYz41MzExMzc5MTwvbnJJbnNjPjwvaWRlRW1wcmVnYWRvcj48aW5mb1J1YnJpY2E+PGluY2x1c2FvPjxpZGVSdWJyaWNhPjxjb2RSdWJyPjIwMzwvY29kUnVicj48aW5pVmFsaWQ+MjAxNi0wMzwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+RElGIENPTVBMIFBSRVZJRDwvZHNjUnVicj48bmF0UnVicj48L25hdFJ1YnI+PHRwUnVicj4xPC90cFJ1YnI+PGNvZEluY0NQPjAwPC9jb2RJbmNDUD48Y29kSW5jSVJSRj4xMTwvY29kSW5jSVJSRj48Y29kSW5jRkdUUz4wMDwvY29kSW5jRkdUUz48Y29kSW5jU0lORD4wMDwvY29kSW5jU0lORD48cmVwRFNSPk48L3JlcERTUj48cmVwMTM+TjwvcmVwMTM+PHJlcEZlcmlhcz5OPC9yZXBGZXJpYXM+PHJlcEF2aXNvPk48L3JlcEF2aXNvPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
      "messageApp": "TAF"
    },
    {
      "registryKey": "99_01_S-1010_20160715_1201450001 (2).XML",
      "status": "-1",
      "error": "Registro nao integrado ao TOTVS Automacao Fiscal."
    }
  ],
  "lastRecNo": 232251,
  "maxRecNo": 232251
}
 


  • Consulta pelo status registryKey+ registryTypeticketCode:

Request:

http://172.16.31.214:8085/rest/wsqueryelements2wstafgetxml?status=4&registryType=S-2200&startRecNoticketCode=97250dd3-e1d9-1c59-622d-f20447e06879&registryKey=99_01_S-1010_20160715_1201450001 (1).XML&startRecno=0

 
Bloco de código
languagejs
themeEclipse
titleResponse:
{
  "type": "statusticketCode",
  "code": "97250dd3-e1d9-1c59-622d-f20447e06879",
  "4",
  "items": [
    {"items": [
    {
      "registryKey": "99_01_S-1010_20160715_1201450001 (1).XML",
      "registryKeystatus": "KEY000001S-2200201701011",
      "registryTypexml": "S-2200",
      "registryTypeDescription": "Admissão do Funcionário"PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wMl8wMSc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMTUzMTEzNzkxMDAwMDAwMjAxNzA1MzAxNjMwMTMyODM5OCc+PGlkZUV2ZW50bz48dHBBbWI+NzwvdHBBbWI+PHByb2NFbWk+MTwvcHJvY0VtaT48dmVyUHJvYz4xLjA8L3ZlclByb2M+PC9pZGVFdmVudG8+PGlkZUVtcHJlZ2Fkb3I+PHRwSW5zYz4xPC90cEluc2M+PG5ySW5zYz41MzExMzc5MTwvbnJJbnNjPjwvaWRlRW1wcmVnYWRvcj48aW5mb1J1YnJpY2E+PGluY2x1c2FvPjxpZGVSdWJyaWNhPjxjb2RSdWJyPjIwMzwvY29kUnVicj48aW5pVmFsaWQ+MjAxNi0wMzwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+RElGIENPTVBMIFBSRVZJRDwvZHNjUnVicj48bmF0UnVicj48L25hdFJ1YnI+PHRwUnVicj4xPC90cFJ1YnI+PGNvZEluY0NQPjAwPC9jb2RJbmNDUD48Y29kSW5jSVJSRj4xMTwvY29kSW5jSVJSRj48Y29kSW5jRkdUUz4wMDwvY29kSW5jRkdUUz48Y29kSW5jU0lORD4wMDwvY29kSW5jU0lORD48cmVwRFNSPk48L3JlcERTUj48cmVwMTM+TjwvcmVwMTM+PHJlcEZlcmlhcz5OPC9yZXBGZXJpYXM+PHJlcEF2aXNvPk48L3JlcEF2aXNvPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
      "registryProtocolmessageApp": "20170520081000S2200TAF"
    }
  ],
  "lastRecNo": 214,
  "maxRecNo": 214
}
Aviso
titleAtenção!

Quando a consulta for por status + registryType o retorno será agrupado por registryType.

 

retorno será agrupado por ticketCode.


  • Consulta paginada:

Request:

http://172.16.31.214:8085/rest/wstafgetxml?ticketCode=97250dd3-e1d9-1c59-622d-f20447e06879&startRecno=0

Controle de Paginação:

Quando o retorno de uma requisição ultrapassa o valor de 850 Kb a mensagem de resposta é "quebrada" e retornada com o conteúdo até então incrementado, exemplo:

Bloco de código
themeEclipse
titleExemplo de Paginação
  {
  "type": "statusticketCode",
  "code": "497250dd3-e1d9-1c59-622d-f20447e06879",
  "items": [
    {
      "registryKey":  {"99_01_S-1010_20160715_1201450001 (1).XML",
      "registryKeystatus": "KEY000001S-2200201701011",
      "registryTypexml": "S-2200PGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wMl8wMSc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMTUzMTEzNzkxMDAwMDAwMjAxNzA1MzAxNjI3NDcyODM5OCc+PGlkZUV2ZW50bz48dHBBbWI+NzwvdHBBbWI+PHByb2NFbWk+MTwvcHJvY0VtaT48dmVyUHJvYz4xLjA8L3ZlclByb2M+PC9pZGVFdmVudG8+PGlkZUVtcHJlZ2Fkb3I+PHRwSW5zYz4xPC90cEluc2M+PG5ySW5zYz41MzExMzc5MTwvbnJJbnNjPjwvaWRlRW1wcmVnYWRvcj48aW5mb1J1YnJpY2E+PGluY2x1c2FvPjxpZGVSdWJyaWNhPjxjb2RSdWJyPjIwMzwvY29kUnVicj48aW5pVmFsaWQ+MjAxNi0wMzwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+RElGIENPTVBMIFBSRVZJRDwvZHNjUnVicj48bmF0UnVicj48L25hdFJ1YnI+PHRwUnVicj4xPC90cFJ1YnI+PGNvZEluY0NQPjAwPC9jb2RJbmNDUD48Y29kSW5jSVJSRj4xMTwvY29kSW5jSVJSRj48Y29kSW5jRkdUUz4wMDwvY29kSW5jRkdUUz48Y29kSW5jU0lORD4wMDwvY29kSW5jU0lORD48cmVwRFNSPk48L3JlcERTUj48cmVwMTM+TjwvcmVwMTM+PHJlcEZlcmlhcz5OPC9yZXBGZXJpYXM+PHJlcEF2aXNvPk48L3JlcEF2aXNvPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
      "registryTypeDescriptionmessageApp": "Admissão do FuncionárioTAF",
      "registryProtocol": "20170520081000S2200"
    },
*
*
*
{several items}
*
*
*
    {
      "registryKey": "KEY000001S-210020170101": "99_01_S-1010_20160715_1201450001 (150).XML",
      "registryTypestatus": "S-21001",
      "registryTypeDescriptionerror": "CadastroRegistro Inicialnao do Funcionário",
      "registryProtocol": "20170521151402S2100"integrado ao TOTVS Automacao Fiscal."
    }
  ],
  "lastRecNo": 150,
  "maxRecNo": 322251
}

No exemplo acima a consulta retornou até o registro 150, sendo que o registro com maior RecNo pertencente a consulta é o 322251, isso não quer dizer que foram retornados 150 registros e que faltam 172101, o RecNo apenas informa a sequencia do registro no response porém o lastRecNo menor que o maxRecNo indica que ainda existem registro a serem retornados para a chave requisitada. Para o retorno dos demais registros deve-se realizar uma nova requisição com o startRecNo igual a lastRecNo + 1, este procedimento deve ser adotado  até que o lastRecNo seja igual ao maxRecNo conforme exemplo abaixo:

 


Request:

http://172.16.31.214:8085/rest/wsqueryelements2wstafgetxml?status=4&registryType=S-2200&startRecNoticketCode=97250dd3-e1d9-1c59-622d-f20447e06879&startRecno=151

 


Bloco de código
themeEclipse
titleResponse
  {
  "type": "statusticketCode",
  "code": "497250dd3-e1d9-1c59-622d-f20447e06879",
  "items": [
    {  {
      "registryKey": "99_01_S-1010_20160715_1201450001 (151).XML",
      "registryKeystatus": "KEY895424S-2200201707231",
      "registryTypexml": "S-2200",
      "registryTypeDescription": "Admissão do FuncionárioPGVTb2NpYWwgeG1sbnM9J2h0dHA6Ly93d3cuZXNvY2lhbC5nb3YuYnIvc2NoZW1hL2V2dC9ldnRUYWJSdWJyaWNhL3YwMl8wMl8wMSc+PGV2dFRhYlJ1YnJpY2EgSWQ9J0lEMTUzMTEzNzkxMDAwMDAwMjAxNzA1MzAxNjI3NDcyODM5OCc+PGlkZUV2ZW50bz48dHBBbWI+NzwvdHBBbWI+PHByb2NFbWk+MTwvcHJvY0VtaT48dmVyUHJvYz4xLjA8L3ZlclByb2M+PC9pZGVFdmVudG8+PGlkZUVtcHJlZ2Fkb3I+PHRwSW5zYz4xPC90cEluc2M+PG5ySW5zYz41MzExMzc5MTwvbnJJbnNjPjwvaWRlRW1wcmVnYWRvcj48aW5mb1J1YnJpY2E+PGluY2x1c2FvPjxpZGVSdWJyaWNhPjxjb2RSdWJyPjIwMzwvY29kUnVicj48aW5pVmFsaWQ+MjAxNi0wMzwvaW5pVmFsaWQ+PC9pZGVSdWJyaWNhPjxkYWRvc1J1YnJpY2E+PGRzY1J1YnI+RElGIENPTVBMIFBSRVZJRDwvZHNjUnVicj48bmF0UnVicj48L25hdFJ1YnI+PHRwUnVicj4xPC90cFJ1YnI+PGNvZEluY0NQPjAwPC9jb2RJbmNDUD48Y29kSW5jSVJSRj4xMTwvY29kSW5jSVJSRj48Y29kSW5jRkdUUz4wMDwvY29kSW5jRkdUUz48Y29kSW5jU0lORD4wMDwvY29kSW5jU0lORD48cmVwRFNSPk48L3JlcERTUj48cmVwMTM+TjwvcmVwMTM+PHJlcEZlcmlhcz5OPC9yZXBGZXJpYXM+PHJlcEF2aXNvPk48L3JlcEF2aXNvPjwvZGFkb3NSdWJyaWNhPjwvaW5jbHVzYW8+PC9pbmZvUnVicmljYT48L2V2dFRhYlJ1YnJpY2E+PC9lU29jaWFsPg==",
      "registryProtocolmessageApp": "20170723081032S2200TAF"
    },
*
*
*
{several items}
*
*
*
    {
      "registryKey": "KEY072355S-210020170312",
      "registryType": "S-210099_01_S-1010_20160715_1201450001 (251).XML",
      "registryTypeDescriptionstatus": "Cadastro Inicial do Funcionário-1",
      "registryProtocolerror": "20170312151402S2100Registro nao integrado ao TOTVS Automacao Fiscal."
    }
  ],
  "lastRecNo": 322251,
  "maxRecNo": 322251
}

 

 



Exemplo de Consumo do Serviço

 


Bloco de código
languagedelphi
themeEclipse
titleClient REST
#Include 'Protheus.ch'
Function WSCTAFST2(cMetodo)
	Local oRestClient := FWRest():New("http://172.16.31.214:8085")
	Local oObj   	:= Nil
	Local lContinue := .T.
	Local nPag		:= 0
	Local nRec		:= 0
	
	If cMetodo == "GET"
	
		While lContinue
			nPag++
			oRestClient:setPath("/rest/wsqueryelementswstafgetxml?status=4registryKey=99_01_S-1010_20160715_1201450001 (1)&startRecNo=" + AllTrim(Str(nRec)))
			If oRestClient:Get(aHeader)
				ConOut("Pag: " + AllTrim(Str(nPag)))
			   	ConOut("GET", oRestClient:GetResult())
			  	
				If FWJsonDeserialize(oRestClient:GetResult(),@oObj)
			   		If oObj:lastRecNo == oObj:maxRecNo
			   			lContinue := .F.
			   		Else
			   			nRec := oObj:lastRecNo+1
			   		EndIf
			   	EndIf
			   	oObj := Nil
			Else
			   ConOut("GET", oRestClient:GetLastError())
			   lContinue := .F.
			EndIf
		End
		ConOut("------FIM------")
	EndIf
	
	FreeObj(oRestClient)
Return (oRestClient)
Return 


Códigos De Erros RESTFAULT

  • 101 - "É obrigatório o envio do parâmetro startRecNo" ou "É obrigatório o envio do parâmetro ticketCode ou registryKey"
  • 102 - "Erro na Criacao/Abertura da tabela TAFST2." ou "Erro na Criacao/Abertura da tabela TAFXERP."


Bloco de código
languagejs
themeEclipse
titleExemplo de Resposta do método GET com RESTFAULT
  "errorCode": 101,
  "errorMessage": "obrigatorioÉ obrigatório o envio do parametro status ou registryTypeparâmetro startRecNo"
}

 


Códigos De Erros De Validação

:

N/A

 

  • 800 – Status (status) solicitado no request é inválido.
  • 801 – Tipo de registro (registryType) solicitado no request é inválido.