Diferencia entre revisiones de «API Articulos»

De WikiSerpi
Ir a la navegación Ir a la búsqueda
Línea 82: Línea 82:
             "stockMinimoUnidades": null,
             "stockMinimoUnidades": null,
             "stockOptimoUnidades": null,
             "stockOptimoUnidades": null,
             "camposPersonalizados": {}
             "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            }
         }
         }
     ]
     ]
Línea 198: Línea 202:
"stockMinimoUnidades": null,
"stockMinimoUnidades": null,
"stockOptimoUnidades": null,
"stockOptimoUnidades": null,
         "camposPersonalizados": {}
         "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            }
}
}
]
]

Revisión del 17:34 26 jul 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,
            "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            }
        }
    ]
}

{
    "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
camposPersonalizados Objeto Objeto con la informacion de campos personalizados

</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,
        "camposPersonalizados": {
                "PAGINAS": 50,
                "Comentarios": "Cliente proveedor ",
                "AUTOR": "Juan",
            }
	}
]

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
camposPersonalizados Objeto NO Objeto con la informacion de campos personalizados

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,
        "camposPersonalizados": {}
	}
]

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>