Artículos

Actualizar los precios de un artículo

Define el precio de alquiler, el precio de venta, la fianza, el valor de reposición y los márgenes de tiempo que bloquean el artículo alrededor de un alquiler.

PATCH
/api/v1/items/{itemId}/pricing

Ejemplos de petición

curl https://app.filmo.io/api/v1/items/item_8f2a1c/pricing \
  --request PATCH \
  --header "Authorization: Bearer $FILMO_API_KEY" \
  --header "Idempotency-Key: $(uuidgen 2>/dev/null || cat /proc/sys/kernel/random/uuid)" \
  --header 'Content-Type: application/json' \
  --data '{
  "pricingSettings": {
    "type": "periodPrice",
    "price": "180.00",
    "period": "day"
  },
  "salePrice": "5900.00",
  "depositValue": "1000.00",
  "replacementValue": "6500.00",
  "insuranceEnabled": true,
  "discountEnabled": true,
  "bufferBefore": 1,
  "bufferBeforeUnit": "day",
  "bufferAfter": 1,
  "bufferAfterUnit": "day"
}'
{
  "data": {
    "id": "item_9f3a2b",
    "name": "Example item",
    "sku": "CAM-FX6-01",
    "description": "Example text.",
    "orderInfo": "Example order info",
    "ean": "0000000000000",
    "itemType": "fixed",
    "stockCalculationMethod": "bulk",
    "collectionId": "collection_9f3a2b",
    "collectionName": "Example collection name",
    "images": [
      "Example images"
    ],
    "salePrice": "120.00",
    "depositValue": "120.00",
    "minStock": 1,
    "serializedItemsCount": 1,
    "pricingSettings": {
      "type": "periodPrice",
      "price": "120.00",
      "period": "hour"
    },
    "insuranceEnabled": true,
    "discountEnabled": true,
    "bufferBefore": 1,
    "bufferBeforeUnit": "hour",
    "bufferAfter": 1,
    "bufferAfterUnit": "hour",
    "physicalProperties": {
      "weight": 1,
      "width": 1,
      "height": 1,
      "length": 1,
      "volume": 1,
      "current": 1,
      "power": 1
    },
    "variants": [
      {
        "variantId": "variant_9f3a2b",
        "variantName": "Example variant name",
        "variantPrice": "120.00",
        "salePrice": "120.00",
        "ean": "0000000000000"
      }
    ],
    "tags": [
      {
        "id": "tag_9f3a2b",
        "name": "Example tag"
      }
    ],
    "customFields": {
      "example": "example"
    },
    "createdAt": "2026-09-01T08:00:00.000Z",
    "updatedAt": "2026-09-01T08:00:00.000Z",
    "replacementValue": "120.00",
    "accessoryIds": [
      "accessory_9f3a2b"
    ],
    "alternativeIds": [
      "alternative_9f3a2b"
    ]
  }
}

Generado a partir del esquema

El coste interno y el externo NO forman parte del contrato público y no se pueden escribir aquí. Devuelve el artículo actualizado en detalle.

Autorizaciones

Clave de API como Bearer, con el permiso de abajo. items:write

Cabeceras

Idempotency-Keystring

Identificador único de la petición, elegido por el cliente (sirve un UUID). Entre 1 y 255 caracteres: una cabecera vacía se rechaza con 400 validation_error, porque el cliente se creería protegido. Repetir la misma clave con el MISMO cuerpo en 24 h devuelve la respuesta guardada sin volver a ejecutar, con la cabecera Idempotent-Replay: true. Con un cuerpo DISTINTO devuelve 422. Es la forma segura de reintentar tras un tiempo de espera de red.

Límites: longitud mín. 1, longitud máx. 255

Ejemplo:"9f1c2f4e-3a5b-4f6d-8e7a-0b1c2d3e4f5a"

If-Matchstring

Bloqueo optimista: el ETag que leíste del recurso (o *). Si el recurso ha cambiado desde entonces, la escritura se rechaza con 412 precondition_failed antes de hacer nada; léelo de nuevo y reintenta. Sin la cabecera, la escritura siempre se realiza.

Ejemplo:"\"3sT3d9pBvZq4h2N0w8x1YkLmQ7c\""

Parámetros de ruta

itemIdstringObligatorio

Identificador del artículo.

Límites: longitud mín. 1

Cuerpo

application/json

Esquema del cuerpo: ItemPricingBody

pricingSettingsobject | null

Precios de alquiler, los tres campos juntos; null los borra.

Mostrar atributos hijos
pricingSettings.typestringObligatorio

Modo de precio.

Opciones disponibles: periodPrice, fixedPrice, pricingStructure

pricingSettings.pricestringObligatorio

Precio base de alquiler, como cadena decimal.

Límites: patrón ^\d{1,13}(\.\d{1,2})?$

pricingSettings.periodstringObligatorio

Unidad de periodo del precio.

Opciones disponibles: hour, day, week, month

salePricestring | null

Precio de venta, como cadena decimal; null lo borra.

Límites: patrón ^\d{1,13}(\.\d{1,2})?$

depositValuestring | null

Importe de la fianza, como cadena decimal; null lo borra.

Límites: patrón ^\d{1,13}(\.\d{1,2})?$

replacementValuestring | null

Valor de reposición, como cadena decimal; null lo borra.

Límites: patrón ^\d{1,13}(\.\d{1,2})?$

insuranceEnabledboolean

Si el artículo admite seguro.

discountEnabledboolean

Si el artículo admite descuentos.

eanstring | null

EAN o código de barras; null lo borra.

Límites: longitud mín. 1

bufferBeforenumber | null

Tiempo de margen reservado ANTES del alquiler; null lo borra junto con su unidad.

Límites: mín. 0

bufferBeforeUnitstring | null

Unidad del margen previo; null solo junto con bufferBefore: null.

Opciones disponibles: hour, day

bufferAfternumber | null

Tiempo de margen reservado DESPUÉS del alquiler; null lo borra junto con su unidad.

Límites: mín. 0

bufferAfterUnitstring | null

Unidad del margen posterior; null solo junto con bufferAfter: null.

Opciones disponibles: hour, day

Respuesta

application/json

Respuesta correcta.

Esquema de la respuesta: ItemDetailDto

Sobre: ItemDetailResponse. meta.warnings solo aparece cuando la operación está obsoleta.

Cabeceras: X-Request-Id · RateLimit-Limit · RateLimit-Remaining · RateLimit-Reset · ETag · Idempotent-Replay

dataobject

El artículo completo, tal como lo devuelve la API.

Mostrar atributos hijos
data.idstring

Identificador único del artículo.

data.namestring

Nombre del artículo.

data.skustring | null

Referencia SKU del artículo; null si no consta.

data.descriptionstring | null

Descripción del artículo; null si no consta.

data.orderInfostring | null

Información adicional del pedido (notas de preparación y entrega); null si no consta.

data.eanstring | null

EAN/código de barras; null si no consta.

data.itemTypestring

Tipo de artículo: fixed (artículo simple) o variant (artículo con variantes).

Opciones disponibles: fixed, variant

data.stockCalculationMethodstring

Método de cálculo del stock: bulk (a granel, por cantidad) o serialized (por artículos serializados).

Opciones disponibles: bulk, serialized

data.collectionIdstring | null

Identificador de la colección a la que pertenece; null si no está en ninguna.

data.collectionNamestring | null

Nombre de la colección a la que pertenece; null si no está en ninguna.

data.imagesstring[]

URLs de las imágenes del artículo.

data.salePricestring | null

Precio de venta como cadena decimal "1234.50" (ROUND_HALF_UP); null si no tiene.

Límites: patrón ^-?\d+\.\d{2}$

data.depositValuestring | null

Importe de la fianza como cadena decimal "1234.50" (ROUND_HALF_UP); null si no tiene.

Límites: patrón ^-?\d+\.\d{2}$

data.minStocknumber | null

Stock mínimo configurado para las alertas; null si no está configurado.

data.serializedItemsCountnumber

Número de unidades serializadas registradas del artículo.

data.pricingSettingsobject | null

Configuración de precios de alquiler; null si no está configurada.

Mostrar atributos hijos
data.pricingSettings.typestring | null

Modo de precio: periodPrice (precio por periodo), fixedPrice (precio fijo) o pricingStructure (estructura de precios); null si el artículo no tiene ninguno configurado.

Opciones disponibles: periodPrice, fixedPrice, pricingStructure

data.pricingSettings.pricestring | null

Precio base de alquiler como cadena decimal "1234.50" (ROUND_HALF_UP); null si no aplica.

Límites: patrón ^-?\d+\.\d{2}$

data.pricingSettings.periodstring | null

Unidad de periodo del precio: hour, day, week o month; null si el artículo no tiene ninguna configurada.

Opciones disponibles: hour, day, week, month

data.insuranceEnabledboolean

Si el artículo admite seguro.

data.discountEnabledboolean

Si el artículo admite descuentos.

data.bufferBeforenumber | null

Tiempo de margen reservado antes del alquiler; null si no aplica.

data.bufferBeforeUnitstring | null

Unidad del margen previo: hora o día; null si no aplica.

Opciones disponibles: hour, day

data.bufferAfternumber | null

Tiempo de margen reservado después del alquiler; null si no aplica.

data.bufferAfterUnitstring | null

Unidad del margen posterior: hour o day; null si no aplica.

Opciones disponibles: hour, day

data.physicalPropertiesobject | null

Propiedades físicas (peso y dimensiones); null si no se han registrado.

Mostrar atributos hijos
data.physicalProperties.weightnumber | null

Peso del artículo en kilogramos; null si no está registrado.

data.physicalProperties.widthnumber | null

Ancho del artículo en centímetros; null si no está registrado.

data.physicalProperties.heightnumber | null

Altura del artículo en centímetros; null si no consta.

data.physicalProperties.lengthnumber | null

Longitud del artículo en centímetros; null si no consta.

data.physicalProperties.volumenumber | null

Volumen del artículo en metros cúbicos (m³); null si no está registrado.

data.physicalProperties.currentnumber | null

Consumo de corriente en amperios; null si no consta.

data.physicalProperties.powernumber | null

Potencia en vatios; null si no se ha registrado.

data.variantsobject[]

Variantes del artículo (vacío si el artículo es de tipo fixed).

Mostrar atributos hijos
data.variants.variantIdstring

Identificador único de la variante.

data.variants.variantNamestring

Nombre de la variante.

data.variants.variantPricestring

Precio de alquiler de la variante como cadena decimal "1234.50" (ROUND_HALF_UP).

Límites: patrón ^-?\d+\.\d{2}$

data.variants.salePricestring | null

Precio de venta de la variante como cadena decimal "1234.50" (ROUND_HALF_UP); null si no tiene.

Límites: patrón ^-?\d+\.\d{2}$

data.variants.eanstring | null

EAN/código de barras de la variante; null si no consta.

data.tagsobject[]

Etiquetas asociadas al artículo.

Mostrar atributos hijos
data.tags.idstring

Identificador único de la etiqueta.

data.tags.namestring

Nombre de la etiqueta.

data.customFieldsobject<string, any>

Valores de los campos personalizados por identificador de campo personalizado; las definiciones están en /api/v1/custom-fields.

data.createdAtstring<date-time>

Fecha de creación en ISO 8601 con desplazamiento.

data.updatedAtstring<date-time>

Fecha de la última actualización en ISO 8601 con desplazamiento.

data.replacementValuestring | null

Valor de reposición del artículo como cadena decimal "1234.50" (ROUND_HALF_UP); null si no consta.

Límites: patrón ^-?\d+\.\d{2}$

data.accessoryIdsstring[]

Identificadores de los artículos configurados como accesorios de este.

data.alternativeIdsstring[]

Identificadores de los artículos configurados como alternativas de este.

metaobject

Información adicional sobre la respuesta.

Mostrar atributos hijos
meta.warningsobject[]

Avisos del ciclo de vida; solo aparecen cuando la operación está obsoleta.

Mostrar atributos hijos
meta.warnings.codestring

Código de aviso estable.

Opciones disponibles: deprecated

meta.warnings.messagestring

Para personas: qué está obsoleto, hasta cuándo y qué usar.

meta.warnings.sunsetstring

Día (YYYY-MM-DD) en que la operación deja de estar disponible.

meta.warnings.replacementstring | null

operationId de la operación que hay que usar en su lugar, o null si no hay ninguna.

Errores

EstadoCódigosSignificado
400validation_errorConsulta o cuerpo mal formados. errors[] enumera cada campo erróneo con su código estable.
404not_foundNo existe o queda fuera del alcance de la clave de API.
409conflictEl estado actual del recurso impide la operación, ya hay en curso una petición con esa Idempotency-Key, u otra escritura condicional (If-Match) retuvo el recurso durante más de cinco segundos. errors[0].code indica cuál: in_progress y lock_timeout se resuelven reintentando; invalid_state no, porque el estado del recurso prohíbe la operación.
412precondition_failedLa etiqueta de entidad If-Match no coincide con la representación actual. Vuelve a leer el recurso y reintenta.
422idempotency_key_reusedLa misma clave se usó antes con un cuerpo distinto. Cambia la clave.

401, 403, 429, 500 los puede devolver cualquier operación. Errores

Obsolescencia

Esta operación no está obsoleta. Las obsolescencias se anuncian con la cabecera Deprecation y una fecha de retirada. Política de versiones

  • Catálogo e inventario

    Artículo

    El artículo, tal como lo devuelve la API.