curl --request PATCH \
--url https://api.revem.ai/products/public/v1/by-sku/{sku} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"active": false
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({active: false})
};
fetch('https://api.revem.ai/products/public/v1/by-sku/{sku}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revem.ai/products/public/v1/by-sku/{sku}"
payload = { "active": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"id": "3f2b6c1e-8d4a-4f0b-9c2e-7a1d5e6f8b90",
"warnings": []
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"ok": false,
"error": "Forbidden",
"message": "This endpoint is not available to API keys"
}{
"ok": false,
"error": "Not Found",
"message": "No existe un producto con el SKU \"CONT-20ST\""
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"ok": false,
"error": "Too many requests. Retry in 1 minute."
}Actualizar un producto por SKU
Como PATCH /products/public/v1/{id}, direccionando por SKU. No crea productos: un SKU que no existe responde 404, no lo crea —para eso está el upsert—. Un producto del simulador responde 404 y no 409: un producto que esta credencial no puede leer no se vuelve alcanzable por el verbo de escritura.
curl --request PATCH \
--url https://api.revem.ai/products/public/v1/by-sku/{sku} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"active": false
}
'const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({active: false})
};
fetch('https://api.revem.ai/products/public/v1/by-sku/{sku}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.revem.ai/products/public/v1/by-sku/{sku}"
payload = { "active": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text){
"ok": true,
"id": "3f2b6c1e-8d4a-4f0b-9c2e-7a1d5e6f8b90",
"warnings": []
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"error": "Unauthorized",
"message": "Invalid API key"
}{
"ok": false,
"error": "Forbidden",
"message": "This endpoint is not available to API keys"
}{
"ok": false,
"error": "Not Found",
"message": "No existe un producto con el SKU \"CONT-20ST\""
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"error": "<string>",
"ok": false,
"message": "<string>",
"unknownAttributes": [
"<string>"
],
"missingAttributes": [
"<string>"
]
}{
"ok": false,
"error": "Too many requests. Retry in 1 minute."
}Authorizations
La API key de tu organización, con la forma rvm_<prefijo>.<secreto>, enviada como Authorization: Bearer rvm_…. Revem la emite y sólo se muestra una vez; si la pierdes se reemplaza, no se recupera.
Path Parameters
SKU del producto en tu sistema.
1 - 255Body
Todos los campos son opcionales y una clave ausente deja el valor guardado como está. Los atributos personalizados van al mismo nivel que los campos fijos, identificados por su nombre en Revem (sin distinguir mayúsculas). Tienen que estar definidos para productos: un nombre sin definición responde 422 con la lista en unknownAttributes, y un valor que no calza con el tipo declarado —o una opción que no está en un select— también responde 422. Un null quita el atributo. Hasta 100 atributos por solicitud.
Identificador del producto en tu sistema. Único dentro del tenant; es la identidad con la que el upsert resuelve. Opcional: reemplaza el SKU actual. Si ya pertenece a otro producto responde 409.
1 - 255Nombre del producto, hasta 500 caracteres.
1 - 500Descripción, hasta 5000 caracteres. Una cadena vacía no borra la descripción guardada.
5000Precio, hasta dos decimales. Un tercer decimal responde 400 en vez de truncarse.
0 <= x <= 9999999999.99Código de moneda de 3 letras, por ejemplo CLP.
^[A-Za-z]{3}$UNIQUE, WEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUAL o ANNUAL. Al crear, si se omite, queda en UNIQUE.
UNIQUE, WEEKLY, MONTHLY, QUARTERLY, SEMI_ANNUAL, ANNUAL UNIQUE para un cobro único o RECURRENT para uno recurrente.
UNIQUE, RECURRENT UNIT, HOUR, DAY, MONTH, KG, G, LITER, METER o M2.
UNIT, HOUR, DAY, MONTH, KG, G, LITER, METER, M2 Descuento máximo permitido, entero de 0 a 100.
0 <= x <= 100Impuesto aplicable, entero de 0 a 100.
0 <= x <= 100Si el producto está disponible. Esta API no borra productos: dar de baja es enviar active: false.
Enlace http o https a la imagen. Responde 409 si la administra la integración que importó el producto.
2000Enlace http o https donde se ve o se compra. Responde 409 si la administra la integración que importó el producto.
2000