Centro de Consultores
Consultor
0 • Menú de la plataforma
0 • Menú de la plataforma
1 • Organización
1 • Organización
2 • Operaciones
2 • Operaciones
3 • Áreas de operación
3 • Áreas de operación
4 • Usuarios
4 • Usuarios
5 • Perfil de usuarios
5 • Perfil de usuarios
6 • Actores
6 • Actores
7 • Eventos
7 • Eventos
8 • Fichas de actores
8 • Fichas de actores
9 • Flujos de trabajo o proceso
9 • Flujos de trabajo o proceso
10 • Formularios
10 • Formularios
11 • Configuración de datos
11 • Configuración de datos
12 • Carga masiva de datos
12 • Carga masiva de datos
13 • Hoja de cálculo
13 • Hoja de cálculo
14 • Reportes PDF de Flujos y Formularios
14 • Reportes PDF de Flujos y Formularios
15 • Dashboards dinámicos
15 • Dashboards dinámicos
16 • Gestor documental
16 • Gestor documental
17 • Notificaciones
17 • Notificaciones
18 • Herramienta del consultor
18 • Herramienta del consultor
Crear acciones en Sepiia
Esta API permite crear o actualizar acciones en el sistema Sepiia. Las acciones se definen según el plugin utilizado, teniendo una parte fija una asociada a lo que requiere el plugin: Sección internalData.
En este documento se presenta lo requerido por el plugin smartdici.sepiia.action.PNGCommandPlugin, que permite el llamado a cualquier API Rest.
La biblioteca de acciones configurada se verá en el paso 4 del Wizard de reglas:
Endpoint
{ "code": "CMD1", "name": "Asignar valor a atributo", "plugin": "smartdici.sepiia.action.PNGCommandPlugin", "destinity": "API", "categoryCode": "COMMAND", "categoryLabel": "Acciones y comandos", "logic": { "fieldForm": { "fields": [ { "name": "task", "label": "Valor", "value": "", "variable": true, "emoji": true, "helpText": "", "type": "TEXTAREA", "maxLenght": 5000, "dataSource": "element.PAGE", "items": [ { "label": "Activo", "value": "active" } ] } ] }, "internalData": { "platformCode": "GENAPI", "testMode": false, "metaData": { "clave": "valor" }, "defaultValues": { "goal": "Compra de licencia microsoft", "command": { "fullUrl": "https://<host:port>/#clave#/$task", "contentType": "application/json", "getParameters": "", "headerParameters": [ { "key": "", "value": "" } ], "postParameters": { "clave": "valor" }, "customAuthorization": "", "cookie": { "name": "Identificador de la cookie", "value": "Cuerpo de la cookie", "domain": "dominio del que la genera", "path": "Path, común mente solo /" }, "files": [ "path_archivo1", "path_archivo2" ], "authGenerator": { "authPayload": {}, "authMethod": "bearer/cookie", "authUrl": "URL para la autenticación", "tokenTAG": "Variable que contiene el token", "tokenPath": "Query JsonPath" }, "conditions": { "operator": "AND", "conditions": [ { "field": "$.status", "operator": "eq", "value": "SUCCESS" } ], "nextCommand": { "true": "C3", "false": "C2" } } } }, "successfulResponses": "SUCCESS", "errorResponses": "", "quarantineMinutes": 0, "quarantineSecconds": 0, "quarantineDays": 0, "validQuarantine": false, "maxAffectPerDay": 1, "recordableOnError": "", "returnErrorInQuarantine": "", "waitMilisecond": "", "responseMapping": { "<Attribute1>": "<JsonPath>" } } } }
Descripción de campos
CAMPO | Descripción |
code | Identificador del comando que lo hará único dentro del tenant |
operationId | Identificador del tenant. |
user | Usuario de administración. |
name | Nombre identificatorio de la acción. |
plugin | Siempre se usa este plugin. |
destinity | Código identificatorio de la acción. Siempre es "API" en este escenario. |
categoryCode | Categoría de acción donde se mostrará en el paso 4 del wizard de reglas. Dejar así. |
categoryLabel | Nombre de la categoría de acción. Dejar así. |
logic | Lógica de invocación de la API. |
logic.fieldForm | Formulario para que el usuario ingrese datos en el paso 4 del Wizard de reglas. |
logic.fieldForm.fields | Los campos pueden ser utilizados como metadatos en todo el segmento "internalData" anteponiendo $ al nombre del campo, ejemplo: $name . |
logic.fieldForm.fields.name | Nombre interno del campo. |
logic.fieldForm.fields.label | Etiqueta que verá el usuario. |
logic.fieldForm.fields.value | Valor por defecto que aparecerá en el formulario. |
logic.fieldForm.fields.variable | Valor booleano que indica si activa el botón '@' de Metadatos. |
logic.fieldForm.fields.emoji | Valor booleano que indica si activa el botón de emoticons. |
logic.fieldForm.fields.helpText | Texto de ayuda sobre el campo. |
logic.fieldForm.fields.type | Tipo de datos. Por defecto es STRING ; otros valores son TEXTAREA y SELECTION . |
logic.fieldForm.fields.maxLenght | Largo del campo. |
logic.fieldForm.fields.dataSource | Data source en formato JsonPath para desplegar un dropdown con valores de la base de datos. Las posibles fuentes son: element para Elementos, custom para dominios propios del tenant, sepiia para fuentes propios de Sepiia. Solo utilizable con tipo SELECTION . |
logic.fieldForm.fields.items | Lista de valores estáticos para desplegar en un dropdown. |
logic.fieldForm.fields.items.label | Etiqueta que ve el usuario en el dropdown. |
logic.fieldForm.fields.items.value | Valor que se envía en el comando. |
logic.internalData | Sección de datos internos que interpreta el plugin. Se pueden utilizar como metadatos además de los campos del FieldForm y de la sección "metaData", los atributos del evento, de la siguiente forma: @@<nombre_atributo>@@ . |
logic.internalData.platformCode | Código de la plataforma. |
logic.internalData.testMode | Modo de prueba. |
logic.internalData.metaData | Lista de metadatos que pueden ser utilizados en la sección "defaultValues" , cuando el comando es muy extenso y hay valores configurables repetitivos. Los mismos se referencian así: ##<clave_campo_metadato>## . |
logic.internalData.metaData.clave | Clave del metadato. |
logic.internalData.metaData.valor | Valor del metadato. |
logic.internalData.defaultValues | Valores predeterminados. |
logic.internalData.defaultValues.goal | Código del comando para poder guardar las veces que se ha enviado al elemento. |
logic.internalData.defaultValues.command | Comando de la API.Si el valor está envuelto en {} como un nodo JSON, el provisionador entenderá que es un solo comando. Pero si se requiere enviar más de uno, de forma concatenada, los nodos se envuelven entre [] como un arreglo de comandos. |
logic.internalData.defaultValues.command.fullUrl | URL de la API. |
logic.internalData.defaultValues.command.contentType | Tipo de contenido. |
logic.internalData.defaultValues.command.getParameters | Lista de parámetros a enviar por GET, si es que no se desean colocar en "fullUrl" . |
logic.internalData.defaultValues.command.postParameters | Lista de parámetros a enviar por POST. Se pueden enviar en formato JSON, como el ejemplo, en formato texto, contenidos en comillas dobles. |
logic.internalData.defaultValues.command.customAuthorization | Método de autorización de la API. En formato "Bearer <Token>" o "Basic <Hash con usuario y password>" o "key=<Llave>" . |
logic.internalData.defaultValues.command.headerParameters | Lista de parámetros de cabecera HTTP a enviar opcionalmente en formato key: value . |
logic.internalData.defaultValues.command.cookie | Objeto con los datos de una cookie si la API lo requiere. Se deben llenar los datos: name , value , domain y path . |
logic.internalData.defaultValues.command.files | Lista de nombre de archivos en caso de que la API los reciba en modo Multipart. La URL de cada archivo debe ser pública para que Sepiia los pueda leer y enviar de forma binaria a la API. |
logic.internalData.defaultValues.command.authGenerator | Objeto que permite la generación de un bearer token o de una cookie antes de hacer la llamada de la API. |
logic.internalData.defaultValues.command.authPayload | Objeto JSON que contiene el payload de la autenticación que requiere la API, típicamente {“username”:””,”password”:””} . |
logic.internalData.defaultValues.command.authMethod | Método de autenticación: bearer o cookie. |
logic.internalData.defaultValues.command.authUrl | URL de la API de autenticación. |
logic.internalData.defaultValues.command.tokenTAG | Nombre de la variable que contiene el token en la respuesta de la API. |
logic.internalData.defaultValues.command.tokenPath | Ruta en formato JsonPath para recuperar el token cuando viene dentro de una estructura más compleja, por ejemplo: { "status": "OK", "response": { "token": "xxxx" }} La configuración de los parámetros tokenTAG y tokenPath serían: “tokenTAG”: “token”,“tokenPath”: “$.response” . |
logic.internalData.successfulResponses | Lista de palabras clave que contenga la respuesta de la API para reconocer que ha sido exitosa. La lista se separa por | . |
logic.internalData.errorResponses | Lista de palabras clave para reconocer que la ejecución fue errónea (opcional). |
logic.internalData.quarantineMinutes | Minutos en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción. |
logic.internalData.quarantineSecconds | Segundos en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción. |
logic.internalData.quarantineDays | Días en que el comando no se vuelve a enviar al mismo elemento. 0 = no hay restricción. |
logic.internalData.validQuarantine | Activa o desactiva la validación de cuarentenas. |
logic.internalData.maxAffectPerDay | Máximos de veces que se envía el comando en un día. |
logic.internalData.recordableOnError | Establece si deja registro histórico si el comando dio error. |
logic.internalData.returnErrorInQuarantine | Establece si marca como error cuando el comando no se envía por cuarentena. |
logic.internalData.waitMilisecond | Tiempo máximo de espera para enviar el comando, cuando la plataforma destino está colapsada o su control de flujo es limitado. |
logic.internalData.responseMapping | Mapeo de variables rescatadas de la respuesta de la API y mapeadas en atributos de Sepiia, que puedes ser usados en las siguientes reglas o acciones del evento. |
Response
{ "status": "SUCCESS", "description": "OK", "id": 341 }
Descripción de campos
Campo | Descripción |
status | Estado con el resultado de la operación: SUCCESS o ERROR . |
description | Descripción del estado, con el detalle del error en caso de haberlo. |
id | ID asignado a la acción configurada. |
Interactuar con el provisionador para probar llamadas de API
Endpoint
(Se debe enviar el mismo token que a la API CommandConfig)
Request
{ "to": "GENAPI", //Siempre igual "appId": "1", //Siempre igual "extRequest": "1", //Siempre igual "request": 0, //Siempre igual "priority": true, //Siempre igual "TransactionType": 2, //Siempre igual "wait": 0, //Siempre igual "message": {} //Nodo JSON o Arreglo de JSON con llamadas a APIs a ejecutar. Es lo que se mapea dentro del campo “command” en la API CommandConfig }
Ejemplo de llamada encadenada de APIS
{ "to": "GENAPI", "appId": "1", "extRequest": "1", "request": 0, "priority": true, "TransactionType": 2, "wait": 5000, "message": [ { "id": "C1", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY[?(@.key == 'SECURE')]", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033", "responseMapping": { "typeProdLabel": "$.data[0].label", "typeProdId": "$.data[0].id" }, "conditions": { "operator": "AND", "conditions": [ { "field": "$.status", "operator": "eq", "value": "SUCCESS" }, { "operator": "OR", "conditions": [ { "field": "$.data[0].label", "operator": "eq", "value": "Seguridad perimetral" }, { "field": "$.data[0].value", "operator": "gt", "value": 1000 } ] } ], "nextCommand": { "true": "C3", "false": "C2" } } }, { "id": "C2", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY[?(@.id == '${typeProdId}')]", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033" }, { "id": "C3", "fullUrl": "https://app.sepiia.run/Sepiia6-gestion/rest/general/ExecuteJsonPathQueryFromOrigin", "contentType": "application/json", "getParameters": "", "headerParameters": [], "postParameters": { "source": "custom.PROD_CATEGORY", "operationId": 20 }, "customAuthorization": "Bearer 480nwy5j92xeftb3x0hxe2w4ade0c5e8vr89q2e8l8e0102jve8y97t21lzs78c4222w577033" } ] }
Reemplazar este instructivo por el link al formulario de feedback de la sección.
- Duplicar un formulario de feedback de CDA Usuarios de Tally (CDA-C-Nombre de sección) y colocarle el nombre de la sección actual.
Importante: Si esta nueva sección de Notion fue reubicada en medio de otras secciones pre-existentes, habrá que corregir la numeración todos los formularios de Tally que refirieran a las secciones que tuvieron que cambiar de numeración.
- Dentro del formulario, ir a “Share” > “Embed form” y seleccionar “Standard”.
- Seleccionar “Copy embed link”.
- Pegar el link al final de la columna central de la página de Notion y seleccionar Embed/Insertar.
- Ajustar el alto del formulario. El inicio de la L espejada, en la esquina inferior derecha, debe estar apenas por debajo del botón “Creado con Tally”.