Saltar al contenido principal

Estructurando tu archivo de definición JSON

Descripción de la información que constituye tu archivo de definición

Para crear tu tabla personalizada en el modelo de datos, será necesario definir su estructura a través de un archivo JSON.

Este archivo JSON debe contener una serie de información. Algunos de estos datos son obligatorios, mientras que otros son opcionales. Además, pueden tener ciertas restricciones, ya sea en cuanto a su tipo o a los valores posibles.

consejo

La estructura del archivo JSON es la misma que la carga útil de las llamadas API realizadas para crear una tabla.

Puede encontrar una guía detallada en el Portal para desarrolladores.

Ejemplo de un archivo JSON completo

El siguiente archivo proporciona un ejemplo del formato que debe tener un archivo que contenga todos los parámetros posibles, con los valores esperados.

Ejemplo visual de un archivo de definición JSON

{
"name": "OnlineOrders",
"entinyName": "entity",
"type": "INTERACTIONS",
"primaryKeyAttribute": "orderId",
"creationTimeAttribute": "orderMoment",
"compositeKey": null,
"bigTable": false,
"attributes": [
{
"name": "orderId",
"valueType": "STRING",
"mandatory": true,
"indexed": true,
"unique": true,
"valueRestriction": {
"minLength": 20,
"maxLength": 20
}
},
{
"name": "storeId",
"valueType": "LONG",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "customerId",
"valueType": "LONG",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "orderMoment",
"valueType": "TIMESTAMP",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": null
},
{
"name": "amount",
"valueType": "NUMBER",
"mandatory": true,
"indexed": false,
"unique": false,
"valueRestriction": null
},
{
"name": "status",
"valueType": "STRING",
"mandatory": true,
"indexed": true,
"unique": false,
"valueRestriction": {
"acceptedValues": [
"NEW",
"SHIPPING",
"SHIPPED",
"CANCELED"
]
}
}
],
"valueAttribute": "amount",
"foreignKeys": [
{
"name": "link-to-customer",
"attribute": "customerId",
"reference": {
"tableType": "PROFILE_TABLE",
"tableId": "97",
"attribute": "customerId"
},
"onDelete": "CASCADE"
},
{
"name": "link-to-store",
"attribute": "storeId",
"reference": {
"tableType": "CUSTOM_TABLE",
"tableId": "d4d85214-66d4-4072-b98b-a86c9253b980",
"attribute": "storeId"
},
"onDelete": "CASCADE"
}
],
"eventsToTrigger": [
{
"name": "shipped-online-order",
"triggerRules": [
{
"onOperation": "UPDATE",
"onAnyAttribute": [
"status"
],
"onMatchingState": {
"stateBeforeOperation": {
"logicalOperator": "AND",
"predicates": [
{
"attribute": "status",
"operator": "!=",
"value": "SHIPPED"
}
]
},
"stateAfterOperation": {
"logicalOperator": "AND",
"predicates": [
{
"attribute": "status",
"operator": "=",
"value": "SHIPPED"
}
]
}
}
}
]
}
],
"cleaningRules": {
"oldestRecordsRule": {
"numberOfRecordsToKeep": 200000
}
},
"displayOptions": {
"displayName": "Online Orders",
"description": "The table that hosts the orders from an online store. Those orders are linked to the Customers profile table.",
"forAttributes": [
{
"name": "orderId",
"description": "The unique id of the order",
"displayName": "Online Orders ID"
},
{
"name": "storeId",
"description": "The unique id of the online store on which the order has been created.",
"displayName": "Store ID"
},
{
"name": "customerId",
"description": "The unique id of customer who has created the order.",
"displayName": "Customer ID"
},
{
"name": "orderMoment",
"description": "The moment when the order has been created",
"displayName": "Order Moment"
},
{
"name": "amount",
"description": "The amount of the order",
"displayName": "Amount"
},
{
"name": "status",
"description": "The status of the order",
"displayName": "Status"
}
],
"forEvents": [
{
"name": "shipped-online-order",
"displayName": "Shipped Online Order"
}
],
"layout": {
"defaultAttributes": [
"orderId",
"customerId",
"amount",
"status"
],
"sections": [
{
"displayName": "Identifiers",
"attributes": [
"orderId",
"customerId",
"storeId"
]
},
{
"displayName": "Other attributes",
"attributes": [
"amount",
"status",
"orderMoment"
]
}
]
}
}
}

Tipos de campos

Según su tipo, los campos deben cumplir ciertas restricciones:

  • STRING: secuencia de caracteres [a-z, A-Z, 0-9]

    • la longitud máxima para el tipo STRING es de 255 caracteres. Esto se puede modificar con el parámetro "typeValidator" (ver tabla anterior)
  • LONG:

    • valor máxima: 9223372036854775808

    • valor mínima: -9223372036854775808

    • sin espacios, puntos ni comas

  • BOOLEANO: respetar los siguientes valores "true" o "false"

  • FECHA: cadena de caracteres que cumple con uno de los siguientes formatos:

    • YYYYMMDD

    • YYYY-MM-DD

    • dd/MM/yyyy

  • TIMESTAMP: cadena de caracteres que cumple con uno de los siguientes formatos:

    • YYYYMMDD *

    • YYYY-MM-DD *

    • dd/MM/yyyy *

    • YYYYMMDDhhmmss

    • YYYY-MM-DD hh:mm:ss

    • dd/MM/yyyy HH:mm:ss

    • MM/dd/yyyy hh:mm:ss AM|PM

* si no hay valor para hhmmss, se agregarán los valores 00:00:00

  • NUMÉRICO:

    • el separador debe ser un .

    • sin límite de número de caracteres

Información

Además del tipado general, existe un tipado avanzado para algunos campos, para asegurarse de que su formato coincida con el formato esperado por Actito.

Estos son los tipos "EMAIL_ADDRESS", "SEX", "COUNTRY", "LANGUAGE", "PHONE_NUMBER", "CIVIL_STATE". La sintaxis requerida para estos tipos se detalla en la página "Utiliser les attributs prédéfinis".

Para especificar que un campo de su tabla corresponda a uno de estos tipos, será necesario especificarlo en el parámetro "objectType".