Diferencia entre revisiones de «API Articulos»

De WikiSerpi
Ir a la navegación Ir a la búsqueda
Created page with "'''Descripción:''' Este reporte entrega una visión completa de la gestión del agente al resumir individualmente la actividad del asesor indicando el total de las llamadas gestionadas (inbound/ outbound/ internal), el tiempo que ha usado en cada fase de la atención al cliente (tiempo de Ring, ACW y AHT), fecha y hora de Log In/Log Out, además la cantidad de hits y RPC. '''Autorización:''' Se requiere autenticación para todas las solicitudes. Las credenciales de au..."
 
Sin resumen de edición
 
(No se muestran 14 ediciones intermedias de 3 usuarios)
Línea 1: Línea 1:
'''Descripción:'''
'''Descripción:'''
Este reporte entrega una visión completa de la gestión del agente al resumir individualmente la actividad del asesor indicando el total de las llamadas gestionadas (inbound/ outbound/ internal), el tiempo que ha usado en cada fase de la atención al cliente (tiempo de Ring, ACW y AHT), fecha y hora de Log In/Log Out, además la cantidad de hits y RPC.
Esta API permite la sincronizacion de Articulos entre SERPI y la plataforma que lo requiera permitiendo tener un manejo estandar entre las dos herramientas.


'''Autorización:'''
'''Autorización:'''
Línea 6: Línea 6:


'''Beneficio:'''
'''Beneficio:'''
Este reporte permite hacer una medición de la productividad individual de los agentes teniendo en cuenta el tiempo dedicado a la gestión de llamadas y sus logros (hits y RPC)


'''Tipos de peticiones:'''
'''Tipos de peticiones:'''
Línea 12: Línea 11:


'''¿Cómo funciona?'''
'''¿Cómo funciona?'''
*El consumo de esta API se realiza por método GET.
*Para consumir esta API debe reemplazar en la url {ip_ipdialbox} por la nomenclatura del servidor de la operación y el {token} generado desde wolkvox Manager para obtener la información de manera segura.
*Tenga en cuenta que un mismo token no puede ser consumidos de manera simultanea, por lo cual puede programar que la siguiente API sea consumida cuando el resultado de la anterior sea exitoso.
*Tenga en cuenta que un mismo token no puede ser consumidos de manera simultanea, por lo cual puede programar que la siguiente API sea consumida cuando el resultado de la anterior sea exitoso.
*En términos de tiempo, para hacer seguimiento a su operación puede hacer un consumo cada 5 minutos de la información.
*En términos de tiempo, para hacer seguimiento a su operación puede hacer un consumo cada 5 minutos de la información.
Línea 19: Línea 16:
== Métodos ==
== Métodos ==
<Tabs>
<Tabs>
<!-- ***************** GET ****************** -->
<!-- ************************************************* CONSULTAR ************************************************* -->
<Tab name = "API Consulta (GET) ">
<Tab name = "API Consultar(GET)">
'''GET/users'''
 
'''EndPoint:'''
'''EndPoint:'''
https://www.apis.serpi.com.co/api/v1/TipoIdentidad
https://www.apis.serpi.com.co/api/v1/Articulo?limite=50&pagina=1&codigo=12345


'''EndPoint con parámetros:'''
https://www.apis.serpi.com.co/api/v1/Tercero?limite=50&pagina=1&identificacion=123456789&fechaCreadoDesde=2020-01-01%2000:00:00&fechaCreadoHasta=2020-12-31%2023:59:59


''' Headers '''
''' Headers '''
Línea 50: Línea 43:
| Página || int || No || Este parámetro indica el número de la página que se debe devolver. Por ejemplo, si se establece en 3, se devolverán los resultados de la tercera página
| Página || int || No || Este parámetro indica el número de la página que se debe devolver. Por ejemplo, si se establece en 3, se devolverán los resultados de la tercera página
|-
|-
| Identificacion || int || No || Cedula o nit del tercero a filtrar
| Codigo || int || No || Codigo del articulo a filtrar
|-
| FechaCreadoDesde || Date || No || Fecha inicial para filtrar por fecha de creación del tercero
|-
| FechaCreadoHasta || Date || No || Fecha final para filtrar por fecha de creación del tercero
|}
|}


Línea 60: Línea 49:
<syntaxhighlight lang="JSON" line="1">
<syntaxhighlight lang="JSON" line="1">
{
{
"success": true
    "success": true,
"code": 200,
    "code": 200,
"message": "x registro(s) encontrados",
    "errors": null,
"result": [
    "message": "1 registro(s) encontrados",
{
    "result": [
        {
             "id": 1,
             "id": 1,
             "tipoidentidad": "CC",
             "codigo": "123",
             "identificacion": "123456789",
             "referencia": "456",
             "dv": 0,
             "barras": "123456789",
            "tipopersona": 2,
             "descripcion": "ARTICULO1",
             "primernombre": "PEDRO",
             "idgrupocontable": 2,
             "segundonombre": "LUIS",
             "descripcionalterna": null,
            "primerapellido": "PEREZ",
             "idlinea": 1,
            "segundoapellido": "LOPEZ",
             "idcategoria": 2,
            "nombrecompleto": "PEDRO LUIS PEREZ LOPEZ",
             "idpresentacion": 5,
             "razonsocial": null,
             "idmarca": 1,
             "escliente": true,
             "idunidadmedida": 3,
             "esproveedor": true,
             "peso": 0.00000,
             "esempleado": false,
             "costo": 1000.00,
             "esvendedor": false,
             "costou": null,
            "esotro": false,
             "escobrador": false,
             "cumple_dia": 0,
             "cumplea_mes": 0,
            "cumplea_ano": 0,
            "genero": "N",
            "direccion": "CRA 1 25 05",
             "direccion2": null,
            "telefono": null,
            "ext": 0,
            "movil": null,
            "pais": "COLOMBIA",
            "departamento": "VALLE",
            "ciudad": "SANTIAGO DE CALI",
            "codciudad": "76001",
            "zona": 0,
            "email": "prueba@mail.com",
             "activo": true,
             "activo": true,
             "cupocredito": 0.00,
             "posicionarancel": "1332",
             "periodopago": 0,
             "porcentajeArancel": 0.00000,
             "codigociiu": null,
             "diasMaximo": 0,
             "descuentoventa": 0,
             "diasminimo": 0,
             "categoriatercero": 1,
             "diasoptimo": 0,
             "formapago": 0,
             "dias_reposicion": 0,
             "listaprecios": 2,
             "tipoPlaneacion": 0,
             "grupoventas": 1,
             "multiploCompra": 1.00,
             "grupocompras": 2,
             "pedidoMinimo": 1.00000,
             "vendedor": 0,
             "stockMinimoUnidades": null,
             "cobrador": 0,
             "stockOptimoUnidades": null,
            "fechacreacion": "2020-01-04 10:16:30",
             "aplicaPromocion": false,
             "regimen": 2,
             "aplicaKit": false,
             "banco": 0,
             "exportable": false,
             "tipo_cuenta": null,
             "volumen": 1.00000,
             "cuenta_bancaria": null,
             "ubicacion": 1.00000,
             "limite_credito": 0.00000,
             "ubicacionAlfanumerica": "1",
             "camposcliente": {
            "palabrasClave": "prueba,articulo,casa",
                "ACTIVIDADECONOMICAMUNICIPAL": "BC44",
          "camposPersonalizados": {
                "Comentarios": "Cliente proveedor de software",
                 "PAGINAS": 50,
                "Comuna": 11,
                 "Comentarios": "Cliente proveedor ",
                "FechaAniversario": "2016-06-01",
                 "AUTOR": "Juan",
                 "ClienteNacional": true,
            },
                 "Ranking": "2",
            "aplicaAiu": true,
                 "TieneAsesor": "N",
            "porcentajeAiu": 11.00,
                "Vetado": "3",
            "idgrupocontableAiu": 3
                "TipodeEmpresa": [
        }
                    "b",
    ]
                    "c"
                ],
                "continente": ""
            }
 
]
}
}


Línea 138: Línea 105:
     "code": 204,
     "code": 204,
     "message": "No se encontraron registros",
     "message": "No se encontraron registros",
}
{
    "success": false,
    "code": 400,
    "message": "El formato de las fechas es invalido. Ejemplo 2023-01-20 00:00:00",
}
}


</syntaxhighlight>
</syntaxhighlight>


'''Campo de resultados'''
'''Campo de resultados'''
{| class="wikitable"
{| class="wikitable"
! Campo !! Tipo de dato !! Descripción
! Campo !! Tipo !! Descripción
|-
| Id || int || Corresponde al identificador del tercero
|-
|-
| tipoidentidad || string || Codigo del tipo de indentidad
| id || int || Corresponde al id del artículo
|-
|-
| identificacion || string || Numero de identificacion
| codigo || string || Código del artículo
|-
|-
| dv || int || Digito de verificacion
| referencia || string || Referencia del artículo
|-
|-
| tipopersona || int || Codigo del tipo de persona (1=JURIDICO, 2=NATURAL)
| barras || string || Código de barras del artículo
|-
|-
| primernombre || string || Primer nombre
| descripcion || string || Descripción del artículo
|-
|-
| segundonombre || bool || Segundo nombre
| idgrupocontable || Int || Id del Grupo contable
|-
|-
| primerapellido || string || Primer apellido
| descripcionalterna || string || Descripción alterna del artículo
|-
|-
| segundoapellido || string || Segundo apellido
| idlinea || Int || Id de la Línea
|-
|-
| nombrecompleto || string || Nombre completo
| idcategoria || Int || Id de la Categoría
|-
|-
| razonsocial || string || razon social
| idpresentacion || Int || Id de la Presentación
|-
|-
| escliente || bool || Seleccionar si el tercero es cliente
| idmarca || Int || Id de la Marca
|-
|-
| esproveedor || bool || Seleccionar si el tercero es proveedor
| idunidadmedida || Int || Id de la Unidad de medida
|-
|-
| esempleado || bool || Seleccionar si el tercero es empleado
| peso || decimal || Peso del artículo
|-
|-
| esvendedor || bool || Seleccionar si el tercero es vendedor
| costo || decimal || Costo del artículo
|-
|-
| esotro || bool || Seleccionar si el tercero es otro
| costou || decimal || Último Costo del artículo
|-
|-
| escobrador || bool || Seleccionar si el tercero es cobrador
| activo || bool || Estado del artículo (true=Activo, false=Inactivo)
|-
|-
| cumple_dia || int || Dia del cumpleaños
| posicionarancel || string || Posición arancel
|-
|-
| cumplea_mes || int || Mes del cumpleaños
| porcentajeArancel || decimal || Porcentaje arancel
|-
|-
| cumplea_ano || int || Año del cumpleaños
| DiasMaximo || short || Días Máximo
|-
|-
| genero || string || Genero del tercero (M=Masculino, F=Femenino)
| Diasminimo || short || Días mínimo
|-
|-
| direccion || string || Direccion
| Diasoptimo || short || Días óptimo
|-
|-
| direccion2 || string || Direccion complementaria
| dias_reposicion || short || Días reposición
|-
|-
| telefono || string || Numero de telefono
| tipoPlaneacion || Int || Tipo planeación (0=General, 1=Personalizada)
|-
|-
| ext || int || Numero extension
| multiploCompra || decimal || Múltiplo compra
|-
|-
| movil || string || Numero de movil celular
| PedidoMinimo || decimal || Pedido mínimo
|-
|-
| pais || string || Nombre pais
| stockMinimoUnidades || decimal || Stock mínimo en unidades
|-
|-
| departamento || string || Nombre del departamento
| stockOptimoUnidades || decimal || Stock óptimo en unidades
|-
|-
| ciudad || string || Nombre de la ciudad
| aplicaPromocion || bool || Si aplica promoción. (true=Activo, false=Inactivo)
|-
|-
| codciudad || string || Codigo unico de la ciudad
| aplicaKit || bool || Si aplica kit. (true=Activo, false=Inactivo)
|-
|-
| zona || int || id de la zona
| exportable || bool || Si el articulo es exportable para un software externo. (true=Activo, false=Inactivo)
|-
|-
| email || string || cuenta de email
| volumen || Decimal || Volumen del articulo
|-
|-
| activo || bool || Estado del tercero (true=Activo, false=Inactivo)
| ubicacion || Decimal || Ubicacion del articulo
|-
|-
| cupocredito || decimal || Cupo de credito
| ubicacionAlfanumerica || String || Ubicacion alfanumerica del articulo
|-
|-
| periodopago || int || Periodo de pago en dias para el vencimiento de facturas de venta
| palabrasClave || string || Texto para ingresar palabras clave
|-
|-
| codigociiu || string || Codigo CIIU, Actividades economicas
| camposPersonalizados || Objeto || Objeto con la informacion de campos personalizados
|-
|-
| descuentoventa || decimal || Porcentaje para el descuento en ventas
| aplicaAiu || Bool || Si aplica porcentaje Aiu (true=Activo, false=Inactivo)
|-
|-
| categoriatercero || int || Id de la categoria de tercero
| porcentajeAiu || Decimal || Porcentaje del Aiu
|-
|-
| formapago || int || Id de la forma pago
| idgrupocontableAiu || Int || Id del grupo contable para Aiu
|-
| listaprecios || int || Id de la lista de precios
|-
| grupoventas || int || Id del grupo de retenciones para ventas
|-
| grupocompras || int || Id del grupo de retenciones para compras
|-
| vendedor || int || Numero de identificacion del vendedor
|-
| cobrador || int || Numero de identificacion del cobrador
|-
| fechacreacion || string || Fecha de creacion del tercero. Ejemplo "2020-05-20 00:00:00"
|-
| regimen || int || Id del regimen tributario
|-
| banco || int || Id del banco
|-
| tipo cuenta || string || Tipo de cuenta bancaria (A=Cuenta de ahorro, B=Cuenta Corriente)
|-
| cuenta bancaria || string || Numero de cuenta bancaria
|-
| limite credito || decimal || Limite del credito
|-
| camposcliente || Objeto || Objeto con la informacion de campos personalizados
|}
|}
</Tab>
</Tab>


<!-- ***************** POST ****************** -->
<!-- ************************************************* CREAR ************************************************* -->
<Tab name = "API Creación (POST) ">
<Tab name = "API Crear(POST)">
'''POST /users'''
 
'''EndPoint:'''
'''EndPoint:'''
https://www.apis.serpi.com.co/api/v1/TipoIdentidad
https://www.apis.serpi.com.co/api/v1/Articulo


''' Headers '''
''' Headers '''
Línea 273: Línea 203:
|}
|}


'''Authorization:'''
'''Body:'''
<syntaxhighlight line="1">
Usar Bearer. Ejemplo “bearer {{token}}”.
{{token}} Token de autorizacion generado por SerpiERP
</syntaxhighlight>
 
'''Request'''
<syntaxhighlight lang="JSON">
<syntaxhighlight lang="JSON">
{
[
             "tipoidentidad": "CC",
        {
             "identificacion": "123456789",
             "codigo": "123",
             "dv": 0,
             "referencia": "456",
            "tipopersona": 2,
             "barras": "123456789",
            "primernombre": "PEDRO",
             "descripcion": "ARTICULO1",
             "segundonombre": "LUIS",
             "idgrupocontable": 2,
             "primerapellido": "PEREZ",
             "descripcionalterna": null,
            "segundoapellido": "LOPEZ",
             "idlinea": 1,
             "nombrecompleto": "PEDRO LUIS PEREZ LOPEZ",
             "idcategoria": 2,
            "razonsocial": null,
             "idpresentacion": 5,
             "escliente": true,
             "idmarca": 1,
             "esproveedor": true,
             "idunidadmedida": 3,
             "esempleado": false,
             "peso": 0.00000,
             "esvendedor": false,
             "costo": 1000.00,
            "esotro": false,
             "costou": null,
             "escobrador": false,
             "cumple_dia": 0,
             "cumplea_mes": 0,
             "cumplea_ano": 0,
            "genero": "N",
            "direccion": "CRA 1 25 05",
            "direccion2": null,
            "telefono": null,
            "ext": 0,
            "movil": null,
            "pais": "COLOMBIA",
            "departamento": "VALLE",
            "ciudad": "SANTIAGO DE CALI",
            "codciudad": "76001",
            "zona": 0,
            "email": "prueba@mail.com",
             "activo": true,
             "activo": true,
             "cupocredito": 0.00,
             "posicionarancel": "1332",
             "periodopago": 0,
             "porcentajeArancel": 0.00000,
             "codigociiu": null,
             "diasMaximo": 0,
             "descuentoventa": 0,
             "diasminimo": 0,
             "categoriatercero": 1,
             "diasoptimo": 0,
             "formapago": 0,
             "dias_reposicion": 0,
             "listaprecios": 2,
             "tipoPlaneacion": 0,
             "grupoventas": 1,
             "multiploCompra": 1.00,
             "grupocompras": 2,
             "pedidoMinimo": 1.00000,
             "vendedor": 0,
             "stockMinimoUnidades": null,
             "cobrador": 0,
             "stockOptimoUnidades": null,
             "fechacreacion": "2020-01-04 10:16:30",
             "aplicaPromocion": false,
             "regimen": 2,
             "aplicaKit": false,
             "banco": 0,
             "exportable": false,
             "tipo_cuenta": null,
             "volumen": 1.00000,
             "cuenta_bancaria": null,
             "ubicacion": 1.00000,
            "limite_credito": 0.00000,
             "ubicacionAlfanumerica": "1",
             "camposcliente": {
            "palabrasClave": "prueba,articulo,casa",
                "ACTIVIDADECONOMICAMUNICIPAL": "BC44",
          "camposPersonalizados": {
                "Comentarios": "Cliente proveedor de software",
                 "PAGINAS": 50,
                "Comuna": 11,
                 "Comentarios": "Cliente proveedor ",
                "FechaAniversario": "2016-06-01",
                 "AUTOR": "Juan",
                 "ClienteNacional": true,
            },
                 "Ranking": "2",
            "aplicaAiu": true,
                 "TieneAsesor": "N",
            "porcentajeAiu": 11.00,
                "Vetado": "3",
            "idgrupocontableAiu": 3
                "TipodeEmpresa": [
        }
                    "b",
]
                    "c"
                ],
                "continente": ""
            }


        }


</syntaxhighlight>
</syntaxhighlight>
Línea 356: Línea 258:
! Campo !! Tipo !! Requerido !! Descripción
! Campo !! Tipo !! Requerido !! Descripción
|-
|-
| tipoidentidad || String || SI || Código del tipo de identidad
| codigo || string || SI || Código del artículo
|-
| identificacion || String || SI || Número de identificación
|-
| dv || Int || SI || Digito de verificación
|-
| tipopersona || Int || SI || Código del tipo de persona (1=JURIDICO, 2=NATURAL)
|-
| primernombre || String || SI (Si tipo persona=NATURAL) || Primer Nombre
|-
|-
| segundonombre || String || NO || Segundo Nombre
| referencia || string || NO || Referencia del artículo
|-
|-
| primerapellido || String || SI (Si tipo persona=NATURAL) || Primer Apellido
| barras || string || NO || Código de barras del artículo
|-
|-
| segundoapellido || String || NO || Segundo Apellido
| descripcion || string || SI || Descripción del artículo
|-
|-
| nombrecompleto || String || SI || Nombre Completo
| idgrupocontable || Int || SI || Id del Grupo contable
|-
|-
| razonsocial || String || SI (Si tipo persona=JURIDICO) || Razón Social
| descripcionalterna || string || NO || Descripción alterna del artículo
|-
|-
| escliente || Bool || NO || Seleccionar si el tercero es cliente
| idlinea || Int || SI || Id de la Línea
|-
|-
| esproveedor || Bool || NO || Seleccionar si el tercero es proveedor
| idcategoria || Int || SI || Id de la Categoría
|-
|-
| esempleado || Bool || NO || Seleccionar si el tercero es empleado
| idpresentacion || Int || SI || Id de la Presentación
|-
|-
| esvendedor || Bool || NO || Seleccionar si el tercero es vendedor
| idmarca || Int || SI || Id de la Marca
|-
|-
| esotro || Bool || NO || Seleccionar si el tercero es otro
| idunidadmedida || Int || SI || Id de la Unidad de medida
|-
|-
| escobrador || Bool || NO || Seleccionar si el tercero es cobrador
| peso || decimal || NO || Peso del artículo
|-
|-
| cumple_dia || Int || NO || Día del cumpleaños
| costo || decimal || NO || Costo del artículo
|-
|-
| cumplea_mes || Int || NO || Mes del cumpleaños
| costou || decimal || NO || Último Costo del artículo
|-
|-
| cumplea_ano || Int || NO || Año del cumpleaños
| activo || bool || SI || Estado del artículo (true=Activo, false=Inactivo)
|-
|-
| genero || String || NO || Género del tercero (M=Masculino, F=Femenino)
| posicionarancel || string || NO || Posición arancel
|-
|-
| direccion || String || SI || Dirección
| porcentajeArancel || decimal || NO || Porcentaje arancel
|-
|-
| direccion2 || String || NO || Dirección complementaria
| DiasMaximo || short || NO || Días Máximo
|-
|-
| telefono || String || NO || Número de teléfono
| Diasminimo || short || NO || Días mínimo
|-
|-
| ext || Int || NO || Número de extensión
| Diasoptimo || short || NO || Días óptimo
|-
|-
| movil || String || SI || Número de móvil celular
| dias_reposicion || short || NO || Días reposición
|-
|-
| pais || String || Informativo || Nombre País
| tipoPlaneacion || Int || NO || Tipo planeación (0=General, 1=Personalizada)
|-
|-
| departamento || String || Informativo || Nombre del departamento
| multiploCompra || decimal || NO || Múltiplo compra
|-
|-
| ciudad || String || Informativo || Nombre de la ciudad
| PedidoMinimo || decimal || NO || Pedido mínimo
|-
|-
| codciudad || String || SI || Código único de la ciudad
| stockMinimoUnidades || decimal || NO || Stock mínimo en unidades
|-
|-
| zona || Int || NO || ID de la zona
| stockOptimoUnidades || decimal || NO || Stock óptimo en unidades
|-
|-
| email || String || SI || Cuenta de email
| aplicaPromocion || bool || NO || Si aplica promoción. (true=Activo, false=Inactivo)
|-
|-
| activo || Bool || SI || Estado del tercero (true=Activo, false=Inactivo)
| aplicaKit || bool || NO || Si aplica kit. (true=Activo, false=Inactivo)
|-
|-
| cupocredito || Decimal || NO || Cupo de crédito
| exportable || bool || NO || Si el articulo es exportable para un software externo. (true=Activo, false=Inactivo)
|-
|-
| periodopago || Int || NO || Período de pago en días para el vencimiento de facturas de venta
| volumen || Decimal || NO || Volumen del articulo
|-
|-
| codigociiu || String || NO || Código CIIU, Actividades económicas
| ubicacion || Decimal || NO || Ubicacion del articulo
|-
|-
| descuentoventa || Decimal || NO || Porcentaje para el descuento en ventas
| ubicacionAlfanumerica || String || NO || Ubicacion alfanumerica del articulo
|-
|-
| categoriatercero || Int || SI || ID de la categoría de terceros
| palabrasClave || string || NO || Texto para ingresar palabras clave
|-
|-
| formapago || Int || NO || ID de la forma de pago
| camposPersonalizados || Objeto || NO || Objeto con la informacion de campos personalizados
|-
|-
| listaprecios || Int || NO || ID de la lista de precios
| aplicaAiu || Bool || NO || Si aplica porcentaje Aiu (true=Activo, false=Inactivo)
|-
|-
| grupoventas || Int || SI || ID del grupo de retenciones para ventas
| porcentajeAiu || Decimal || NO || Porcentaje del Aiu
|-
|-
| grupocompras || Int || SI || ID del grupo de retenciones para compras
| idgrupocontableAiu || Int || NO || Id del grupo contable para Aiu
|-
| vendedor || Int || NO || Número de identificación del vendedor
|-
| cobrador || Int || NO || Número de identificación del cobrador
|-
| fechacreacion || String || NO || Fecha de creación del tercero. Ejemplo "2020-05-20 00:00:00"
|-
| regimen || Int || SI || ID del régimen tributario
|-
| banco || Int || NO || ID del banco
|-
| tipo_cuenta || String || NO || Tipo cuenta bancaria. (A=Cuenta de Ahorro, B=Cuenta Corriente)
|-
| cuenta_bancaria || String || NO || Número de cuenta bancaria
|-
| limite_credito || Decimal || NO || Límite del crédito
|-
| camposcliente || Objeto || NO || Objeto con la información de campos personalizados
|}
|}


'''Authorization:'''
'''Authorization:'''
Línea 470: Línea 345:
     "code": 201,
     "code": 201,
     "errors": [],
     "errors": [],
     "message": "Se crearon 10 de 10 terceros"
     "message": "Se crearon 10 de 10 articulos"
}
}
</syntaxhighlight>
</syntaxhighlight>
</Tab>
</Tab>


<!-- ***************** PUT ****************** -->
<!-- ************************************************* MODIFICAR ************************************************* -->
<Tab name = "API Modificar(PUT) ">
<Tab name = "API Modificar(PUT)">
'''PUT/users'''
 
'''EndPoint:'''
'''EndPoint:'''
https://www.apis.serpi.com.co/api/v1/TipoIdentidad
https://www.apis.serpi.com.co/api/v1/Articulo


''' Headers '''
''' Headers '''
Línea 495: Línea 368:
</syntaxhighlight>
</syntaxhighlight>


'''Request'''
'''Body:'''
<syntaxhighlight lang="JSON">
<syntaxhighlight lang="JSON">
{
[
    "id": 1
        {
    "abreviatura": "NIT",
            "id": 1,
    "descripcion": "NIT",
            "codigo": "123",
    "codigo": 31,
            "referencia": "456",
    "abreviatura2": " NIT2",
            "barras": "123456789",
    "abreviatura3": "",
            "descripcion": "ARTICULO1",
    "excluirImpVentas": false
            "idgrupocontable": 2,
}
            "descripcionalterna": null,
            "idlinea": 1,
            "idcategoria": 2,
            "idpresentacion": 5,
            "idmarca": 1,
            "idunidadmedida": 3,
            "peso": 0.00000,
            "costo": 1000.00,
            "costou": null,
            "activo": true,
            "posicionarancel": "1332",
            "porcentajeArancel": 0.00000,
            "diasMaximo": 0,
            "diasminimo": 0,
            "diasoptimo": 0,
            "dias_reposicion": 0,
            "tipoPlaneacion": 0,
            "multiploCompra": 1.00,
            "pedidoMinimo": 1.00000,
            "stockMinimoUnidades": null,
            "stockOptimoUnidades": null,
            "aplicaPromocion": false,
            "aplicaKit": false,
            "exportable": false,
            "volumen": 1.00000,
            "ubicacion": 1.00000,
            "ubicacionAlfanumerica": "1",
            "palabrasClave": "prueba,articulo,casa",
            "camposcliente": {}},
     
            "aplicaAiu": true,
            "porcentajeAiu": 11.00,
            "idgrupocontableAiu": 3
        }
    ]
 
</syntaxhighlight>
</syntaxhighlight>
''' Campos del request'''
{| class="wikitable left"
! Campo !! Tipo de dato !! Longitud !! Requerido !! Descripción
|-
| id || int || 50 || SI || Corresponde al identificador del tipo de identidad
|-
| abreviatura || string || 50 || SI || Abreviatura Tipo de identidad
|-
| descripcion|| string || 50 || SI || Descripcion tipo de identidad
|-
| codigo || int || 50 || SI || Codigo numero del tipo de identidad
|-
| abreviatura2 || string || 50 || NO || Abreviatura2 Tipo de identidad
|-
| abreviatura3 || string || 50 || NO || Abreviatura3 Tipo de identidad
|-
| excluirImpVentas|| bool || 50 || NO || true o false. Si el tipo de identidad es excluido del impuesto de ventas
|}


'''Authorization:'''
'''Authorization:'''
Línea 536: Línea 425:
<syntaxhighlight lang="JSON" line="1">
<syntaxhighlight lang="JSON" line="1">
{
{
"success": true
    "success": true,
    "code": 200,
    "code": 200,
    "message": "registro modificado exitosamente"
    "errors": [],
}
    "message": "Se modificaron 10 de 10 articulos"
 
{
    "success": false,
    "code": 400,
    "errors": [
        "El campo abreviatura es obligatorio"
    ],
    "message": "Se presentaron errores al modificar el registro"
}
 
 
 
 
{
    "success": false,
    "code": 204,
    "errors": null,
    "message": "No se encontraron registros con el id xx"
}
}
</syntaxhighlight>
</syntaxhighlight>
</Tab>
</Tab>
</Tabs>
</Tabs>
== Códigos de estado HTTP ==
{| class="wikitable left"
! Código !! Descripción
|-
| 200 || La solicitud ha sido exitosa
|-
| 201 || La solicitud ha tenido éxito y ha llevado a la creación de un recurso
|-
| 204 || La solicitud se ha completado correctamente, pero no hay contenido para devolver en la respuesta
|-
| 400 || El servidor no puede o no procesará la petición debido a algo que es percibido como un error del cliente
|-
| 401 || La solicitud requiere autenticación, pero el cliente no ha proporcionado credenciales válidas o no está autorizado para acceder al recurso
|-
| 403 || El servidor ha entendido la solicitud, pero se niega a cumplirla debido a que el cliente no tiene permisos para acceder al recurso
|-
| 404 || El recurso solicitado no se ha encontrado en el servidor
|-
| 500 || Internal Server Error
|-
| 503 || El servidor no está disponible actualmente debido a una sobrecarga o mantenimiento temporal
|}


== ¿Cómo consumir la API? ==
== ¿Cómo consumir la API? ==
Línea 569: Línea 463:
<Tab name = "Java">
<Tab name = "Java">
'''Request'''
'''Request'''
<syntaxhighlight lang="java" line="1">
<syntaxhighlight lang="java">
OkHttpClient client = new OkHttpClient().newBuilder()
OkHttpClient client = new OkHttpClient().newBuilder()
   .build();
   .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
Request request = new Request.Builder()
   .url("https://wv9901.wolkvox.com/api/v2/reports_manager.php?api=agent_1&date_ini={{YYYYmmddHHiiss}}&date_end={{YYYYmmddHHiiss}}")
   .url("https://localhost:44305/api/v1/Articulo")
   .method("GET", null)
   .method("GET", body)
   .addHeader("wolkvox-token", "{{token}}")
  .addHeader("secretkey", "{{secret key}}")
   .addHeader("Authorization", "Bearer{{token}}")
   .build();
   .build();
Response response = client.newCall(request).execute();
Response response = client.newCall(request).execute();
</syntaxhighlight>
</syntaxhighlight>
</Tab>


'''Response'''
<Tab name = "C#">
<syntaxhighlight lang="java" line="1">
'''Request'''
{
<syntaxhighlight lang="c#">
    "code": 200,
var client = new HttpClient();
    "error": null,
var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44305/api/v1/Articulo");
    "msg": "Information found for the current month",
request.Headers.Add("secretkey", "{{secret key}}");
    "data": [
request.Headers.Add("Authorization", "Bearer{{token}}");
        {
var content = new StringContent("", null, "text/plain");
            "operation": "",
request.Content = content;
            "description": "",
var response = await client.SendAsync(request);
            "items": "",
response.EnsureSuccessStatusCode();
            "date": ""
Console.WriteLine(await response.Content.ReadAsStringAsync());
        }
    ]
}
</syntaxhighlight>
</syntaxhighlight>
</Tab>
</Tab>


<Tab name = "Python">
<Tab name = "PHP">
'''Request'''
'''Request'''
<syntaxhighlight lang="java" line="1">
<syntaxhighlight lang="php">
import requests
<?php
 
require_once 'HTTP/Request2.php';
url = "https://wv9901.wolkvox.com/api/v2/reports_manager.php?api=agent_1&date_ini={{YYYYmmddHHiiss}}&date_end={{YYYYmmddHHiiss}}"
$request = new HTTP_Request2();
 
$request->setUrl('https://localhost:44305/api/v1/Articulo');
payload={}
$request->setMethod(HTTP_Request2::METHOD_GET);
headers = {
$request->setConfig(array(
  'wolkvox-token': '{{token}}'
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'secretkey' => '{{secret key}}',
  'Authorization' => 'Bearer{{token}}'
));
$request->setBody('');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
}
 
catch(HTTP_Request2_Exception $e) {
response = requests.request("GET", url, headers=headers, data=payload)
  echo 'Error: ' . $e->getMessage();
 
print(response.text)
</syntaxhighlight>
 
'''Response'''
<syntaxhighlight lang="java" line="1">
{
    "code": 200,
    "error": null,
    "msg": "Information found for the current month",
    "data": [
        {
            "operation": "",
            "description": "",
            "items": "",
            "date": ""
        }
    ]
}
}
</syntaxhighlight>
</syntaxhighlight>
Línea 634: Línea 526:


</Tabs>
</Tabs>
''' Códigos de estado HTTP'''
{| class="wikitable left"
! Código !! Descripción
|-
| 200 || La solicitud ha sido exitosa
|-
| 201 || La solicitud ha tenido éxito y ha llevado a la creación de un recurso
|-
| 204 || La solicitud se ha completado correctamente, pero no hay contenido para devolver en la respuesta
|-
| 400 || El servidor no puede o no procesará la petición debido a algo que es percibido como un error del cliente
|-
| 401 || La solicitud requiere autenticación, pero el cliente no ha proporcionado credenciales válidas o no está autorizado para acceder al recurso
|-
| 403 || El servidor ha entendido la solicitud, pero se niega a cumplirla debido a que el cliente no tiene permisos para acceder al recurso
|-
| 404 || El recurso solicitado no se ha encontrado en el servidor
|-
| 500 || Internal Server Error
|-
| 503 || El servidor no está disponible actualmente debido a una sobrecarga o mantenimiento temporal
|}


[[Category:Documentación APIs]]
[[Category:Documentación APIs]]
<!-- [[Category:Pages with syntax highlighting errors]] -->
<!-- [[Category:Pages with syntax highlighting errors]] -->

Revisión actual - 09:09 18 sep 2023

Descripción: Esta API permite la sincronizacion de Articulos entre SERPI y la plataforma que lo requiera permitiendo tener un manejo estandar entre las dos herramientas.

Autorización: Se requiere autenticación para todas las solicitudes. Las credenciales de autenticación deben ser incluidas en la cabecera de todas las solicitudes a través del campo Authorization utilizando el token de acceso entregado SERPI ERP.

Beneficio:

Tipos de peticiones: GET, POST, PUT

¿Cómo funciona?

  • Tenga en cuenta que un mismo token no puede ser consumidos de manera simultanea, por lo cual puede programar que la siguiente API sea consumida cuando el resultado de la anterior sea exitoso.
  • En términos de tiempo, para hacer seguimiento a su operación puede hacer un consumo cada 5 minutos de la información.

Métodos

<Tabs> <Tab name = "API Consultar(GET)"> EndPoint: https://www.apis.serpi.com.co/api/v1/Articulo?limite=50&pagina=1&codigo=12345


Headers

Header Descripción
secretkey Secretkey proporcionada al cliente para consumos de las APIs

Authorization:

Usar Bearer. Ejemplo “bearer {{token}}”.
{{token}} Token de autorizacion generado por SerpiERP

Parámetros

Parámetro Tipo de dato Requerido Descripción
Límite int No Este parámetro indica la cantidad de resultados que se deben devolver en una sola página
Página int No Este parámetro indica el número de la página que se debe devolver. Por ejemplo, si se establece en 3, se devolverán los resultados de la tercera página
Codigo int No Codigo del articulo a filtrar

Response

{
    "success": true,
    "code": 200,
    "errors": null,
    "message": "1 registro(s) encontrados",
    "result": [
        {
            "id": 1,
            "codigo": "123",
            "referencia": "456",
            "barras": "123456789",
            "descripcion": "ARTICULO1",
            "idgrupocontable": 2,
            "descripcionalterna": null,
            "idlinea": 1,
            "idcategoria": 2,
            "idpresentacion": 5,
            "idmarca": 1,
            "idunidadmedida": 3,
            "peso": 0.00000,
            "costo": 1000.00,
            "costou": null,
            "activo": true,
            "posicionarancel": "1332",
            "porcentajeArancel": 0.00000,
            "diasMaximo": 0,
            "diasminimo": 0,
            "diasoptimo": 0,
            "dias_reposicion": 0,
            "tipoPlaneacion": 0,
            "multiploCompra": 1.00,
            "pedidoMinimo": 1.00000,
            "stockMinimoUnidades": null,
            "stockOptimoUnidades": null,
            "aplicaPromocion": false,
            "aplicaKit": false,
            "exportable": false,
            "volumen": 1.00000,
            "ubicacion": 1.00000,
            "ubicacionAlfanumerica": "1",
            "palabrasClave": "prueba,articulo,casa",
      	     "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            },
            "aplicaAiu": true,
            "porcentajeAiu": 11.00,
            "idgrupocontableAiu": 3
        }
    ]
}

{
    "success": true,
    "code": 204,
    "message": "No se encontraron registros",
}

Campo de resultados

Campo Tipo Descripción
id int Corresponde al id del artículo
codigo string Código del artículo
referencia string Referencia del artículo
barras string Código de barras del artículo
descripcion string Descripción del artículo
idgrupocontable Int Id del Grupo contable
descripcionalterna string Descripción alterna del artículo
idlinea Int Id de la Línea
idcategoria Int Id de la Categoría
idpresentacion Int Id de la Presentación
idmarca Int Id de la Marca
idunidadmedida Int Id de la Unidad de medida
peso decimal Peso del artículo
costo decimal Costo del artículo
costou decimal Último Costo del artículo
activo bool Estado del artículo (true=Activo, false=Inactivo)
posicionarancel string Posición arancel
porcentajeArancel decimal Porcentaje arancel
DiasMaximo short Días Máximo
Diasminimo short Días mínimo
Diasoptimo short Días óptimo
dias_reposicion short Días reposición
tipoPlaneacion Int Tipo planeación (0=General, 1=Personalizada)
multiploCompra decimal Múltiplo compra
PedidoMinimo decimal Pedido mínimo
stockMinimoUnidades decimal Stock mínimo en unidades
stockOptimoUnidades decimal Stock óptimo en unidades
aplicaPromocion bool Si aplica promoción. (true=Activo, false=Inactivo)
aplicaKit bool Si aplica kit. (true=Activo, false=Inactivo)
exportable bool Si el articulo es exportable para un software externo. (true=Activo, false=Inactivo)
volumen Decimal Volumen del articulo
ubicacion Decimal Ubicacion del articulo
ubicacionAlfanumerica String Ubicacion alfanumerica del articulo
palabrasClave string Texto para ingresar palabras clave
camposPersonalizados Objeto Objeto con la informacion de campos personalizados
aplicaAiu Bool Si aplica porcentaje Aiu (true=Activo, false=Inactivo)
porcentajeAiu Decimal Porcentaje del Aiu
idgrupocontableAiu Int Id del grupo contable para Aiu

</Tab>

<Tab name = "API Crear(POST)"> EndPoint: https://www.apis.serpi.com.co/api/v1/Articulo

Headers

Header Descripción
secretkey Secretkey proporcionada al cliente para consumos de las APIs

Body:

[
        {
            "codigo": "123",
            "referencia": "456",
            "barras": "123456789",
            "descripcion": "ARTICULO1",
            "idgrupocontable": 2,
            "descripcionalterna": null,
            "idlinea": 1,
            "idcategoria": 2,
            "idpresentacion": 5,
            "idmarca": 1,
            "idunidadmedida": 3,
            "peso": 0.00000,
            "costo": 1000.00,
            "costou": null,
            "activo": true,
            "posicionarancel": "1332",
            "porcentajeArancel": 0.00000,
            "diasMaximo": 0,
            "diasminimo": 0,
            "diasoptimo": 0,
            "dias_reposicion": 0,
            "tipoPlaneacion": 0,
            "multiploCompra": 1.00,
            "pedidoMinimo": 1.00000,
            "stockMinimoUnidades": null,
            "stockOptimoUnidades": null,
            "aplicaPromocion": false,
            "aplicaKit": false,
            "exportable": false,
            "volumen": 1.00000,
            "ubicacion": 1.00000,
            "ubicacionAlfanumerica": "1",
            "palabrasClave": "prueba,articulo,casa",
      	     "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            },
            "aplicaAiu": true,
            "porcentajeAiu": 11.00,
            "idgrupocontableAiu": 3
        }
]

Campos del request

Campo Tipo Requerido Descripción
codigo string SI Código del artículo
referencia string NO Referencia del artículo
barras string NO Código de barras del artículo
descripcion string SI Descripción del artículo
idgrupocontable Int SI Id del Grupo contable
descripcionalterna string NO Descripción alterna del artículo
idlinea Int SI Id de la Línea
idcategoria Int SI Id de la Categoría
idpresentacion Int SI Id de la Presentación
idmarca Int SI Id de la Marca
idunidadmedida Int SI Id de la Unidad de medida
peso decimal NO Peso del artículo
costo decimal NO Costo del artículo
costou decimal NO Último Costo del artículo
activo bool SI Estado del artículo (true=Activo, false=Inactivo)
posicionarancel string NO Posición arancel
porcentajeArancel decimal NO Porcentaje arancel
DiasMaximo short NO Días Máximo
Diasminimo short NO Días mínimo
Diasoptimo short NO Días óptimo
dias_reposicion short NO Días reposición
tipoPlaneacion Int NO Tipo planeación (0=General, 1=Personalizada)
multiploCompra decimal NO Múltiplo compra
PedidoMinimo decimal NO Pedido mínimo
stockMinimoUnidades decimal NO Stock mínimo en unidades
stockOptimoUnidades decimal NO Stock óptimo en unidades
aplicaPromocion bool NO Si aplica promoción. (true=Activo, false=Inactivo)
aplicaKit bool NO Si aplica kit. (true=Activo, false=Inactivo)
exportable bool NO Si el articulo es exportable para un software externo. (true=Activo, false=Inactivo)
volumen Decimal NO Volumen del articulo
ubicacion Decimal NO Ubicacion del articulo
ubicacionAlfanumerica String NO Ubicacion alfanumerica del articulo
palabrasClave string NO Texto para ingresar palabras clave
camposPersonalizados Objeto NO Objeto con la informacion de campos personalizados
aplicaAiu Bool NO Si aplica porcentaje Aiu (true=Activo, false=Inactivo)
porcentajeAiu Decimal NO Porcentaje del Aiu
idgrupocontableAiu Int NO Id del grupo contable para Aiu

Authorization:

Usar Bearer. Ejemplo “bearer {{token}}”.
{{token}} Token de autorizacion generado por SerpiERP

Response

{
    "success": true,
    "code": 201,
    "errors": [],
    "message": "Se crearon 10 de 10 articulos"
}

</Tab>

<Tab name = "API Modificar(PUT)"> EndPoint: https://www.apis.serpi.com.co/api/v1/Articulo

Headers

Header Descripción
secretkey Secretkey proporcionada al cliente para consumos de las APIs

Authorization:

Usar Bearer. Ejemplo “bearer {{token}}”.
{{token}} Token de autorizacion generado por SerpiERP

Body:

[
        {
            "id": 1,
            "codigo": "123",
            "referencia": "456",
            "barras": "123456789",
            "descripcion": "ARTICULO1",
            "idgrupocontable": 2,
            "descripcionalterna": null,
            "idlinea": 1,
            "idcategoria": 2,
            "idpresentacion": 5,
            "idmarca": 1,
            "idunidadmedida": 3,
            "peso": 0.00000,
            "costo": 1000.00,
            "costou": null,
            "activo": true,
            "posicionarancel": "1332",
            "porcentajeArancel": 0.00000,
            "diasMaximo": 0,
            "diasminimo": 0,
            "diasoptimo": 0,
            "dias_reposicion": 0,
            "tipoPlaneacion": 0,
            "multiploCompra": 1.00,
            "pedidoMinimo": 1.00000,
            "stockMinimoUnidades": null,
            "stockOptimoUnidades": null,
            "aplicaPromocion": false,
            "aplicaKit": false,
            "exportable": false,
            "volumen": 1.00000,
            "ubicacion": 1.00000,
            "ubicacionAlfanumerica": "1",
            "palabrasClave": "prueba,articulo,casa",
            "camposcliente": {}},
       
            "aplicaAiu": true,
            "porcentajeAiu": 11.00,
            "idgrupocontableAiu": 3
        }
    ]

Authorization:

Usar Bearer. Ejemplo “bearer {{token}}”.
{{token}} Token de autorizacion generado por SerpiERP

Response

{
    "success": true,
    "code": 200,
    "errors": [],
    "message": "Se modificaron 10 de 10 articulos"
}

</Tab> </Tabs>

Códigos de estado HTTP

Código Descripción
200 La solicitud ha sido exitosa
201 La solicitud ha tenido éxito y ha llevado a la creación de un recurso
204 La solicitud se ha completado correctamente, pero no hay contenido para devolver en la respuesta
400 El servidor no puede o no procesará la petición debido a algo que es percibido como un error del cliente
401 La solicitud requiere autenticación, pero el cliente no ha proporcionado credenciales válidas o no está autorizado para acceder al recurso
403 El servidor ha entendido la solicitud, pero se niega a cumplirla debido a que el cliente no tiene permisos para acceder al recurso
404 El recurso solicitado no se ha encontrado en el servidor
500 Internal Server Error
503 El servidor no está disponible actualmente debido a una sobrecarga o mantenimiento temporal

¿Cómo consumir la API?

<Tabs>

<Tab name = "Java"> Request

OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://localhost:44305/api/v1/Articulo")
  .method("GET", body)
  .addHeader("secretkey", "{{secret key}}")
  .addHeader("Authorization", "Bearer{{token}}")
  .build();
Response response = client.newCall(request).execute();

</Tab>

<Tab name = "C#"> Request

var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44305/api/v1/Articulo");
request.Headers.Add("secretkey", "{{secret key}}");
request.Headers.Add("Authorization", "Bearer{{token}}");
var content = new StringContent("", null, "text/plain");
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());

</Tab>

<Tab name = "PHP"> Request

<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://localhost:44305/api/v1/Articulo');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'secretkey' => '{{secret key}}',
  'Authorization' => 'Bearer{{token}}'
));
$request->setBody('');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}

</Tab>

</Tabs>