# API RecuRent =============== ### endpoint=https://rr.api.induxsoft.net/workspace_id

Obtener planes

GET ```{endpoint}/planes/mensuales/?status={p_status}&xvencer={p_x_vencer}&filtro={p_filtro}&tipo={p_tipo_plan}&ids={p_ids}&vencidos={p_dias_vencido}``` * ```p_ids```. Id de una sesión válida (este parámetro puede omitirse si se pasa el token en el encabezado Authorization: bearer" * ```p_status```. Uno de los siguientes: vigentes, cancelados, borradores, si se omite se consideran solo los vigentes * ```p_filtro```. texto (nombre, id, o campos clave) * ```p_tipo_plan```. Entero (clave primaria) del tipo de plan * ```p_x_vencer```. Entero,si es negativo representa la cantidad de días faltantes para que venza una mensualidad (se incluyen solo los que no tienen parcialidades vencidas), si es positivo se consideran únicamente hasta ese número de días vencidos, 0=todos los vencidos. * ```p_dias_vencido```. Un entero que indica que se incluyan aquellos planes con ```p_dias_vencido``` o más, este parámetro es excluyente con xvencer Respuesta: ``` [ { "tipo":{"nombre":"nombre del tipo de plan","sys_pk":pk_tipo_de_plan}, "id":"Id del contrato", "cliente":{"codigo":"","nombre":""}, "contacto":{"correo":["",...],"movil":["",...]} "contratacion":"fecha_contratacion ", "ult_renovacion":"fecha de la última renovación (si aplica)", "status":"borrador/vigente/cancelado", "divisa":"MXN", "saldo":importe, "saldo_vencido":importe, "usuario":"Usuario que activó el plan", "parcialidades_pagadas":cantidad de parcialidades ya pagadas, "vencimiento":"fecha de la primer parcialidad vencida", "dias_retraso":Días de la primer parcialidad vencida", "objeto":"", "parcialidades":cantidad total de meses, "parcialidad":importe_parcialidad, "cuota_apertura":importe, "anticipo":importe, "cuota_renovacion":importe, "monto":importe total previso, "primer_parcialidad:"fecha", "ultima_parcialidad:"fecha", "renovable":true/false, "auto_renovable":true/false, "descuento_pronto_pago":porcentaje, "bonificacion_pronto_pago":importe, "dias_pronto_pago":días antes del vencimiento que se consideran, "dias_pago_tardio":días después del vencimiento que se consideran, "cargo_pago_tardio":porcentaje, "cuota_pago_tardio":importe, "campos_adicionales":[ {"etiqueta":"","valor":"valor","requerido":true/false}, ... ], "webhook":"" } ] ```

Obtener un plan

GET ```{endpoint}/planes/mensuales/id_contrado/``` Respuesta: ``` { "tipo":{"nombre":"nombre del tipo de plan","sys_pk":pk_tipo_de_plan}, "id":"Id del contrato", "cliente":{"codigo":"","nombre":""}, "contacto":{"correo":["",...],"movil":["",...]} "contratacion":"fecha_contratacion", "ult_renovacion":"fecha de la última renovación (si aplica)", "status":"borrador/vigente/cancelado", "divisa":"MXN", "saldo":importe, "saldo_vencido":importe, "usuario":"Usuario que activó el plan", "parcialidades_pagadas":cantidad de parcialidades ya pagadas, "vencimiento":"fecha de la primer parcialidad vencida", "dias_retraso":Días de la primer parcialidad vencida", "objeto":"", "parcialidades":cantidad total de meses, "parcialidad":importe_parcialidad, "cuota_apertura":importe, "anticipo":importe, "cuota_renovacion":importe, "monto":importe total previso, "primer_parcialidad:"fecha", "ultima_parcialidad:"fecha", "renovable":true/false, "auto_renovable":true/false, "descuento_pronto_pago":porcentaje, "bonificacion_pronto_pago":importe, "dias_pronto_pago":días antes del vencimiento que se consideran, "dias_pago_tardio":días después del vencimiento que se consideran, "cargo_pago_tardio":porcentaje, "cuota_pago_tardio":importe, "campos_adicionales":[ {"etiqueta":"","valor":"valor","requerido":true/false}, ... ], "webhook":"" } ```

Obtener parcialidades que van a vencer

GET ```{endpoint}/planes/mensuales/parcialidades/xvencer/?fi=x&ff=y&limit=z``` * ```fi```. Fecha de inicio (yyyy-MM-dd) del intervalo, opcional, si no se incluye se consideran todas las que venzan antes o sea iguales a ff * ```ff```. Fecha de final (yyyy-MM-dd)del intervalo * ```limit```. opcional, cantidad de elementos a devolver como máximo, por default=1000 Respuesta: ``` { "success": 1, "data": [ { "id_contrato":"id del contrato", "id_cliente":"código del cliente", "creacion":"Fecha de creación del contrato", "vencimiento":"fecha de vencimiento de la parcialdiad", "id_parcilidad":"guid de la parcialidad", "importe":importe original, "cargos":cargos, "descuentos":descuentos, "pagos:"pagos, "saldo":saldo de la parcialidad },... ] } ```

Obtener pagos (ingresos)

GET ```{endpoint}/planes/pagos/?fi=x&ff=y&facturado=z``` * ```fi```: Fecha de inicio (desde)[yyyy-MM-dd], si no se incluye se toma la fecha actual. * ```ff```: Fecha fin (hasta)[yyyy-MM-dd], si no se incluye se toma la fecha actual. * ```facturado```: [true/false] Obtener pagos facturados o no facturados, default=true Respuesta: ``` { success: 1, data: [ { "id_plan_mensual_pago": "id del pago (ingreso)", "id_mensualidad": "sys_guid de la mensualidad pagada", "sys_dtcreated": fecha de creación, "sys_timestamp": fecha de ultima modificación, "formapago": "forma de pago (clave)", "formapago_txt": "forma de pago (descripción)", "importe": importe, "divisa": "divisa", "fecha": "fecha del pago", "usuario": "usuario (nombre/id)", "fecha_factura": fecha en que se facturo o null si aun no se facturo, "id_factura": folio de la factura o null si aun no se facturo, "referencia": "referencia", "concepto": "concepto", "notas": "notas", "id_plan": "id del plan", "id_contrato": "id del contrato", "id_tipo_plan": "id del tipo de plan", "cte_induxsoft": PrimaryKey del cliente, "cte_codigo": "código (nic) del cliente" },... ] } ```

Actualizar pagos (ingresos), datos de facturación

PATCH ```{endpoint}/planes/pagos/{id_pago}/``` ``` payload { "ref_factura": "folio de la factura" } ```

Crear un plan

POST ```{endpoint}/planes/mensuales/``` ``` payload { "tipo": "sys_pk de la tabla rr_tipo_plan_mensual" "cliente": "sys_pk o código de un cliente" "contratacion": "fecha de la contratación del plan yyyy-MM-dd" "inicio": "fecha de inicio yyyy-MM-dd" "id_contrato": "referencia del contrato (opcional)" "mensualidad": "importe mensual" "comision": "cuota de apertura" "anticipo": "importe" "renovable": true/false "autorenovable": true/false "objeto_contrato": "texto (opcional)" "cuota_renovacion": "importe de renovación" "desc_pronto_pago": "descuento pronto pago" "boni_pronto_pago": "bonificación pronto pago" "meses": "meses de duración del contarto (opcional)" "cargo_retraso": "porcentaje del cargo" "cuota_retraso": "importe del retraso" "divisa": "divisa del contrato (opcional)" "dias_pronto_pago": "Número de días del pronto pago (opcional)" "dias_pago_tardio": "Número de días del pago tardio (opcional)" "txt_clave1": "campo adicional (opcional)" "txt_clave2": "campo adicional (opcional)" "txt_clave3": "campo adicional (opcional)" "txt_clave4": "campo adicional (opcional)" "txt_clave5": "campo adicional (opcional)" "req_clave1": "true/false para especificar si el campo txt_clave1 es requerido (opcional)" "req_clave2": "true/false para especificar si el campo txt_clave2 es requerido (opcional)" "req_clave3": "true/false para especificar si el campo txt_clave3 es requerido (opcional)" "req_clave4": "true/false para especificar si el campo txt_clave4 es requerido (opcional)" "req_clave5": "true/false para especificar si el campo txt_clave5 es requerido (opcional)" "clave1": "campo adicional (opcional)" "clave2": "campo adicional (opcional)" "clave3": "campo adicional (opcional)" "clave4": "campo adicional (opcional)" "clave5": "campo adicional (opcional)" "email": "correo electrónico 1 (opcional)" "email1": "correo electrónico 2 (opcional)" "telefono": "teléfono 1 (opcional)" "telefono1": "teléfono 2 (opcional)", "status": "estado del plan , si se omite se se crea como borrador"//Borrador=0, Vigente=1 } Los siguientes campos si se omiten, se establecen con los datos de tipo de plan * mensualidad * comision * anticipo * renovable * autorenovable * objeto_contrato * cuota_renovacion * desc_pronto_pago * boni_pronto_pago * meses * cargo_retraso * cuota_retraso * divisa * dias_pronto_pago * dias_pago_tardio * txt_clave1 * txt_clave2 * txt_clave3 * txt_clave4 * txt_clave5 * req_clave1 * req_clave2 * req_clave3 * req_clave4 * req_clave5 ````

Actualizar un plan

PATCH ```{endpoint}/planes/mensuales/id_contrato/``` ## Estado borrador ``` "cliente": "sys_pk o código de un cliente" "contratacion": "fecha de la contratación del plan" "inicio": "fecha de inicio" "mensualidad": "importe mensual" "comision": "cuota de apertura" "anticipo": "importe" "renovable": true/false "autorenovable": true/false "objeto_contrato": "texto (opcional)" "cuota_renovacion": "importe de renovación" "desc_pronto_pago": "descuento pronto pago" "boni_pronto_pago": "bonificación pronto pago" "meses": "meses de duración del contarto (opcional)" "cargo_retraso": "porcentaje del cargo" "cuota_retraso": "importe del retraso" "divisa": "divisa del contrato (opcional)" "dias_pronto_pago": "Número de días del pronto pago (opcional)" "dias_pago_tardio": "Número de días del pago tardio (opcional)" "txt_clave1": "campo adicional (opcional)" "txt_clave2": "campo adicional (opcional)" "txt_clave3": "campo adicional (opcional)" "txt_clave4": "campo adicional (opcional)" "txt_clave5": "campo adicional (opcional)" "req_clave1": "true/false para especificar si el campo txt_clave1 es requerido (opcional)" "req_clave2": "true/false para especificar si el campo txt_clave2 es requerido (opcional)" "req_clave3": "true/false para especificar si el campo txt_clave3 es requerido (opcional)" "req_clave4": "true/false para especificar si el campo txt_clave4 es requerido (opcional)" "req_clave5": "true/false para especificar si el campo txt_clave5 es requerido (opcional)" "clave1": "campo adicional (opcional)" "clave2": "campo adicional (opcional)" "clave3": "campo adicional (opcional)" "clave4": "campo adicional (opcional)" "clave5": "campo adicional (opcional)" "email": "correo electrónico 1 (opcional)" "email1": "correo electrónico 2 (opcional)" "telefono": "teléfono 1 (opcional)" "telefono1": "teléfono 2 (opcional)", "status": "estado del plan , si se omite se se crea como borrador"//Borrador=0, Vigente=1 ``` ## Estado vigente ``` Solo se prodrán modificar los siguientes campos * email * email1 * telefono * telefono1 * cliente * status (solo a cancelado(2)) ``` ### Actualizar la mensualidad de un plan (estado vigente) PATCH ```{endpoint}/planes/mensuales/id_contrato/``` ``` - modo_afectation * P A partir de la primer mensualidad no pagada (predeterminada) * N A partir de la mensualidad payload { "importe":"Nueva mensualidad" "modo_afectation":"P o N, si se omite toma la predeterminada" "apartir_de":"si modo_afectation es N, Número consecutivo de la mensualidad a partir de la cual se aplicará el cambio" } ``` Respuesta: ``` { "tipo":{"nombre":"nombre del tipo de plan","sys_pk":pk_tipo_de_plan}, "id":"Id del contrato", "cliente":{"codigo":"","nombre":""}, "contacto":{"correo":["",...],"movil":["",...]} "contratacion":"fecha_contratacion", "ult_renovacion":"fecha de la última renovación (si aplica)", "status":"borrador/vigente/cancelado", "divisa":"MXN", "saldo":importe, "saldo_vencido":importe, "usuario":"Usuario que activó el plan", "parcialidades_pagadas":cantidad de parcialidades ya pagadas, "vencimiento":"fecha de la primer parcialidad vencida", "dias_retraso":Días de la primer parcialidad vencida", "objeto":"", "parcialidades":cantidad total de meses, "parcialidad":importe_parcialidad, "cuota_apertura":importe, "anticipo":importe, "cuota_renovacion":importe, "monto":importe total previso, "primer_parcialidad:"fecha", "ultima_parcialidad:"fecha", "renovable":true/false, "auto_renovable":true/false, "descuento_pronto_pago":porcentaje, "bonificacion_pronto_pago":importe, "dias_pronto_pago":días antes del vencimiento que se consideran, "dias_pago_tardio":días después del vencimiento que se consideran, "cargo_pago_tardio":porcentaje, "cuota_pago_tardio":importe, "campos_adicionales":[ {"etiqueta":"","valor":"valor","requerido":true/false}, ... ], "webhook":"" } ```

Cobrar un plan

PATCH ```{endpoint}/planes/{id_plan}/cobrar/``` ``` payload { "forma_pago":"Forma de pago", "importe":Importe, "divisa":"Divisa", "notas":"opcional", "referencia":"opcional", "usuario":"opcional" "fecha":"(opcional) yyyy-MM-dd" } Respuesta: { "success":true/false, "data":{datos del pago...} } ```

Eliminar un plan

DELETE ```{endpoint}/planes/mensuales/id_contrado/``` Respuesta: ``` { "success":true/false, "data":null } ```

Obtener tipos de planes

GET ```{endpoint}/planes/tipos/``` Respuesta: ``` [ { "sys_pk":clave primaria del tipo de plan "nombre":"Nombre del tipo de plan", "periodicidad":"mensual", "parcialidades":número previsto de parcialidades, "parcialidad":importe previsto de la parcialidad, "objeto":"Objeto del plan", "cuota_apertura":importe, "anticipo":importe, "cuota_renovacion":importe, "monto":importe total previso, "renovable":true/false, "auto_renovable":true/false, "descuento_pronto_pago":porcentaje, "bonificacion_pronto_pago":importe, "dias_pronto_pago":días antes del vencimiento que se consideran, "dias_pago_tardio":días después del vencimiento que se consideran, "cargo_pago_tardio":porcentaje, "cuota_pago_tardio":importe, "campos_adicionales":[ {"etiqueta":"","valor":"valor","requerido":true/false}, ... ], "webhook":"" } ] ```

Crear tipo de plan

POST ```{endpoint}/planes/tipos/``` ``` payload { "nombre": "Nombre del tipo de plan" "objeto_contrato": "texto que define el objeto del contrato (opcional)" "meses": "cantidade de meses " "mensualidad": "importe de la mensualidad" "comision": "cuota de apertura (opcional)" "anticipo": "importe del anticipo (opcional)" "cuota_renovacion": "importe de renovación (opcional)" "renovable": true/false (opcional) "autorenovable": true/false (opcional) "desc_pronto_pago": "descuento por pronto pago (%) (opcional)" "boni_pronto_pago": "bonificación por pronto pago (opcional)" "cargo_retraso": "cargo por retraso (%) (opcional)" "cuota_retraso": "cuota por retraso (opcional)" "divisa": "divisa" "txt_clave1": "campo adicionale (optional)" "txt_clave2": "campo adicionale (optional)" "txt_clave3": "campo adicionale (optional)" "txt_clave4": "campo adicionale (optional)" "txt_clave5": "campo adicionale (optional)" "req_clave1": "campo para definir si el campo txt_clave1 es requerido (opcional)" "req_clave2": "campo para definir si el campo txt_clave1 es requerido (opcional)" "req_clave3": "campo para definir si el campo txt_clave1 es requerido (opcional)" "req_clave4": "campo para definir si el campo txt_clave1 es requerido (opcional)" "req_clave5": "campo para definir si el campo txt_clave1 es requerido (opcional)" "webhook": "webhook (opcional)" "dias_pronto_pago": "Número de días del pronto pago (opcional)" "dias_pago_tardio": "Número de días del pago tardio (opcional)" } ```

Actualizar tipo de plan

PATCH ```{endpoint}/planes/tipos/sys_pk/``` ``` * Es posible modificar todos los datos ```

Eliminar tipo de plan

DELETE ```{endpoint}/planes/tipos/sys_pk/``` Respuesta: ``` { "success":true/false, "data":null } ```

Login

POST ``` {endpoint}/login/ ``` ``` payload { "uid":"Identificador del usuario (correo electrónico o teléfono móvil)", "pwd":"Contraseña", "memberships":true/false (opcional, predeterminado false) } ``` ### Con el identificador de sesión ``` payload { "ids":"Identificador de sesión a verificar", "memberships":true/false (opcional, predeterminado false) } * Cuando se ha establecido memberships=true, la respuesta incuirá todas las membrecías que tiene el usuario (los espacios de trabajo, equipos y roles) Respuesta exitosa Content-Type: application/json;charset=utf-8 { "success":true, "data": { "ids":"Identificador de sesión válido", "uid":"Identificador interno del usuario", "name":"Nombre del usuario", "multifactor":true/false, "verified_email":true/false, "verified_mobile":true/false, } } ids es una GUID (cadena de 32 caracteres) que representa un 'token' de sesión uid es una cadena con una GUID que es el identificador interno en la plataforma para el usuario name es el 'nombre completo' del usuario según su registro multifactor es un booleano que indica si está habilitada la autenticación multifactor verified_email indica si el correo del usuario está verificado verified_mobile indica si el número de teléfono móvil del usuario está verificado ```