Diferencia entre revisiones de «API Articulos»

De WikiSerpi
Ir a la navegación Ir a la búsqueda
mSin resumen de edición
Sin resumen de edición
Línea 1: Línea 1:
'''Descripción:'''
'''Descripción:'''
Esta API permite la sincronización de los items registrados en SERPI con la plataforma que se requiera, los ítems son utilizados en los procesos de inventarios facturacion y POS.  
Esta API permite la sincronizacion de documentos contables entre SERPI y la plataforma que lo requiera permitiendo tener un manejo estandar entre las dos herramientas.


'''Autorización:'''
'''Autorización:'''
Línea 16: Línea 16:
== Métodos ==
== Métodos ==
<Tabs>
<Tabs>
<!-- ***************** GET ****************** -->
<!-- ***************** CONSULTAR ****************** -->
<Tab name = "API Consulta (GET) ">
<Tab name = "API Consultar(GET)">
'''GET/users'''
'''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 47: Línea 45:
| 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 57: Línea 51:
<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",
        }
             "regimen": 2,
    ]
             "banco": 0,
            "tipo_cuenta": null,
             "cuenta_bancaria": null,
            "limite_credito": 0.00000,
            "camposcliente": {
                "ACTIVIDADECONOMICAMUNICIPAL": "BC44",
                "Comentarios": "Cliente proveedor de software",
                "Comuna": 11,
                "FechaAniversario": "2016-06-01",
                "ClienteNacional": true,
                "Ranking": "2",
                "TieneAsesor": "N",
                "Vetado": "3",
                "TipodeEmpresa": [
                    "b",
                    "c"
                ],
                "continente": ""
            }
 
]
}
}


Línea 136: Línea 93:
     "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
|-
| codciudad || string || Codigo unico de la ciudad
|-
| zona || int || id de la zona
|-
| email || string || cuenta de email
|-
| activo || bool || Estado del tercero (true=Activo, false=Inactivo)
|-
| cupocredito || decimal || Cupo de credito
|-
| periodopago || int || Periodo de pago en dias para el vencimiento de facturas de venta
|-
| codigociiu || string || Codigo CIIU, Actividades economicas
|-
| descuentoventa || decimal || Porcentaje para el descuento en ventas
|-
| categoriatercero || int || Id de la categoria de tercero
|-
| formapago || int || Id de la forma pago
|-
| 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'''
'''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 270: Línea 169:
|}
|}


'''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,
"activo": true,
            "cumple_dia": 0,
"posicionarancel": "1332",
            "cumplea_mes": 0,
"porcentajeArancel": 0.00000,
            "cumplea_ano": 0,
"diasMaximo": 0,
            "genero": "N",
"diasminimo": 0,
            "direccion": "CRA 1 25 05",
"diasoptimo": 0,
            "direccion2": null,
"dias_reposicion": 0,
            "telefono": null,
"tipoPlaneacion": 0,
            "ext": 0,
"multiploCompra": 1.00,
            "movil": null,
"pedidoMinimo": 1.00000,
            "pais": "COLOMBIA",
"stockMinimoUnidades": null,
            "departamento": "VALLE",
"stockOptimoUnidades": null
            "ciudad": "SANTIAGO DE CALI",
}
            "codciudad": "76001",
]
            "zona": 0,
            "email": "prueba@mail.com",
            "activo": true,
            "cupocredito": 0.00,
            "periodopago": 0,
            "codigociiu": null,
            "descuentoventa": 0,
            "categoriatercero": 1,
            "formapago": 0,
            "listaprecios": 2,
            "grupoventas": 1,
            "grupocompras": 2,
            "vendedor": 0,
            "cobrador": 0,
            "fechacreacion": "2020-01-04 10:16:30",
            "regimen": 2,
            "banco": 0,
            "tipo_cuenta": null,
            "cuenta_bancaria": null,
            "limite_credito": 0.00000,
            "camposcliente": {
                "ACTIVIDADECONOMICAMUNICIPAL": "BC44",
                "Comentarios": "Cliente proveedor de software",
                "Comuna": 11,
                "FechaAniversario": "2016-06-01",
                "ClienteNacional": true,
                "Ranking": "2",
                "TieneAsesor": "N",
                "Vetado": "3",
                "TipodeEmpresa": [
                    "b",
                    "c"
                ],
                "continente": ""
            }
 
 
        }


</syntaxhighlight>
</syntaxhighlight>
Línea 353: Línea 208:
! 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
|-
| primerapellido || String || SI (Si tipo persona=NATURAL) || Primer Apellido
|-
| segundoapellido || String || NO || Segundo Apellido
|-
| nombrecompleto || String || SI || Nombre Completo
|-
| razonsocial || String || SI (Si tipo persona=JURIDICO) || Razón Social
|-
| escliente || Bool || NO || Seleccionar si el tercero es cliente
|-
| esproveedor || Bool || NO || Seleccionar si el tercero es proveedor
|-
| esempleado || Bool || NO || Seleccionar si el tercero es empleado
|-
| esvendedor || Bool || NO || Seleccionar si el tercero es vendedor
|-
| esotro || Bool || NO || Seleccionar si el tercero es otro
|-
| escobrador || Bool || NO || Seleccionar si el tercero es cobrador
|-
|-
| cumple_dia || Int || NO || Día del cumpleaños
| referencia || string || NO || Referencia del artículo
|-
|-
| cumplea_mes || Int || NO || Mes del cumpleaños
| barras || string || NO || Código de barras del artículo
|-
|-
| cumplea_ano || Int || NO || Año del cumpleaños
| descripcion || string || SI || Descripción del artículo
|-
|-
| genero || String || NO || Género del tercero (M=Masculino, F=Femenino)
| idgrupocontable || Int || SI || Id del Grupo contable
|-
|-
| direccion || String || SI || Dirección
| descripcionalterna || string || NO || Descripción alterna del artículo
|-
|-
| direccion2 || String || NO || Dirección complementaria
| idlinea || Int || SI || Id de la Línea
|-
|-
| telefono || String || NO || Número de teléfono
| idcategoria || Int || SI || Id de la Categoría
|-
|-
| ext || Int || NO || Número de extensión
| idpresentacion || Int || SI || Id de la Presentación
|-
|-
| movil || String || SI || Número de móvil celular
| idmarca || Int || SI || Id de la Marca
|-
|-
| pais || String || Informativo || Nombre País
| idunidadmedida || Int || SI || Id de la Unidad de medida
|-
|-
| departamento || String || Informativo || Nombre del departamento
| peso || decimal || NO || Peso del artículo
|-
|-
| ciudad || String || Informativo || Nombre de la ciudad
| costo || decimal || NO || Costo del artículo
|-
|-
| codciudad || String || SI || Código único de la ciudad
| costou || decimal || NO || Último Costo del artículo
|-
|-
| zona || Int || NO || ID de la zona
| activo || bool || SI || Estado del artículo (true=Activo, false=Inactivo)
|-
|-
| email || String || SI || Cuenta de email
| posicionarancel || string || NO || Posición arancel
|-
|-
| activo || Bool || SI || Estado del tercero (true=Activo, false=Inactivo)
| porcentajeArancel || decimal || NO || Porcentaje arancel
|-
|-
| cupocredito || Decimal || NO || Cupo de crédito
| DiasMaximo || short || NO || Días Máximo
|-
|-
| periodopago || Int || NO || Período de pago en días para el vencimiento de facturas de venta
| Diasminimo || short || NO || Días mínimo
|-
|-
| codigociiu || String || NO || Código CIIU, Actividades económicas
| Diasoptimo || short || NO || Días óptimo
|-
|-
| descuentoventa || Decimal || NO || Porcentaje para el descuento en ventas
| dias_reposicion || short || NO || Días reposición
|-
|-
| categoriatercero || Int || SI || ID de la categoría de terceros
| tipoPlaneacion || Int || NO || Tipo planeación (0=General, 1=Personalizada)
|-
|-
| formapago || Int || NO || ID de la forma de pago
| multiploCompra || decimal || NO || Múltiplo compra
|-
|-
| listaprecios || Int || NO || ID de la lista de precios
| PedidoMinimo || decimal || NO || Pedido mínimo
|-
|-
| grupoventas || Int || SI || ID del grupo de retenciones para ventas
| stockMinimoUnidades || decimal || NO || Stock mínimo en unidades
|-
|-
| grupocompras || Int || SI || ID del grupo de retenciones para compras
| stockOptimoUnidades || decimal || NO || Stock óptimo en unidades
|-
| 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
|}
|}




Línea 467: Línea 275:
     "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 ****************** -->
 
<Tab name = "API Modificar(PUT) ">
 
<!-- ***************** MODIFICAR ****************** -->
<Tab name = "API Modificar(PUT)">
'''PUT/users'''
'''PUT/users'''


'''EndPoint:'''
'''EndPoint:'''
https://www.apis.serpi.com.co/api/v1/TipoIdentidad
https://www.apis.serpi.com.co/api/v1/Articulo
 
''' Headers '''
''' Headers '''
{| class="wikitable left"
{| class="wikitable left"
Línea 492: Línea 301:
</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
}
]
</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 533: Línea 345:
<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>
Línea 569: Línea 363:
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:///www.apis.serpi.com.co/api/v1/DocumentoContable")
   .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();
Línea 600: Línea 397:
import requests
import requests


url = "https://wv9901.wolkvox.com/api/v2/reports_manager.php?api=agent_1&date_ini={{YYYYmmddHHiiss}}&date_end={{YYYYmmddHHiiss}}"
url = "https://www.apis.serpi.com.co/api/v1/DocumentoContable"


payload={}
payload = {}
headers = {
headers = {
   'wolkvox-token': '{{token}}'
   'secretkey': '{Secret Key}',
  'Authorization': '{Bearer Token}'
}
}


Línea 610: Línea 408:


print(response.text)
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>
</Tab>
<Tab name = "Php">
'''Request'''
<syntaxhighlight lang="java" line="1">
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://www.apis.serpi.com.co/api/v1/DocumentoContable');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'secretkey' => '{Secret Key}',
  'Authorization' => '{Bearer Token}'
));
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();
}
</syntaxhighlight>
</syntaxhighlight>



Revisión del 15:19 14 jun 2023

Descripción: Esta API permite la sincronizacion de documentos contables 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)"> GET/users

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
        }
    ]
}

{
    "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

</Tab>

<Tab name = "API Crear(POST)"> POST /users

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
	}
]

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


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)"> PUT/users

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
	}
]

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ó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:///www.apis.serpi.com.co/api/v1/DocumentoContable")
  .method("GET", body)
  .addHeader("secretkey", "{Secret Key}")
  .addHeader("Authorization", "{Bearer Token}")
  .build();
Response response = client.newCall(request).execute();

Response

{
    "code": 200,
    "error": null,
    "msg": "Information found for the current month",
    "data": [
        {
            "operation": "",
            "description": "",
            "items": "",
            "date": ""
        }
    ]
}

</Tab>

<Tab name = "Python"> Request

import requests

url = "https://www.apis.serpi.com.co/api/v1/DocumentoContable"

payload = {}
headers = {
  'secretkey': '{Secret Key}',
  'Authorization': '{Bearer Token}'
}

response = requests.request("GET", url, headers=headers, data=payload)

print(response.text)

Response

{
    "code": 200,
    "error": null,
    "msg": "Information found for the current month",
    "data": [
        {
            "operation": "",
            "description": "",
            "items": "",
            "date": ""
        }
    ]
}

</Tab>

<Tab name = "Php"> Request

<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://www.apis.serpi.com.co/api/v1/DocumentoContable');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'secretkey' => '{Secret Key}',
  'Authorization' => '{Bearer Token}'
));
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();
}

Response

{
    "code": 200,
    "error": null,
    "msg": "Information found for the current month",
    "data": [
        {
            "operation": "",
            "description": "",
            "items": "",
            "date": ""
        }
    ]
}

</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