Stock

/v1/stock

Existencias por almacén, ubicación, lote y SKU: totales, disponibles, reservados y en tránsito.

GET /v1/stock Listar registros
Parám.DescripciónDefecto
pageNúmero de página1
per_pageRegistros por página (máx. 1000)20
sinceInicio del rango de creación (columna entered). Solo fecha = desde las 00:00:00
untilFin del rango de creación. Solo fecha = hasta las 23:59:59
qBúsqueda de texto en los campos indicados en cada recurso: name description
s / oCampo de ordenamiento · Sentido: asc o descsegún recurso
fFiltros exactos en JSON
# página 2, 20 por página
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" "https://pionono-sandbox.extranet.business/v1/stock?page=2&per_page=20"

# creados en un rango de fechas, más recientes primero
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" "https://pionono-sandbox.extranet.business/v1/stock?since=2026-07-01&until=2026-07-31&s=entered&o=desc"

Respuesta

{
    "status": "success",
    "code": "200",
    "message": "LIST",
    "data": {
        "a1b2c3d4-5e6f-7890-abcd-ef1234567890": {
            "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
            "wrh_id": "WRH-01",
            "wrh_loc_id": "A-01-02",
            "prd_id": "PRD-0001",
            "prd_sku_id": "---",
            "prd_bat_id": "L2026-07",
            "uni_id": "U",
            "factor": 1,
            "stock_min": 10,
            "stock_total": 250,
            "stock_available": 240,
            "stock_reserved": 10,
            "price_cost": 8.9
        }
    },
    "meta": {
        "page": 1,
        "per_page": 20,
        "count": 1,
        "total": 134
    }
}
GET /v1/stock/{id} Obtener un registro
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" "https://pionono-sandbox.extranet.business/v1/stock/ID"

Respuesta

{
    "status": "success",
    "code": "200",
    "message": "GET",
    "data": {
        "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
        "wrh_id": "WRH-01",
        "wrh_loc_id": "A-01-02",
        "prd_id": "PRD-0001",
        "prd_sku_id": "---",
        "prd_bat_id": "L2026-07",
        "uni_id": "U",
        "factor": 1,
        "stock_min": 10,
        "stock_total": 250,
        "stock_available": 240,
        "stock_reserved": 10,
        "price_cost": 8.9
    }
}
POST /v1/stock Crear un registro

Solo se graban las columnas de la lista blanca de cada recurso (los campos grabables que aparecen en cada endpoint); cualquier otra clave del JSON se ignora en silencio. Los componentes de la clave primaria que no se envíen toman el valor ---. El id puede enviarse (máximo 45 caracteres alfanuméricos, _, - y .); si se omite, la API genera un UUID.

Requeridos en POST wrh_id prd_id uni_id

Componentes de la clave — si no se envían toman --- com_suc_id cou_id geo_id wrh_id wrh_loc_id prd_bat_id prd_id prd_sku_id lpn_id sts_id

Campos grabables name description uni_id factor stock_min stock_max stock_total stock_transit stock_available stock_reserved price_cost price_sell price_storage

curl -X POST "https://pionono-sandbox.extranet.business/v1/stock" \
     -H "X-SYNCS-API-TOKEN: TU_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
         "wrh_id": "WRH-01",
         "wrh_loc_id": "A-01-02",
         "prd_id": "PRD-0001",
         "prd_sku_id": "---",
         "prd_bat_id": "L2026-07",
         "uni_id": "U",
         "factor": 1,
         "stock_min": 10,
         "stock_total": 250,
         "stock_available": 240,
         "stock_reserved": 10,
         "price_cost": 8.9
     }'

Respuesta

{
    "status": "success",
    "code": "201",
    "message": "ADD",
    "data": {
        "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
        "wrh_id": "WRH-01",
        "wrh_loc_id": "A-01-02",
        "prd_id": "PRD-0001",
        "prd_sku_id": "---",
        "prd_bat_id": "L2026-07",
        "uni_id": "U",
        "factor": 1,
        "stock_min": 10,
        "stock_total": 250,
        "stock_available": 240,
        "stock_reserved": 10,
        "price_cost": 8.9
    }
}
PATCH /v1/stock/{id} Actualizar un registro

Ambos hacen exactamente lo mismo: actualización parcial. Solo se modifican las columnas presentes en el JSON, el resto queda intacto — no hace falta reenviar el registro completo. Se usa PATCH por corrección semántica y PUT por compatibilidad con clientes que no lo soportan. La API graba modified y modified_by automáticamente.

Si el id no existe (o ya se eliminó) responden 404 NO_DATA; si el JSON no trae ninguna columna válida, 400 NO_VALID_FIELDS.

Campos grabables name description uni_id factor stock_min stock_max stock_total stock_transit stock_available stock_reserved price_cost price_sell price_storage

curl -X PATCH "https://pionono-sandbox.extranet.business/v1/stock/ID" \
     -H "X-SYNCS-API-TOKEN: TU_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
         "wrh_loc_id": "A-01-02",
         "prd_sku_id": "---"
     }'

Respuesta

{
    "status": "success",
    "code": "200",
    "message": "UPDATE",
    "data": {
        "id": "a1b2c3d4-5e6f-7890-abcd-ef1234567890",
        "wrh_loc_id": "A-01-02",
        "prd_sku_id": "---"
    }
}
PUT /v1/stock/{id} Actualizar (compatibilidad) — idéntico a PATCH

Campos grabables name description uni_id factor stock_min stock_max stock_total stock_transit stock_available stock_reserved price_cost price_sell price_storage

curl -X PUT "https://pionono-sandbox.extranet.business/v1/stock/ID" \
     -H "X-SYNCS-API-TOKEN: TU_TOKEN" \
     -H "Content-Type: application/json" \
     -d '{
         "wrh_loc_id": "A-01-02",
         "prd_sku_id": "---"
     }'
DELETE /v1/stock/{id} Eliminar un registro — Elimina el registro
curl -X DELETE "https://pionono-sandbox.extranet.business/v1/stock/ID" \
     -H "X-SYNCS-API-TOKEN: TU_TOKEN"

Respuesta

{
    "status": "success",
    "code": "200",
    "message": "DELETED",
    "data": null
}