Base: https://viasono-api.extranet.business/v1 · Respuestas en JSON · Multi-tenant por subdominio
Todas las peticiones requieren la cabecera X-SYNCS-API-TOKEN con un token vigente. Puede verificarse en GET /v1/acl:
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" https://viasono-api.extranet.business/v1/acl
Sin token → 401 UNAUTHORIZED; token inválido o expirado → 401 TOKEN_INVALID.
{
"status" : "success" | "error",
"code" : "200",
"message" : "LIST | GET | ADD | UPDATE | DELETED | ...",
"data" : { ... } | null,
"meta" : { "page": 1, "limit": 20, "count": 20, "total": 134 } // solo en listados
}
| Parám. | Aplica a | Descripción | Ejemplo |
|---|---|---|---|
i | GET, PUT, DELETE | Id del registro (equivale a /recurso/{id}) | ?i=ABC123 |
l | GET | Límite de resultados (1–1000, por defecto 100) | ?l=20 |
p | GET | Página (desde 1) | ?p=2 |
q | GET | Búsqueda por texto en los campos de búsqueda del recurso | ?q=martillo |
s | GET | Campo de ordenamiento (lista blanca por recurso) | ?s=entered |
o | GET | Sentido: asc (defecto) o desc | ?o=desc |
f | GET | Filtros exactos en JSON {"columna":"valor"} | ?f={"cat_id":"X"} |
d | POST, PUT | Datos en JSON. También se acepta el body crudo con Content-Type: application/json | -d '{"name":"..."}' |
cus · v1/api/customer.phpClientes, proveedores, colaboradores, etc. Solo los diferencia la categoría (cat_id).
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/terceros?l=20 | Lista paginada |
| GET | /v1/terceros/{id} | Un registro |
| POST | /v1/terceros | Agrega (body JSON) |
| PUT | /v1/terceros/{id} | Actualiza (body JSON) |
| DEL | /v1/terceros/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
doi_id doi name
Claves (defecto ---):
cus_cha_id sll_id cus_grp_id cus_cla_id cus_sec_id cat_id doi_id doi
Campos grabables:
cou_id geo_id name description name_commercial registered sic_id cus_cnt_id cus_cnt_name firstname lastname middlename status condition type activity phone phone_home phone_mobile phone_office phone_fax email state province city zone address billing_address shipping_address importer exporter legal_representatives employees mar_id edu_id annual_revenue agent_detraction agent_retention agent_collection electronic_invoicing electronic_payroll system_accounting system_invoicing user code sync prd_prc_id itm_prc_id rating score
Busca (?q=) en:
name name_commercial doi email
prd · v1/api/product.phpCatálogo de productos: dimensiones, códigos de barra, precios base, unidades de compra/venta.
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/productos?l=20 | Lista paginada |
| GET | /v1/productos/{id} | Un registro |
| POST | /v1/productos | Agrega (body JSON) |
| PUT | /v1/productos/{id} | Actualiza (body JSON) |
| DEL | /v1/productos/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
name
Claves (defecto ---):
cou_id cha_id sll_id cat_id prd_lin_id prd_seg_id prd_fam_id prd_cla_id prd_cod_id prd_man_id prd_bra_id prd_bat_id prd_rot_id
Campos grabables:
name description description_short specs composition contraindications warnings datasheet visible visible_soldout featured kit typ_id model serial bar_id bar package_width package_height package_depth package_volume package_weight product_width product_height product_depth product_volume product_weight recurrent fre_id frequency_date sync thumbnail url meta_keywords meta_description tag slug reviews rating score loyalty to_purchase purchase_cur purchase_unit purchase_min purchase_max to_sell_online to_sell sell_cur sell_unit sell_min sell_max to_sync
Busca (?q=) en:
name description model bar slug
prd_prc · v1/api/price-list.phpCabeceras de listas de precios, con su moneda (cur_id) y factor.
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/listas-precios?l=20 | Lista paginada |
| GET | /v1/listas-precios/{id} | Un registro |
| POST | /v1/listas-precios | Agrega (body JSON) |
| PUT | /v1/listas-precios/{id} | Actualiza (body JSON) |
| DEL | /v1/listas-precios/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
name cur_id
Campos grabables:
name description cur_id factor
Busca (?q=) en:
name description
prd_prc_ · v1/api/prices.phpDetalle de precios por producto/SKU dentro de una lista de precios (prd_prc_id).
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/precios?l=20 | Lista paginada |
| GET | /v1/precios/{id} | Un registro |
| POST | /v1/precios | Agrega (body JSON) |
| PUT | /v1/precios/{id} | Actualiza (body JSON) |
| DEL | /v1/precios/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
prd_prc_id prd_id price
Claves (defecto ---):
prd_prc_id cur_id prd_id prd_sku_id
Campos grabables:
name description factor fixed_since fixed_until price_base price price_unit price_tax price_discount price_storage price_shipping price_setup price_replacement price_maintenance price_purchase price_books price_fixed price_sell
Busca (?q=) en:
name description
wrh · v1/api/warehouse.phpAlmacenes o bodegas: ubicación, responsable y datos de contacto.
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/almacenes?l=20 | Lista paginada |
| GET | /v1/almacenes/{id} | Un registro |
| POST | /v1/almacenes | Agrega (body JSON) |
| PUT | /v1/almacenes/{id} | Actualiza (body JSON) |
| DEL | /v1/almacenes/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
name
Claves (defecto ---):
com_suc_id cou_id pos_id
Campos grabables:
name description responsible responsible_phone responsible_email geo_id state province city zone_typ zone street_typ street number_typ number interior_typ interior zip latitude longitude altitude place_id ip_public ip_local external external_responsible external_responsible_phone external_responsible_email
Busca (?q=) en:
name description city
prd_sto · v1/api/stock.phpExistencias por almacén, ubicación, lote y SKU: totales, disponibles, reservados y en tránsito.
| Método | Ruta | Acción |
|---|---|---|
| GET | /v1/stock?l=20 | Lista paginada |
| GET | /v1/stock/{id} | Un registro |
| POST | /v1/stock | Agrega (body JSON) |
| PUT | /v1/stock/{id} | Actualiza (body JSON) |
| DEL | /v1/stock/{id} | Borrado lógico (archived = 1) |
Requeridos (POST):
wrh_id prd_id uni_id
Claves (defecto ---):
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
Busca (?q=) en:
name description
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" "https://viasono-api.extranet.business/v1/productos?l=20"
curl -H "X-SYNCS-API-TOKEN: TU_TOKEN" "https://viasono-api.extranet.business/v1/terceros?q=acme&s=entered&o=desc&l=10"
curl -X POST "https://viasono-api.extranet.business/v1/productos" \
-H "X-SYNCS-API-TOKEN: TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Martillo 16oz","cat_id":"herramientas","bar":"7750000000001","sell_cur":"PEN"}'
curl -X PUT "https://viasono-api.extranet.business/v1/stock/ID_DEL_REGISTRO" \
-H "X-SYNCS-API-TOKEN: TU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"stock_available":42}'
curl -X DELETE "https://viasono-api.extranet.business/v1/almacenes/ID_DEL_REGISTRO" \
-H "X-SYNCS-API-TOKEN: TU_TOKEN"
| Código | Mensaje | Cuándo |
|---|---|---|
400 | NO_DATA_SENT / NO_DATA_ID / FIELD_REQUIRED / FILTER_INVALID | Petición incompleta o con campos fuera de la lista blanca |
401 | UNAUTHORIZED / TOKEN_INVALID | Falta el token o no es válido |
403 | TENANT_UNKNOWN | El subdominio no corresponde a ningún tenant |
404 | NO_DATA / NOT_FOUND | Sin resultados o ruta inexistente |
405 | METHOD_NOT_ALLOWED | Método HTTP no soportado |
409 | DUPLICATE | Viola una clave única (ej. mismo nombre o código de barras) |
500/503 | DB_ERROR / SERVICE_UNAVAILABLE | Error interno o base de datos caída |