API Articulos

De WikiSerpi
Ir a la navegación Ir a la búsqueda

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>