att
This commit is contained in:
@@ -0,0 +1,117 @@
|
||||
# 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
|
||||
|
||||
```json
|
||||
{
|
||||
"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",
|
||||
"justificativa": "Descricao do servico"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Response de sucesso
|
||||
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Solicitacao enviada com sucesso.",
|
||||
"processInstanceId": "12345",
|
||||
"content": {
|
||||
"processInstanceId": "12345"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Response de erro
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
|
||||
```javascript
|
||||
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:
|
||||
|
||||
```html
|
||||
<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.
|
||||
Reference in New Issue
Block a user