Histórico da Página
...
Para mais detalhes sobre serviços REST na arquitetura Protheus clique aqui.
Definição do Serviço
Nome: WSTSSTOKENWSTSSAUTH
Objetivo: Obter o Token de Autenticação JWT do serviço TSS através das chaves Client Id e Client Secret.
Métodos: POST
Configurações do Serviço
A Configuração do serviço REST está documentada no link Configuração REST SERVER - Protheus.
...
Nota | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||||||||||||
Na seção HTTPURI, a chave PrepareIn deve ser comentada. Segue exemplo de configuração do WS REST para utilização no modulo TAF:
|
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 deste método no serviço WSTSSToken é obter um token JWT do serviço TSS utilizando as credenciais de autenticação previamente cadastradas conforme documento: https://tdn.totvs.com/x/1RhcIw
Estrutura da mensagem enviada no POST (Request):
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
{"empresas": [
{
"CODEMPRESA": "",- Código único da empresa, character(4) - Obrigatório
"CODFILIAL": "", - Código único da filial, Character(6) - Obrigatório
"M0_FILIAL": "", - Descrição da Filial, Character(40) - Obrigatório
"M0_NOME": "", - Nome da Empresa, Character(40) - Obrigatório
"M0_NOMECOM": "", - Razao Social Empresa, Character(60) - Opcional - Se não enviado, considera o mesmo conteúdo do atributo M0_NOME
"M0_ENDCOB": "", - Endereço Cobrança, Character(60) - Opcional
"M0_CIDCOB": "", - Cidade Cobrança, Character(60) - Opcional
"M0_ESTCOB": "", - Estado Cobrança, Character(2) - Opcional
"M0_CEPCOB": "", - CEP Cobrança, Character(8) - Opcional
"M0_BAIRCOB": "", - Bairro Cobrança, Character(35) - Opcional
"M0_COMPCOB": "", - Complemento Cobrança, Character(25) - Opcional
"M0_CODMUN": "", - Codigo Municipio, Character(7) - Obrigatório
"M0_ENDENT": "", - Endereço Entrega, Character(60) - Opcional
"M0_CIDENT": "", - Cidade Entrega, Character(60) - Opcional
"M0_ESTENT": "", - Estado Entrega, Character(2)
"M0_CEPENT": "", - CEP Entrega, Character(8) - Opcional
"M0_BAIRENT": "", - Bairro Entrega, Character(35) - Opcional
"M0_COMPENT": "", - Complemento Entrega, Character(25) - Opcional
"M0_TPINSC": "", - Tipo de Inscrição, Integer(1), 1-CEI, 2-CNPJ, 3-CPF, 4-INCRA - Obrigatório
"M0_CGC": "", - Numero da Inscrição acima, Character(14) - Condicional ao atributo M0_TPINSC, - Obrigatório (este deve estar preenchido quando for 2, 3 ou 4)
"M0_CEI": "", - Numer CEI, Character(12) - Condicional ao atributo M0_TPINSC, este deve estar preenchido quando for 1
"M0_INSC": "", - Numero Inscrição Estadual, Character(14) - Opcional - Caso não seja enviado, será informado "ISENTO" como default
"M0_INSCM": "", - Inscrição municipal do estabelecimento, Character(25) - Opcional
"M0_TEL": "", - Telefone, Character(14)
"M0_FAX": "", - FAX, Character(14) - Opcional
"M0_PRODRUR": "", - Produtor Rural, Character(1), 1-Fisica, 2-Juridica, 3-Segurado Especial - Opcional
"M0_CNAE": "", - Codigo de atividade, Character(7) - Opcional
"M0_FPAS": "", - Código FPAS, Character(4) - Opcional
"M0_NATJUR": "", - Natureza Juridica, Character(4) - Opcional
"M0_NIRE": "", - Numero NIRE(Nr. Identificacao do Registro da Empresa), Character(25) - Opcional
"M0_DTRE": "", - Data NIRE(Inscricao na Junta Comercial), Character(8), AAAAMMDD - Opcional
"M0_INS_SUF": "", - Numero Inscrição SUFRAMA, Character(12) - Opcional
"C1E_CODFIL": "", - Filial Referencia com ERP - Character(40) - Obrigatório
"C1E_MATRIZ": true/false, - Obrigatório
"C1E_DTINI": "", - PerÝodo Inicial Validade, Character(6), MMAAAA - Opcional
"C1E_DESFOL": "", - Indic. DesoneraþÒo Folha, Character(1), 0=Nao Aplicavel;1=Empresa enquadrada nos art. 7. a 9. da Lei 12.546/2011 - Opcional - Opcional
"C1E_REGELT": "", - Registro Eletronico, Character(1), 0=Nao optou pelo registro eletronico de empregados;1=Optou pelo registro eletronico de empregados - Opcional
"C1E_SEGMEN": "", - Segmento de Atividade, Character(1), 1=Instituiþ§es Financeiras - Bancos;2=ËrgÒos P·blicos;3=Portos - CODESP;4=ConstruþÒo Civil - Empreiteiras - Opcional
"C1E_ENTEDU": "", - Ind. Entidade Educativa, Character(1), 0=NÒo Ú entidade educativa sem fins lucrativos;1=╔ entidade educativa sem fins lucrativos - Opcional
"C1E_INDETT": "", - Indic Empresa Trab. Temp., Character(1), 1=Sim;2=Não - Opcional - Default '2'
"C1E_NRETT": "", - N·m Reg. Emp. Trab. Tempo, Character(30) - Opcional
"C1E_SIGMIN": "", - Ident Min/Lei Conc Certif, Character(70) - Opcional
"C1E_NRCERT": "", - N·mero do Certificado, Character(40) - Opcional
"C1E_DTEMCE": "", - Data emissÒo certificado, Character(8), AAAAMMDD - Opcional
"C1E_DTVCCE": "", - Data Vencimento Certif., Character(8), AAAAMMDD - Opcional
"C1E_NRPRRE": "", - N·mero Protoc. RenovaþÒo, Character(40) - Opcional
"C1E_DTPRRE": "", - Data Protocolo RenovaþÒo, Character(8), AAAAMMDD - Opcional
"C1E_DTDOU": "", - Dt.PublicaþÒo DOU, Character(8), AAAAMMDD - Opcional
"C1E_PAGDOU": "", - N·mero da Pßgina do DOU, Character(5) - Opcional
"C1E_SIAFI": "", - N·mero do SIAFI, Character(6) - Opcional
"C1E_RPPS": "", - Regime Prop. Prev. Social, Character(1), 1=Sim;2=NÒo - Opcional
"C1E_EFR": "", - ËrgÒo P·blico Ú o EFR, Character(1), 1=Sim;2=NÒo - Opcional
"C1E_CPNJER": "", - CNPJ Ente Federativo Resp, Character(14) - Opcional
"C1E_NMENTE": "", - Nome do Ente Federativo, Character(115) - Opcional
"C1E_SUBTET": "", - Subteto, Character(1), 1=Executivo;2=Judicißrio;3=Legislativo;9=Todos os poderes - Opcional
"C1E_VLRSUB": "", - Valor Subteto Ente Federa, Decimal(14,2) - Opcional
"C1E_SITESP": "", - SituaþÒo Pessoa JurÝdica, Character(1),0=SituaþÒo Normal;1=ExtinþÒo;2=FusÒo;3=CisÒo;4=IncorporaþÒo. - Opcional
"C1E_SITPF": "", - SituaþÒo Pessoa FÝsica, Character(1),0=SituaþÒo Normal;1=Encerramento de esp¾lio;2=SaÝda do paÝs em carßter permanente - Opcional
"C1E_CNPJTR":"", - CNPJ do Transmissor (Outorga), Character(14) - Obrigatório
"C1E_UF": "", - UF do Ente Federativo, Character(2) - Obrigatório
"dataInicioeSocial": "AAAAMMDD",
certificado[ - Somente para estabelecimento Matriz.
{"arquivo": "String"},
{"senha": "String"}
],
"dataInicioReinf": "AAAAMMDD",
}
],
"schedule": [
{"scheduleIntegracao": "1-Sim/2-Nao"}, - Ativação da Integração ERP / TAF - Charater(1)
{"scheduleValidacao": "1-Sim/2-Nao"}, - Ativação da Validação ERP / TAF - Charater(1)
{"scheduleTransmissao": "1-Sim/2-Nao"} - Ativação da Integração TAF / União - Charater(1)
],
"usuarios": [
{"email": ""}, - Obrigatório
{"email": ""}, - Obrigatório
{"email": ""} - Obrigatório
],
"versaoVigenteeSocial": "" - Versão eSocial 02_04_01 ou 02_04_02, Character(8) - Obrigatório
"urlSmartClient" : "", - Endereço do Endpoint de acesso ( Smartclient HTML - Webapp) - Obrigatório
"versaoVigenteReinf": "" - Versão EFD Reinf 1_03_02, Character(8) - Obrigatório
} |
Atributo | Pai | Nivel | Ocorrência | Formato |
---|---|---|---|---|
urlTSS | - | 1 | 1 | STRING |
grantType | - | 1 | 1 | NUMERICO |
clientId | - | 1 | 0-1 | STRING |
clientSecret | - | 1 | 0-1 | STRING |
refreshToken | - | 1 | 0-1 | STRING |
- urlTSS – URL do Serviço TSS
- grantType - Tipo da Requisição.
Valores: 1 para geração do token (CLIENT_CREDENTIALS) e 2 para a atualização do token (REFRESH_TOKEN).
- clientId - Id da credencial gerada pelo TSS
- clientSecret - Senha da credencial gerada pelo TSS
- refreshToken - Token para atualização do tempo de expiração, o mesmo pode ser utilizado para substituir o clientId e clientSecret após a primeira requisição.
Informações | ||
---|---|---|
| ||
Mais informações sobre a geração das credenciais no TSS estão contidas neste documento: https://tdn.totvs.com/x/1RhcIw |
Aviso | ||
---|---|---|
| ||
Os atributos não obrigatórios têm que fazer parte da estrutura, somente o seu preenchimento é opcional. |
Estrutura da mensagem de retorno do POST (Response):
Atributo | Pai | Nivel | Ocorrência | Formato |
---|---|---|---|---|
accesstoken | - | 1 | 1 | STRING |
expiresIn | - | 1 | 1 | NUMERICO |
refreshToken | - | 1 | 1 | STRING |
tokenType | - | 1 | 1 | STRING |
- accesstoken – Token de autenticação
- expiresIn - Tempo de expiração do token (em segundos), esse parâmetro é retornado de acordo com a configuração da chave TSSTOKEN_TIMEEXP no arquivo de de configuração do TSS (appserver.ini)
- refreshToken - Token para atualização do tempo de expiração
- tokenType - Neste parâmetro sempre será retornado "Bearer" que é o padrão de autenticação que está sendo utilizado para geração do token.
Exemplo do Request para o método POST:
Geração do Token
Bloco de código | ||||
---|---|---|---|---|
| ||||
{
"urlTSS": "10.171.67.235:8092",
"grantyType": 1,
"clientId": "bd1e28d4dfbb0d66b640ea94298b2e77c443334c",
"clientSecret": "19521598819c1fd3bd2b465b4230o1e1f41c64e1f4a09130afacc1f572df1d23"
}
|
Response:
Bloco de código | ||||
---|---|---|---|---|
| ||||
{
"accesstoken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY0LCJleHAiOjE2MzE3OTQzNjV9.YjVkNjRmMmNkODQ5MjhmZjUzYzljMmJkMDU1MWQ4ZjNlNzgzNWQ5OWUwMTAyNTFiNWUwNDNlYTIzMDU0NGYxOGFkYzVhMzQ3YWZmZWQwNmRiNDA3OWMzNjYxNDkxNGU4OGYwNmJkZTFhMzEyYjc1ZDdjNTljMjMwNTU0Yjg5YWM",
"expiresIn": 1800,
"refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY1LCJleHAiOjE2MzE4Nzg5NjV9.ODRlZmM5NTViZDZkNjJiOTAyZmU3OWE3ZmI4NDNkOGZlZWU4ZTE1NWIwMzI4YzEyZWU3NTMzNGE2OWMzYWE2MDVhMDlkOTE0ZjFmZTU3ZDFhYTRkZDY2ZWRhNmFjZTEzYjYxZDIyZWJiMzhjMWJmMzFhNmY4NTMwMjdkOTI2NzY",
"tokenType": "Bearer"
}
|
Atualização do Token
Bloco de código | ||||
---|---|---|---|---|
| ||||
{
"urlTSS": "10.171.67.235:8092",
"grantType": 2,
"refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkyNTY1LCJleHAiOjE2MzE4Nzg5NjV9.ODRlZmM5NTViZDZkNjJiOTAyZmU3OWE3ZmI4NDNkOGZlZWU4ZTE1NWIwMzI4YzEyZWU3NTMzNGE2OWMzYWE2MDVhMDlkOTE0ZjFmZTU3ZDFhYTRkZDY2ZWRhNmFjZTEzYjYxZDIyZWJiMzhjMWJmMzFhNmY4NTMwMjdkOTI2NzY",
}
|
Response:
Bloco de código | ||||
---|---|---|---|---|
| ||||
{
"accesstoken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkzOTI4LCJleHAiOjE2MzE3OTU3Mjl9.NzM5OTkxZjVhNzViYjA1OTVkMzlmYWU2YmFiMTFkNjlmYWY5NDMyODRkZmNlZDQwMWIyZTE3N2U1ODIzMDMxMThiZTZmNjZhMTUyMTYyODQ0ODMzOGE3M2FlZGMxZDNjYjM1ZmQ0MGFmOTBhYjU3MDZmNjczZWU4MWFjMzI4OGE",
"expiresIn": 1800,
"refreshToken": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJ0ZW5hbnRpZCI6IjE2ODA1NmNjLTczNTYtNDAwMC04NUI0LWZlNjhiMjZhYjJjZiIsICJjbGllbnRfaWQiOiJiZDFlMjhkNGRmYmIwZDY2YjY0MGVhOTQyOThiMmU3N2MyNDMzMzRjIiwiaXNzIjoiVE9UVlNfVFNTXzEyLjEuMDMzIiwiaWF0IjoxNjMxNzkzOTI4LCJleHAiOjE2MzE4ODAzMjh9.NjE0OTNmOWEzODEwNmQ4NDhmNGY5MWM4YjE3NDFjYTllZDI3MTczOWY2MmNlNGQzOTc1ZDVlZDk0YjNkNGUyZGI5ZDJlYWQ2NGVlMzFjZTQ2Y2VjZWU3N2JlODQ4ZTY3NGVlZjg5YjE2NmVkYjFiN2FhNzRmMDZhMWIwNTc1ZjI",
"tokenType": "Bearer"
}
|
Informações | ||||
---|---|---|---|---|
| ||||
O refreshToken não é fixo, a cada atualização será gerado um hash novo que deverá ser utilizado na próxima atualização de token. | ||||
Bloco de código | ||||
| ||||
Validação de Layout: Retorno: { "empresas": [ { "TipoEnviado": "", - Tipo do Dado Enviado Character(1) "Filial": "", - Filial da Empresa Enviada Character(6) "TamanhoEnviado": 14, - Tamanho do dado Enviado Character(6) "Empresa": "igF2", - Empresa Enviada Character(4) "Campo": "C1E_CPNJER", -- Campo Enviado Character(15) "StatusTamanho": true, - Problema detectado for Tamanho Boolean "StatusTipo": false - Problema detectado for Tipo Boolean } ] } Log internos do ambiente { "Logs": [ { "empresas": [ { "mensagem": "", "status": "", "filial": "", "empresa": "" }, ] }, { "usuarios": { "usuarios": [ { "usuario": "", "senha": "" }, { "usuario": "", "senha": "" }, { "usuario": "", "senha": "" }, { "usuario": "TAF_WS", "senha": "" } ] } } ] } |