Especificação | |||
Produto | Microsiga Protheus | Módulo | Jurídico |
Segmento Executor | Serviços | ||
Projeto | IRM | ||
Requisito | Subtarefa |
Os serviços especificados neste serão consumidos pelo aplicativo Legal Process e tem por objetivo permitir ao usuário consultar os processos cadastrados na base Protheus de um smartphone ou tablet.
Retorna a lista de processos disponíveis para consulta, no formato indicado abaixo:
{ "operation": "ListProcess", "userName": "Totvers", "hasNext": false, "processes": [ { "assJurDesc": "Contencioso", "assJur": "001", "entryDate": "20170928", "processId": "0000000062", "provisionValue": 10000, "oppositeParty": "Marcelo Araujo Dente", "area": [ { "description": "Trabalhista", "code": "000001", } ], "instance": [ { "processNumber": "84939439843924"' } ], "company": [ { "name": "LEGALTASK 001", "code": "JLT001-01", } ], "staff": [ { "position": "Responsável", "initials": "WYK", "name": "WILLIAN KAZAHAYA", }, { "position": "Advogado", "initials": "", "name": "", }, { "position": "Estagiário", "initials": "", "name": "", } ], "matter": [ { "description": "LEGALTASK 001//090807060504030201", "code": "000001", } ], "subarea": [ { "description": "CONTENCIOSO", "code": "000001", } ], "status": [ { "description": "Em andamento", "code": "1", } ] } |
Descrição dos Campos:
Parâmetros aceitos:
A primeira página é a 1
Se não for enviado um page, considerar a página 1.
Se não for passado um pageSize, considerar o tamanho de página como 10.
TODA requisição de lista deve retornar um atributo hasNext indicando se atingiu a última página ou não.
Exemplos: (supondo que existam 32 registros na base):
GET /processes -> Retorna a página padrão (1) com tamanho padrão (10) (registro do 1 ao 10, hasNext = true)
GET /processes?page=1 -> Retorna a página 1 com tamanho padrão (10) (registro de 1 ao 10, hasNext = true)
GET /processes?pageSize=3 -> Retorna a página padrão (1) com tamanho 3 (registro de 1 ao 3, hasNext = true)
GET /processes?page=2&pageSize=4 -> Retorna a página (2) com tamanho (4) (registro do 5 ao 8, hasNext = true)
GET /processes?page=4&pageSize=10 -> Retorna a página (4) com tamanho (10) (registro do 31 ao 40 -> irá retornar só o 31 e o 32, hasNext = false)
etc.
Informa quais campos devem ser retornados na requisição.
Se o fields não for informado, trazer todos os campos disponíveis.
Exemplos:
GET /processess?fields=processId,client -> Retorna somente os campos ID do processo e Cliente.
GET /processes -> Retorna todos os campos disponíveis.
Deve suportar filtrar os resultados de acordo com alguns parâmetros:
- searchKey: Filtro chave, capaz de filtrar em diversos campos diferentes do processo (número do processo, Nome das Partes, detalhamento do Processo (este campo não é exibido no App).
Exemplos: party.name, processes[n].instance[a].processNumber)
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Este serviço deve retornar somente um processo, com os detalhes do mesmo. Os atributos retornados seguem o mesmo padrão do serviço que retorna a lista de processos, porém, este serviço somente aceita o parâmetro fields.
{ "operation": "ListProcess", "userName": "Totvers", "length": 11, "processes": [ { "processId": "0000000063", "fup": [ { "tipFup": "1", "id": "1000000017", "status": "001", "responsable": [ { "id": "002183", "acronym": "WYK", "email": "[email protected]", "name": "WILLIAN KAZAHAYA", "fone": "" } ], "tipFupDesc": "Pendente", "title": "PROVIDENCIA", "date": "20170928", "hour": ":" } ], "injuctions": [ { "id": "0000000001", "title": "Liminar Revogada", "date": "20170322", "sentence": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."}], "assJurDesc": "Contencioso", "status": [ { "description": "Em andamento", "code": "1" } ], "values_and_contingency": [ { "values": [ { "currency": "R$", "description": "", "value": 1000 } ], "description": "CT059-JURA162", "probability_of_winning": "" } ], "party": [ { "position": "", "id": "0000000066", "relationName": "Reclamante", "relationCode": "01", "name": "LEGALTASK 001", "main": "1", "entity": "JLT00101", "sourceEntity": "SA1", "code": "JLT001-01", "positionCode": "" } ], "oppositeParty": "Cliente Juridico", "provisionValue": 10000, "expenses": [ { "identifier": "Taxi", "description": "CT-007", "date": "20161208", "value": "" }, { "identifier": "TIPO DE DESPESA EXCLUSIVO P/ CT013 (JURA099)", "description": "CT013-JURA099", "date": "20161208", "value": "" }, ], "area": [ { "description": "Trabalhista", "code": "001" } ], "subarea": [ { "description": "CONTENCIOSO", "code": "000001" } ], "assJur": "001", "assJurDesc": "Contencioso", "instance": [ { "districtCourt": "Tribunal de Justica", "distribution": "", "processNumber": "090807060504030201", "branch": "3a Camara do Tribunal de Justica do Estado de SP", "id": "0000000063", "instaAtual": "1", "city": "", "cityCode": "", "numInstance": "1", "natureCode": "001", "local": "Sao Paulo", "displayName": "1a Instancia", "nature": "Judicial" } ], "decisions" : [ { "id": "0000000001", "title": "Setença Procedente", "date": "20170222", "sentence" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "instance": "1ª" } ], "guarantees" : [ { "identifier": "G", "description": "Depósito Recursal", "date": "20170222", "value": 10000.00 } ], "matter": [ { "description": "LEGALTASK 001//090807060504030201", "code": "000001" } ], "entryDate": "20170928", "staff": [ { "position": "Responsável", "initials": "WYK", "name": "WILLIAN KAZAHAYA" }, { "position": "Advogado", "initials": "", "name": "" }, { "position": "Estagiário", "initials": "", "name": "" } ], "closure": [ { "veredict": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "finalValue": 1000.00,, "description": "VITÓRIA", "date": "YYYYMMDD", "type": "1" } ], "company": [ { "name": "LEGALTASK 001", "code": "JLT001-01" } ], "history": [ { "id": "0000000010", "title": "Acompanhamento Decisória", "date": "20171017" }, { "id": "0000000013", "title": "Acompanhamento Decisória", "date": "20171023" } ] } ] } |
Descrição dos Campos:
userName: Nome do usuário logado.
hasNext: Indica se existe mais uma página de resultados ou se já está na última página (ver mais detalhes nos parâmetros aceitos: page e pageSize).
processes: Array de processos.
processes[n].processId: Identificador único do processo.
operation: Qual tipo de operação.
processes[n].oppositeParty: Nome da parte contraria.
processes[n].provisionValue: Valor total do processo (somatória dos valores e contingência)
processes[n].fups: Array de Follow Ups do processo. Trazer somente os últimos 4 (ver parâmetro abaixo).
processes[n].fups[e].status: Código do resultado do Follow-up .
processes[n].fups[e].tipFup: Código do tipo do resultado do Follow-up.
processes[n].fups[e].responsable: Array de Responsável pelo Follow-up.
processes[n].fups[e].responsable[x].id: Id do responsável do Follow-up.
processes[n].fups[e].responsable[x].acronym: Acrónimo do responsável do Follow-up.
processes[n].fups[e].responsable[x].email: E-mail do responsável do Follow-up.
processes[n].fups[e].responsable[x].name: Nome do responsável do Follow-up.
processes[n].fups[e].responsable[x].fone: Fone do responsável do Follow-up.
processes[n].fups[e].title: Tipo do follow-up.
processes[n].fups[e].date: Data do Follow-up no formato YYYYMMDD.
processes[n].fups[e].hour: Hora do follow-up no formato HH:mm.
processes[n].injuctions: Array com liminares do processo.
processes[n].injuctions[w].id: Código da liminar.
processes[n].injuctions[w].title: Título da liminar.
processes[n].injuctions[w].date: Data da liminar.
processes[n].injuctions[w].sentence: Texto da liminar.
processes[n].status: Array com Status do processo. (Em Andamento, Encerrado)
processes[n].status.description: Descrição do Status.
processes[n].status.code: Código do Status.
processes[n].values_and_contingency: Array de Objetos.
processes[n].values_and_contingency.values: Array de valores do Objeto.
processes[n].values_and_contingency.values[y].currency: Descrição do valor.
processes[n].values_and_contingency.values[y].description: Símbolo da moeda do valor.
processes[n].values_and_contingency.values[y].value: Valor.
processes[n].values_and_contingency.description: Descrição
processes[n].values_and_contingency.probability_of_winning: probabilidade de vitória
processes[n].party: Array com as partes envolvidas no processo.
processes[n].party[k].position: Cargo do envolvido.
processes[n].party[k].id: ID do envolvido.
processes[n].party[k].relationName: Nome da relação do envolvido.
processes[n].party[k].relationCode: Código da relação do envolvido.
processes[n].party[k].name: Nome do envolvido.
processes[n].party[k].main: Main do envolvido.
processes[n].party[k].entity: Entidade do envolvido.
processes[n].party[k].sourceEntity: Tabela do envolvido.
processes[n].party[k].code: Código do envolvido.
processes[n].party[k].positionCode: Código da posição do envolvido.
processes[n].expenses: Array com as despesas do processo.
processes[n].expenses[g].identifier: Identificador do tipo de despesa (D, etc).
processes[n].expenses[g].description: Descrição da despesa.
processes[n].expenses[g].date: Data da despesa.
processes[n].expenses[g].value: Valor da despesa.
processes[n].subArea: Array com as Subáreas do processo.
processes[n].subArea[i].description: Descrição da Subárea do processo.
processes[n].subArea[i].code: Código da Subárea do processo.
processes[n].assJur: Código Assunto.
processes[n].assJurDesc: Descrição Assunto.
processes[n].instance: Array com as Instâncias.
processes[n].instance[a].districtCourt:Tipo do tribunal da Instância.
processes[n].instance[a].distribution: Distribuição da Instância.
processes[n].instance[a].processNumber: Número do processo da Instância.
processes[n].instance[a].branch: Ramo da Instância.
processes[n].instance[a].id:Id da Instância.
processes[n].instance[a].instaAtual: Instância atual do processo (1=Sim; 2=Não)
processes[n].instance[a].city: Cidade da Instância.
processes[n].instance[a].cityCode: Código da cidade da Instância.
processes[n].instance[a].numInstance: Número da Instância.
processes[n].instance[a].natureCode: Código da natureza da Instância.
processes[n].instance[a].local: Local da Instância.
processes[n].instance[a].displayName: Nome da Instância.
processes[n].instance[a].nature: Natureza da Instância.
processes[n].decisions: Array de decisões prévias do processo.
processes[n].decisions[t].id: Código do parecer.
processes[n].decisions[t].title: Título do parecer.
processes[n].decisions[t].date: Data do parecer, no formato Protheus YYYYMMDD.
processes[n].decisions[t].sentence: Texto do parecer (SE FOR MUITO GRANDE SEPARAR).
processes[n].decisions[t].instance: Instância.
processes[n].guarantees: Array com as garantias do processo.
processes[n].guarantees[z].identifier: Identificador do tipo de garantia (G, A).
processes[n].guarantees[z].description: Descrição da garantia.
processes[n].guarantees[z].date: Data da garantia.
processes[n].guarantees[z].value: Valor da garantia.
processes[n].matter: Array da Pasta (ou caso) do processo.
processes[n].matter[x]:code: Código do caso.
processes[n].matter[x]:Description: Descrição da pasta (ou caso).
processes[n].entryDate: Data de entrada, no formato Protheus YYYYMMDD.
processes[n].staff: Array com os participantes do jurídico no processo.
processes[n].staff[m].position: Cargo do participante.
processes[n].staff[m].initials: Sigla do participante.
processes[n].staff[m].name: Nome do participante.
processes[n].closure: Array que indica dados do encerramento.
processes[n].closure[a].veredict: Texto do encerramento do processo.
processes[n].closure[a].finalValue: Valor final do processo.
processes[n].closure[a].Description: Indica a descrição do motivo do encerramento, campo tabelado.
processes[n].closure[a].date: Data do encerramento.
processes[n].closure[a].Type: Indica o código do motivo do encerramento, campo tabelado.
processes[n].company: Array que indica dados da empresa.
processes[n].company[x].name: Nome da empresa.
processes[n].company[x].code: Código da empresa.
processes[n].area: Array com as Áreas do processo.
processes[n].area[i].description: Descrição da área do processo.
processes[n].area[i].code: Código da área do processo.
processes[n].history: Array de andamentos do processo.
processes[n].history[q].id: Id do andamento.
processes[n].history[q].title: Título do andamento.
processes[n].history[q].date: Data do andamento.
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna os Follow Ups dos Processos, no seguinte formato:
{ "hasNext": true, "fup": [ { "tipFup": "1", "id": "1000000012", "status": "001", "responsable": [ { "id": "001509", "acronym": "JUR", "email": "", "name": "JURI1000", "fone": "" } ], "title": "Em aberto", "date": "20171012", "hour": "15:00" } ] } |
Descrição dos Campos:
hasNext: Indica se existe mais uma página de resultados ou se já está na última página (ver mais detalhes nos parâmetros aceitos: page e pageSize).
fups: Array de fups.
fups[n].id: Identificador do Fup.
fups[n].tipfup: tipo do Fup.
fups[n].date: Data do Fup.
fups[n].hour: Hora do Fup.
fups[n].status: Status do Fup.
fups[n].title: Titulo do Fup.
fups[n].responsable: Array de responsável do Fup.
fups[n].responsable[m].id: id do responsável.
fups[n].responsable[m].acronym: Sigla do responsável
fups[n].responsable[m].email: Email do responsável
fups[n].responsable[m].name: Nome do responsável
fups[n].responsable[m].fone: telefone do responsável
Os parâmetros aceitos serão: fields, searchKey, page e pageSize
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna as áreas disponíveis, no seguinte formato:
{ "hasNext": true, "areas": [ { "subarea": [ { "descriptionSub": "SUBAREA TRABALHISTA", "idSub": "00000" }, { "descriptionSub": "sub trab", "idSub": "00001" } ], "id": "001", "description": "Trabalhista" } ] } |
Descrição dos Campos:
hasNext: Indica se existe mais uma página de resultados ou se já está na última página (ver mais detalhes nos parâmetros aceitos: page e pageSize).
areas: Array das areas.
areas[n].id: Id da area.
areas[n].description: Descrição da area.
areas[n].subareas: Array das subareas.
areas[n].subareas[n].idSub: Id da subarea.
areas[n].subareas[n].descriptionSub: Descrição da subarea.
Os parâmetros aceitos serão: searchKey, page e pageSize.
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna os grupos de aprovação, no seguinte formato:
{ "groupApprover": [ { "filial": "D MG 01 ", "id": "0000001", "codResp": "123456", "approver": "João da Silva", "minLimit": 1000, "maxLimit": 1500000 } ] } |
Descrição dos Campos:
groupApprover[n].id: Id do aprovador na tabela de Aprovadores.
groupApprover[n].codResp: Id do responsável vinculado ao Aprovador.
groupApprover[n].approver: Nome do responsável.
groupApprover[n].minLimit: Valor minimo do aprovador.
groupApprover[n].maxLimit: Valor máximo do aprovador.
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna dados da tabela genérica (SX5), filtrando pelo código da tabela informado, no seguinte formato:
{ "result": [ { "filial": "D MG 01 ", "tabela": "05", "chave": "BOL", "descricao": "Boleto", "descrispa": "Boleta", "descrieng": "Docket" } ] } |
Descrição dos Campos:
result[n].filial: Filial da tabela.
result[n].tabela: Código da tabela.
result[n].chave: Chave do registro.
result[n].descricao: Descrição em Português.
result[n].descrispa: Descrição em Espanhol.
result[n].descrieng: Descrição em Inglês.
Os parâmetros aceitos serão: searchKey, chaveTab.
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna o valor do parâmetro informado, no seguinte formato:
{ "sysParam":{ "name":"MV_JGERDES", "value":"2" } } |
Descrição dos Campos:
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna a lista de campos disponíveis para pesquisa, no seguinte formato:
{ "result": [{"codigo": "000000867" "field": "NSY_COD", "table": "NSYT10", "title": "Codigo OBJETO", "type": "C","f3fields": "NSP_COD-NSP_DESC","comboOptions": [[ "1","Sim"], ["2","Não"]] }]} |
Descrição dos Campos:
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
Retorna a lista de ítens do campo tabelado requisitado, no seguinte formato:
{ "f3Options": [ [ "0001", "Horas extras" ] ] } |
Descrição dos Campos:
O retorno da requisição, em caso de sucesso, deve ser um HTTP 200 OK.
As mensagens de erro deveram obedecer um padrão único, independente do serviço solicitado, de acordo com a ocorrência.
Todas as mensagens de erro devem possuir a mesma estrutura de campos na resposta:
{ "code": "Código do Erro", "message": "Título da mensagem de erro", "detailMessage": "Mensagem de erro detalhada" } |
Deve retornar um status http 403 FORBIDDEN.
Os serviços ficam responsáveis por verificar se o usuário logado tem acesso aos recursos solicitados independentemente de qualquer controle realizado no lado do aplicativo.
{ "code": "403", "message": "Acesso Negado", "detailMessage": "O usuário informado não tem acesso à informação solicitada" } |
Deve retornar um status http 400 UNAUTHORIZED.
{ "code": "403", "message": "Acesso Negado", "detalMessage": "É preciso estar logado para acessar este recurso" } |