Versiones comparadas

Clave

  • Se ha añadido esta línea.
  • Se ha eliminado esta línea.
  • El formato se ha cambiado.

...

...

...

  • GET

Obtiene los registros.

  • POST

Agrega registros.

  • DELETE

Elimina los registros.

  • PUT

Edita los registros.

Parámetros

Los parámetros que recibirán la URL son:

model

Cadena con el nombre del modelo. Perteneciente a la ruta de la URL esta será el hincapié para mostrar los resultados; model es el nombre de la tabla que se encuentra en la base de datos; no todas las tablas estarán habilitadas para operarlas.

id

El identificador del modelo. Entero positivo mayor a uno y llave primaria del modelo. Perteneciente a la ruta de la URL y en algunas operaciones será opcional y otras no será tomado en cuenta.

type

...

Acceso y Tokens

Para utilizar la API de Sagicc y tener acceso a todos sus métodos, es imprescindible que dispongas de una instancia activa de Sagicc.

El punto de acceso general, requerido para todas las solicitudes de métodos de la API, es el siguiente:

https://miinstancia.sagicc.co/api

La API de Sagicc opera a través de tokens de acceso, los cuales son esenciales para autenticar y autorizar cada solicitud efectuada. Desde el módulo Credenciales de la API, puedes acceder a las credenciales con el propósito de generar nuevos tokens de acceso. Cada petición realizada a la API debe ir acompañada del encabezado 'Authorization', a través del cual debes enviar el token de acceso. El formato adecuado es el siguiente:

Authorization: Bearer tu-token-de-acceso

Métodos

La API de Sagicc se basa en varios métodos HTTPS que permiten comprender la acción que deseas llevar a cabo con la información. Para obtener o leer datos, se utiliza el método GET. Para crear o agregar nueva información, se emplea el método POST. Cuando se requiere actualizar o editar datos, se utiliza el método PUT, y para eliminar información se recurre al método DELETE.

METODO

ACCION

EJEMPLOS

GET

Lee u obtiene uno o más registros

  • Obtener el listado de casos de una campaña.

  • Obtener los clientes creados entre un rango de fechas específico.

  • Obtener el listado de gestiones asociadas a un caso específico.

POST

Agrega un nuevo registro

  • Agregar un nuevo caso a la plataforma.

  • Agregar un nuevo dato de contacto (teléfono) a un cliente existente.

PUT

Actualiza o edita un registro específico

  • Actualizar un dato de contacto existente para un cliente.

  • Actualizar la información de una cuenta específica.

DELETE

Elimina un registro especifico

  • Eliminar un cliente específico.

Parámetros

A continuación, se detallan los parámetros aceptados por el endpoint de la API de Sagicc para llevar a cabo diversas acciones:

  • model: Indica el nombre del modelo sobre el cual deseas ejecutar la acción. Este parámetro está vinculado a la tabla presente en la base de datos que contiene los registros relevantes. Los valores posibles para este parámetro son los siguientes:

  • agente_campana_canal

  • agente_estado_agente

  • campana

  • campana_canal

  • campana_estado_caso

  • campana_supervisor

  • campo

  • canal

  • caso

  • ciudad

  • cliente

  • cliente_dato_contacto

  • cola_campana_canal

  • conexion

  • cuenta

  • cuenta_campana

  • cuenta_caso

  • formulario

  • gestion

  • pais

  • registro_canal

  • skill

  • tipo_campo

  • tipo_canal

  • tipo_canal_tipo_dato_contacto

  • tipo_caso

  • tipo_dato_contacto

  • tipo_documento

  • usuario

  • usuario_skill

  • type: Esta cadena indica el tipo de consulta de registros que se

...

  • ‘tree’: Tipo árbol. Mostrará los registros con tantos niveles que tenga el modelo en conjunto a sus relaciones.

  • ‘lineal’: Tipo líneal. Mostrará los registros en un solo nivel de array usando la notación

punto. Cada punto indica la profundidad de la misma. Va acompañado con las relaciones.

...

  • desea obtener. Los valores aceptados para este parámetro son: tree (árbol), lineal y normal. Se debe proporcionar este campo en las solicitudes GET (requerido).

    • tree: Este tipo presenta los registros en forma de árbol, mostrando todos los niveles del modelo y sus relaciones.

    • lineal: Este tipo muestra los registros en un único nivel de matriz utilizando la notación de puntos para indicar la profundidad. También incluye las relaciones.

    • normal: Este tipo muestra las columnas del modelo junto con las relaciones adyacentes.

  • columns:

Un conjunto de cadenas con los nombres de las columnas a mostrar. Se Parametriza en el query de la URL cuando el método de la solicitud es GET. Necesita de las siguientes condiciones y estructuras para operar:

  • {Array}.length > 0

Si no tiene contenido el array o es nulo, muestra todas las columnas disponibles del modelo.

  • Con tipo de consulta de registros tree o lineal es necesario los nombres de la columna del modelo de la siguiente manera:

{String} column [ , … ]

  • Si el tipo de consulta de registros es normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades, solo si hay relaciones). Seguir la siguiente estructura

{String} model.column [ , … ]

relations

Un JSON con las relaciones que se unirán con el modelo. Se Parametriza en el query de la URL cuando el método de la solicitud es GET. Pueden tener uno a más niveles de relaciones solo siguiendo la siguiente estructura:

  • {Object} relations

Parámetro para los métodos GET. Si no tiene contenido o es nulo no asignará ninguna relación.

  • Si el tipo de consulta de registros es tree o lineal debe tener la siguiente estructura:

complexRelations : {Array} columns [ , … ]

La llave es el nombre de la relación y el valor es un array de las columnas de la relación que se quieran mostrar.

  • Si el valor de la relación es vacío se pondrán todas las columnas disponibles.

  • Si la relación a agregar es de uno a muchos deben expresar obligatoriamente el ID tanto de la relación como el relacionado. Si no se hace, no mostrará ninguna información.

  • Por convención, los nombres de las relaciones de uno a muchos y de muchos a muchos, serán en plural, mientras que las relaciones inversas de muchos a uno son en singular.

  • Para las relaciones que denominamos complexRelations, cada relación se divide por puntos y deben relacionarse unas con otras para que la consulta se genere.

  • Si el tipo de consulta de registros es normal deberá tener la siguiente estructura:

{Object} model : {Array} columns [ , … ]

La llave es el nombre de la tabla y el valor es un array de las columnas de la relación que se requieran

  • Si el valor de la relación es vacío se pondrán todas las columnas disponibles.


page

{Integer}: > = 1;

El número de página. Se Parametriza en el query de la URL cuando el método de la solicitud es GET

y cuando el id en la ruta de la URL no exista. Por defecto asignado a 1.

searchText

{String}

Texto de búsqueda. Buscará en el contenido de las columnas. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista.

  • Buscará en el contenido de las columnas de model.

  • Si el tipo de consulta de registros es normal, podrá realizar búsquedas a las columnas de las relaciones también.

  • Por defecto, no realizará búsquedas hasta asignarle un valor.

sizePerPage

{Integer}: >= 1.

Tamaño por página. Comúnmente llamado Límite. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Limita la cantidad de registros para cada página o visualización. Por defecto asignará 50.

sortName

{String|Integer}: {string} column || {string} model.column || {Integer} numberColumn

Organizar los registros por el nombre de la columna. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista.

  • Se utiliza el nombre de la columna que exista en model.

  • Se utiliza, adicionalmente, las columnas añadidas en las relaciones, siempre y cuando el tipo de consulta sea normal.

  • Número entero de la posición de la columna. Por defecto se elegirá la primera columna escogida. La posición de las columnas se elige a partir de cómo se hayan ingresado primero en el parámetro columns y, si el tipo de consulta de registros es normal, tomará en cuenta la ocurrencia de las columnas en el parámetro relations.

  • En el caso de que el tipo de consulta de registros sea normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades).

sortOrder

{String}: ‘asc’|| ‘desc’

Cadena con la orientación del ordenamiento de los registros. Ascendente o Descendentemente. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Por defecto asignará asc

enabled

{Boolean}: true || false || null

Opción Habilitado perteneciente a los registros. Se Parametriza en el query de la URL cuando el método de la solicitud es GET. Por defecto mostrará la opción true. Se filtran si:

  • true: Solo habilitados.

  • false: Inhabilitados.

  • null: Se mostrarán todos.

deleted

{Boolean}: true || false || null

Opción eliminado perteneciente a los registros. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Por defecto mostrará la opción false. Se filtran si:

  • true: Solo eliminados.

  • false: No eliminados.

  • null: Se mostrarán todos.

grouping

{Array}

Agrupación de los registros. Conjunto de cadenas con las columnas a agrupar. Se Parametriza en el query de la URL cuando el método de la solicitud es GET y cuando el id en la ruta de la URL no exista. Por defecto es null. Utiliza la siguiente estructura para cada una de las cadenas:

{array} [ model . ] column

En el caso de que el tipo de consulta de registros sea normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades).

conditions

Una cadena para realizar filtrados condicionales dentro del modelo y sus relaciones. Si el parámetro no tiene información no tendrá condiciones. conditions disponible para el método GET y cuando el id en la ruta de la URL no exista. Debe cumplir la siguiente estructura:

  • Si el tipo de consulta de registros es tree o lineal deberá tener la siguiente estructura (column [ = | != ] value) [AND|OR] […]

  • Si es de tipo normal es necesario poner de prefijo el nombre del modelo si hay relaciones con otros modelos (Para evitar ambigüedades).

(model.column [ = | != ] value) [AND|OR] […]

resources

Estructura en formato JSON con la información de las columnas a editar y crear en el modelo.

  • Para los métodos POST y PUT, será necesario un objeto o un conjunto con las columnas y valores.

  • Si en el método PUT existe el id en la URL, debe ser exclusivamente un objeto con las columnas y sus valores.

  • Si en el método PUT no existe el id en la URL, debe ser un conjunto de objetos y a su vez estos deben contener el id en todos para distinguir los cambios en cada uno.

  • En el método POST, debe contener un conjunto de objetos de las columnas y valores.

  • El objeto relation.

Dentro de cada elemento de los registros para el método POST, se puede añadir la llave relation para agregar inmediatamente registros relacionados con el modelo que se ha añadido. Luego de que la operación sea exitosa, operará dichos objetos utilizando el nombre de la relación, sin embargo, no será multinivel, es decir solo registrará los que

tenga una relación adyacente con el modelo. Cada relación puede agregar múltiples registros.

  • {Object} relation {

{Array} simpleRelation :

{Object} column: value [, …]

[, …]

}

ids

Estructura JSON con identificadores para eliminar en el modelo. Para el método DELETE se necesitará de este parámetro en body de la solicitud. Si la URL proporcionada posee el id y el método es DELETE, no se tomará en cuenta dicho JSON.

  • ids tendrá un conjunto de valores enteros (ID).


Variables

  • simpleRelation = relation

simpleRelation será la relación de nivel 1, es decir que no será multinivel.

  • complexRelations = relation [ .internalRelationship [ .deepInternalRelationship … ] ] complexRelation serán las relaciones de nivel n, es decir serán multinivel. Se necesita de la relación directa con el modelo y luego, separados por puntos, se irá profundizando con las demás relaciones de cada uno de las relaciones anteriores.


Diccionario

  • column = La columna del modelo o relación.

  • model = Nombre del Modelo.

  • relation = El nombre de la relación que dependerá de cada uno de los modelos y del tipo de relación, es decir, si son uno a muchos, muchos a uno, y muchos a mucho. Las relaciones uno a mucho, se representarán en plural, al igual que muchos a muchos, mientras que de muchos a uno serán en singular.

  • internarRelationship = Cadena con el nombre de la relación que se relaciona con la anterior.

  • deepInternalRelationship = Cadena con el nombre de la relación que se relaciona aún más con la anterior.

  • numberColumn = Número entero de la posición de la columna. La posición de las columnas se elige a partir de cómo se hayan ingresado primero en los select de la consulta.

  • value = El contenido de, por lo general, una llave, un array o variable.


Estructura

La estructura del API será de la siguiente manera

  • GET

    • {model}/

      • type

      • columns

      • relations

      • page

      • searchText

      • sizePerPage

      • sortName

      • sortOrder

      • enabled

      • deleted

      • grouping

      • conditions

    • {model}/{id}

      • type

      • columns

      • relations

  • DELETE

    • {model}/

      • ids

    • {model}/{id}

  • PUT

    • {model}/ || {model}/{id}

      • resources

  • POST

    • {model}/

      • resources

    • {service}/{name}


Relaciones

Presentaremos el mapa de cómo los modelos se relacionan con otros modelos.


Modelo

Relaciones

agente_campana_canal

"agente"
"campanaCanal"

agente_estado_agente

"agente"
"estadoAgente"

campana

"estadoCasos"
"casos"
"formulario"
"usuarioResponsable"
"canales"
"cuentas"
"supervisores"
"campanaCanales"

campana_canal

"usuarios"
"agentes"
"canal"
"campana"

campana_estado_caso

"campana"

campana_supervisor

"supervisor"
"campana"

campo

"conexion"
"tipo"
"formulario"

canal

"registros"
"tipo"
"campanas"
"campanaCanales"

caso

"gestiones"
"documentos"
"registros"
"cliente"
"tipo"
"campana"
"usuario"
"cuentas"

ciudad

"pais"
"datoContactos"

cliente

"datoContactos"
"casos"
"cuentas"
"tipoDocumento"

cliente_dato_contacto

"cliente"
"tipo"
"ciudad"

cola_campana_canal

"agente"
"campanaCanal"

conexion

"campo"

cuenta

"cliente"
"casos"
"campanas"

cuenta_campana

"cuenta"
"campana"

cuenta_caso

"cuenta"
"caso"

formulario

"campos"
"campanas"
"gestiones"

gestion

"caso"
"formulario"
"usuario"

pais

"ciudades"

registro_canal

"caso"
"canal"

skill

"usuarios"

tipo_campo

"campos"

tipo_canal

"canales"
tipoDatoContactos

tipo_canal_tipo_dato_contacto

"tipoCanal"
"tipoDatoContacto"

tipo_caso

"casos"

tipo_dato_contacto

"datoContactos"
"tipoCanales"

tipo_documento

"clientes"

usuario

"estados"
"roles"
"skills"
"campanasCanales"
"campanasSupervisadas"

usuario_skill

"usuario"
"skills"