fluig/Lançamento de documentos/lançamentos/portalfornecedor_endpoint_contract.md
2026-04-15 14:40:55 -03:00

2.9 KiB

Portal Fornecedor - contrato do endpoint intermediario

Objetivo

A widget publica nao deve chamar diretamente:

  • /process-management/api/v2/processes/FlowEssentials_LancamentodeDocumento/start
  • /api/public/ecm/dataset/datasets

Ela deve chamar um endpoint intermediario no servidor, por exemplo:

  • POST /api/public/portalfornecedor/enviar

Esse endpoint e quem usa fluig_rest no backend.

Request esperado da widget

{
  "targetState": 5,
  "comment": "Envio via portal fornecedor",
  "formFields": {
    "data_abertura": "2026-03-13",
    "emitido_por": "fornecedor",
    "entidade_responsavel": "Empresa X",
    "tipo_cadastro": "cpf",
    "emailSolicitante": "email@empresa.com.br",
    "cpf": "12345678900",
    "tipo_documento": "danfe",
    "numero_documento": "123456",
    "valor": "10,00",
    "autorizador_responsavel": "Nome do autorizador",
    "justificativa": "Descricao do servico"
  }
}

Response de sucesso

{
  "success": true,
  "message": "Solicitacao enviada com sucesso.",
  "processInstanceId": "12345",
  "content": {
    "processInstanceId": "12345"
  }
}

Response de erro

{
  "success": false,
  "message": "Descricao do erro"
}

Logica esperada no backend

  1. Receber o JSON da widget.
  2. Validar os campos obrigatorios.
  3. Usar fluigAPI.getAuthorizeClientService().
  4. Invocar o servico fluig_rest.
  5. Chamar o endpoint final: /process-management/api/v2/processes/FlowEssentials_LancamentodeDocumento/start
  6. Retornar para a widget somente o resultado final.

Exemplo de chamada server-side

var clientService = fluigAPI.getAuthorizeClientService();

var requestData = {
  companyId: String(getValue("WKCompany") || "1"),
  serviceCode: "fluig_rest",
  endpoint: "/process-management/api/v2/processes/FlowEssentials_LancamentodeDocumento/start",
  method: "post",
  timeoutService: "100",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  options: {
    encoding: "UTF-8",
    mediaType: "application/json",
    useSSL: true
  },
  params: payloadRecebidoDaWidget
};

var vo = clientService.invoke(JSON.stringify(requestData));
var raw = String(vo.getResult() || "");
var response = JSON.parse(raw);

Configuracao da widget

Por padrao a widget usa:

  • https://api.grupoginseng.com.br/v2/portalfornecedor/enviar_api_public_portalfornecedor_enviar_post

Se necessario, sobrescreva antes de carregar a widget:

<script>
window.portalfornecedorConfig = {
  publicEndpointUrl: "https://api.grupoginseng.com.br/v2/portalfornecedor/enviar_api_public_portalfornecedor_enviar_post"
};
</script>

Observacao importante

apiKey no front nao substitui OAuth 1.0 do Fluig. Se existir um header como apiKey, ele deve ser validado apenas no endpoint intermediario. O endpoint intermediario continua sendo o responsavel por usar fluig_rest no servidor.