---
title: "Reverts a customized property to its Item Template default."
method: POST
path: "/api/v1/items/{id}/properties/{propertyId}/revert"
tags: ["ItemProperties"]
---

# Reverts a customized property to its Item Template default.

`POST /api/v1/items/{id}/properties/{propertyId}/revert`

## Request

- Base URL: `https://app.flexonthejob.com`
- URL: `https://app.flexonthejob.com/api/v1/items/{id}/properties/{propertyId}/revert`
- Auth: HTTP bearer

Requires `ManageInventory` and an `Idempotency-Key` header. Same as "Revert" in the
Items page's item modal: the value goes back to the Item Template's default (or its first
visible option, or empty), `isCustomized` clears so the property follows the template
again, and the value flows to inventory units like an edit. Only for properties that came
from the item's Item Template.

## Path parameters

- `id` integer, required
- `propertyId` integer, required

## Response `200`

Reverted; body is the item's properties.

- ItemPropertiesResponse: Body of `GET /api/v1/items/{id}/properties` and of every custom-field write: all of an item's properties (custom fields) with their definitions and current values, ordered by name.
  - `itemId` integer: The item (template) id, e.g. `12`.
  - `properties` ItemPropertyDto[]: Every property of the item, including the pricing properties `Cost` and `Unit Price`.
    - `id` integer: Property id, e.g. `341`; used by the per-property routes.
    - `name` string: Property name as shown in the app, e.g. `"Color"` (unique per item, case-insensitive).
    - `value` string: Current value as stored, never null (`""` = no value). Numbers are decimal strings (`"12.5"`), booleans `"true"`/`"false"`, dates `yyyy-MM-dd`, MultiSelect a comma-separated list of options (`"Red,Blue"`). A calculated property shows its last computed value.
    - `dataType` 'Text' | 'Number' | 'Date' | 'Boolean' | 'Dropdown' | 'MultiSelect'
    - `options` string[]: Allowed values for `Dropdown` / `MultiSelect`, e.g. `["Red","Blue"]`; empty for other types (and for a list property that has no options yet, which then accepts any value).
    - `isCalculated` boolean: True when the value comes from a calculation (a formula authored in the app). Calculated properties are read-only here: value writes answer `409`.
    - `calculationExpression` string, nullable: The calculation's formula as stored (references appear as `{n}` placeholders), or null when not calculated. Informational only.
    - `isItemLevel` boolean: True for an item-level property added to this item only (Items page "add property", or `POST /api/v1/items/{id}/properties`); false for a property that came from the item's Item Template (template builder), its category or item creation.
    - `isCustomized` boolean: True when a template-builder property's value was set on this item and so no longer follows the Item Template ("Customized" in the app). `POST .../properties/{propertyId}/revert` undoes it.
    - `isPricing` boolean: True for `Cost` and `Unit Price`: required on every item and changed through `PATCH /api/v1/items/{id}` (`cost` / `unitPrice`), never through the custom-field routes (`409`).
  - `propagated` integer: Writes only (0 on GET): how many inventory units' copies of the property were changed by the write (a new value flowing to units that were not individually customized, a new item-level property added to existing units, or the copies removed with a deleted one).

## Other responses

- `400`: Missing `Idempotency-Key`.
- `401`: Unauthorized
- `403`: Forbidden
- `404`: No such property on an active item in this organization.
- `409`: The property is item-level, the item is not assigned to an Item Template, the template no longer has the property, or the key's creator is unknown on this server.
- `429`: Too Many Requests

---

[API](https://skmtc.dev/flexonthejob/apis/flex-api.md) · [All operations](https://skmtc.dev/flexonthejob/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flexonthejob/apis/flex-api/revisions/19c8f4d27acf?raw)
