> ## Documentation Index
> Fetch the complete documentation index at: https://crm-integrations.ask-wire.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a property

> Update an existing, manually managed property record.

## Overview

Partially updates a property record by its Ask Wire `id`. Only the fields included in the request body are changed; omitted fields are left as-is.

Send the request as `application/json`. To attach or replace supporting documents, use the asset files endpoints instead of this one.

<Warning>
  `notes` must be valid HTML (e.g. `<p>your text</p>`), not plain text.
  Sending plain text in `notes` currently fails with
  `500 {"error": "Asset update failed"}` on this endpoint — [Create a
  property](/docs/api-reference/endpoint/create) rejects the same input more
  correctly, with `400 {"notes": ["Content must be valid HTML."]}`.
  Wrapping the value in an HTML tag updates successfully here. Every other
  field verified below updates successfully regardless of format.
</Warning>

<Note>
  Sending an explicit `null` for a field does not clear it — the field keeps
  its previous value. There is currently no verified way to clear a field via
  this endpoint.
</Note>

***

## Path parameters

| Parameter | Type    | Description                            |
| --------- | ------- | -------------------------------------- |
| `id`      | integer | Ask Wire ID of the property to update. |

***

## Request

### Body (application/json)

Accepts the same fields as [Create a property](/docs/api-reference/endpoint/create) (except `purpose`, see below), all optional — include only the fields you want to change.

#### Core fields

| Field          | Type   | Description                                       |
| -------------- | ------ | ------------------------------------------------- |
| `portfolio`    | string | Portfolio the property belongs to.                |
| `ref_asset_id` | string | Your own external reference ID for this property. |
| `reference_id` | string | Source system reference ID.                       |
| `notes`        | string | Free-text internal notes.                         |

<Note>
  `purpose` is not accepted on this endpoint — it's set on create and
  isn't changed via update. It's still returned in the response below.
</Note>

***

#### Location

<Note>
  `address`, `latitude`, `longitude`, `property_type`, `price`, and
  `floor_number` were verified against a live PATCH response. Per the
  backend's own schema, `municipality` is **not** a writable field —
  `region`, `regional_unit`, and `neighborhood` (plain integer IDs) are what
  the endpoint actually accepts for geography.
</Note>

| Field           | Type    | Description                 |
| --------------- | ------- | --------------------------- |
| `address`       | string  | Full address string.        |
| `latitude`      | number  | Latitude coordinate.        |
| `longitude`     | number  | Longitude coordinate.       |
| `district`      | string  | Free-text district name.    |
| `zone_name`     | string  | Free-text zone name.        |
| `region`        | integer | Region ID (level 3).        |
| `regional_unit` | integer | Regional unit ID (level 4). |
| `neighborhood`  | integer | Neighborhood ID.            |

***

#### Classification

| Field            | Type   | Values                 | Description                                    |
| ---------------- | ------ | ---------------------- | ---------------------------------------------- |
| `country`        | string | `greece`, `cyprus`     | Country the property is located in.            |
| `listing_type`   | string | `rent`, `sale`, `sold` | Listing type, if this asset is also a listing. |
| `listing_status` | string | `active`, `inactive`   | Listing status.                                |

***

#### Property details

<Note>
  `property_type` is the only field below with a server-enforced enum,
  verified against the backend's own schema. `property_usage`,
  `heating_type`, `energy_class`, `condition`, and `view` are free-text
  strings (up to 255 characters) as far as the API is concerned — the values
  listed for them are conventions used by the Ask Wire web app, not
  constraints the API enforces.
</Note>

| Field                    | Type    | Values                                                                                                                                | Description                                       |
| ------------------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
| `property_type`          | string  | `Apartment`, `House`, `Field`, `Plot`, `Warehouse`, `Shop`, `Office`, `Storage`, `Retail`, `Right to Build`, `Parking space`, `Other` | Property category.                                |
| `property_usage`         | string  | e.g. `residential`, `commercial`, `mixed`                                                                                             | Intended use of the property. Free text.          |
| `land_use`               | string  | e.g. `residential`, `commercial`, `mixed`                                                                                             | Zoning / permitted use of the land. Free text.    |
| `price`                  | number  |                                                                                                                                       | Asking or listed price.                           |
| `build_area`             | number  |                                                                                                                                       | Built area in sqm.                                |
| `land_area`              | number  |                                                                                                                                       | Land area in sqm.                                 |
| `basement_area`          | number  |                                                                                                                                       | Basement area in sqm.                             |
| `covered_veranda_area`   | number  |                                                                                                                                       | Covered veranda area in sqm.                      |
| `uncovered_veranda_area` | number  |                                                                                                                                       | Uncovered veranda area in sqm.                    |
| `construction_year`      | integer |                                                                                                                                       | Year the building was constructed.                |
| `renovated`              | boolean | `true`, `false`                                                                                                                       | Whether the property has been renovated.          |
| `renovation_year`        | integer |                                                                                                                                       | Year of the most recent renovation.               |
| `building_floor_count`   | integer |                                                                                                                                       | Total number of floors in the building.           |
| `floor_number`           | integer |                                                                                                                                       | Floor the property is on.                         |
| `number_of_bedrooms`     | integer |                                                                                                                                       | Number of bedrooms.                               |
| `number_of_bathrooms`    | integer |                                                                                                                                       | Number of bathrooms.                              |
| `parking_space`          | integer |                                                                                                                                       | Number of parking spaces.                         |
| `storage_space`          | integer |                                                                                                                                       | Number of storage spaces.                         |
| `heating_type`           | string  | e.g. `autonomous (Oil)`, `autonomous (Gas)`, `central (Oil)`, `central (Gas)`, `heatpump`, `Fireplace/Stove`                          | Type of heating system. Free text.                |
| `energy_class`           | string  | e.g. `A+`, `A`, `B+`, `B`, `C`, `D`, `E`, `F`, `G`                                                                                    | Energy performance rating. Free text.             |
| `condition`              | string  | e.g. `poor`, `fair`, `good`                                                                                                           | Overall condition of the property. Free text.     |
| `view`                   | string  | e.g. `poor`, `fair`, `good`                                                                                                           | Quality of the view from the property. Free text. |
| `garden`                 | boolean | `true`, `false`                                                                                                                       | Has a garden.                                     |
| `swimming_pool`          | boolean | `true`, `false`                                                                                                                       | Has a swimming pool.                              |
| `road_access`            | boolean | `true`, `false`                                                                                                                       | Has direct road access.                           |
| `percent_of_ownership`   | number  |                                                                                                                                       | Percentage of ownership held for this property.   |
| `building_coefficient`   | number  |                                                                                                                                       | Building coefficient for the plot.                |
| `coverage_ratio`         | number  |                                                                                                                                       | Coverage ratio for the plot.                      |

***

#### Cadastral details

<Note>
  `sheet_number`, `plan_number`, `parcel_block_number`, `parcel_number`,
  and `block_number` are **not** fields on this endpoint — per the backend
  schema, only the fields below are accepted here. Those other identifiers
  belong to a separate Cyprus cadastral-search lookup flow in the app, not
  to asset updates.
</Note>

| Field                 | Type   | Description                                                         |
| --------------------- | ------ | ------------------------------------------------------------------- |
| `parcel_id`           | string | Parcel identifier (max 30 characters).                              |
| `registration_number` | string | Cadastral registration number.                                      |
| `registration_block`  | string | Cadastral registration block.                                       |
| `registration_codes`  | array  | Array of `{ code, country }` objects. `code` is required per entry. |

***

## Example request

```bash theme={null}
curl -X PATCH "https://pandora.ask-wire.com/api/assets/4521/" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "price": 179000,
    "condition": "good",
    "renovated": true,
    "renovation_year": 2024
  }'
```

***

## Response

Returns the full, updated asset record. Verified against a live response — field set and shapes below are accurate as observed, not assumed.

```json theme={null}
{
  "id": 2023964,
  "ref_asset_id": "test apart gr",
  "municipality": { "id": 208, "name_en": "Thessaloniki" },
  "municipal_unit": { "id": 1293, "name_en": "Thessaloniki" },
  "marketability_report_id": 9074,
  "marketability_report_status": "draft",
  "marketability_report_task_id": 9012,
  "marketability_report_task_status": "in_progress",
  "adjusted_price_sqm": 3606.67027,
  "marketability_report_task_approved_at": null,
  "files": [],
  "sub_assets": [],
  "registration_codes": [],
  "deleted": false,
  "notes": null,
  "created_at": "2026-09-11T12:25:33.079474Z",
  "modified_at": "2026-09-15T16:41:13.613932Z",
  "listing_type": "sale",
  "title": null,
  "url": null,
  "images": null,
  "source": null,
  "eauction_code": null,
  "reference_id": "test apart gr",
  "price": "150000.0000",
  "sales_price": null,
  "auction_status": null,
  "auction_kind": null,
  "auction_notice_date": null,
  "auction_conduct_date": null,
  "address": "Melenikou Konstantinou Street 29, 546 35 Thessaloniki, Greece",
  "country": "greece",
  "client_id": "cln-ixSNPPuSA",
  "district": null,
  "zone_name": null,
  "latitude": 40.6339461,
  "longitude": 22.9543579,
  "property_type": "Apartment",
  "property_usage": null,
  "portfolio": null,
  "build_area": 38.0,
  "basement_area": null,
  "land_area": null,
  "covered_veranda_area": null,
  "uncovered_veranda_area": null,
  "construction_year": 1964,
  "renovated": true,
  "renovation_year": 2024,
  "price_per_sqm": null,
  "building_floor_count": null,
  "floor_number": 1,
  "parking_space": null,
  "has_parking_space": null,
  "storage_space": null,
  "garden": null,
  "heating_type": null,
  "cooling_type": null,
  "number_of_bedrooms": null,
  "number_of_bathrooms": null,
  "swimming_pool": null,
  "condition": null,
  "energy_class": null,
  "view": null,
  "right_of_ownership": null,
  "description": null,
  "seller": null,
  "listing_status": null,
  "marketability_report_reference": null,
  "owner": null,
  "auction": false,
  "road_access": false,
  "client_name": "Georgios Xydias",
  "share_on_sale": null,
  "overview": null,
  "coverage_ratio": null,
  "building_coefficient": null,
  "map_url": null,
  "registration_number": null,
  "registration_block": null,
  "parcel_id": null,
  "purpose": "property_management",
  "region": 2,
  "regional_unit": 32,
  "neighborhood": 1589
}
```

### Response fields

| Field                                                                                                                                                                                                   | Type            | Description                                                                                                                                        |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`                                                                                                                                                                                                    | integer         | Ask Wire asset ID.                                                                                                                                 |
| `ref_asset_id` / `reference_id`                                                                                                                                                                         | string          | Your external reference ID(s) for this asset.                                                                                                      |
| `municipality`, `municipal_unit`                                                                                                                                                                        | object \| null  | `{ id, name_en }`. Read-only — derived from `address` (or from `region`/`regional_unit`/`neighborhood` if set); not a field you can send directly. |
| `region`, `regional_unit`, `neighborhood`                                                                                                                                                               | integer \| null | Geographic hierarchy IDs. Writable — see Location fields above.                                                                                    |
| `sub_assets`                                                                                                                                                                                            | array           | Related sub-assets, managed via a separate endpoint, not this one.                                                                                 |
| `marketability_report_id`, `marketability_report_status`, `marketability_report_task_id`, `marketability_report_task_status`, `marketability_report_task_approved_at`, `marketability_report_reference` | various         | Linked valuation/marketability report state. Read-only.                                                                                            |
| `adjusted_price_sqm`                                                                                                                                                                                    | number \| null  | Computed price per sqm used in valuation.                                                                                                          |
| `files`                                                                                                                                                                                                 | array           | Attached documents. Managed via the asset files endpoints, not this one.                                                                           |
| `registration_codes`                                                                                                                                                                                    | array           | Array of `{ code, country }` objects.                                                                                                              |
| `deleted`                                                                                                                                                                                               | boolean         | Soft-delete flag.                                                                                                                                  |
| `notes`                                                                                                                                                                                                 | string \| null  | Internal notes. See warning above — cannot currently be set via PATCH.                                                                             |
| `created_at`, `modified_at`                                                                                                                                                                             | datetime        | Record timestamps.                                                                                                                                 |
| `listing_type`                                                                                                                                                                                          | string \| null  | e.g. `sale`.                                                                                                                                       |
| `title`, `url`, `images`, `source`, `eauction_code`                                                                                                                                                     | string \| null  | Metadata, mostly populated for auction/source-linked assets.                                                                                       |
| `price`, `sales_price`, `price_per_sqm`                                                                                                                                                                 | string \| null  | Monetary fields. **`price` is returned as a decimal string**, not a number.                                                                        |
| `auction`, `auction_status`, `auction_kind`, `auction_notice_date`, `auction_conduct_date`                                                                                                              | various         | Auction metadata, when applicable.                                                                                                                 |
| `address`, `country`, `district`, `zone_name`                                                                                                                                                           | string \| null  | Location fields. `district` is a plain string here, not an object.                                                                                 |
| `client_id`, `client_name`, `owner`, `seller`                                                                                                                                                           | string \| null  | Ownership / client attribution.                                                                                                                    |
| `latitude`, `longitude`                                                                                                                                                                                 | number \| null  | Coordinates.                                                                                                                                       |
| `property_type`, `property_usage`, `portfolio`, `purpose`                                                                                                                                               | string \| null  | Classification fields.                                                                                                                             |
| `build_area`, `land_area`, `basement_area`, `covered_veranda_area`, `uncovered_veranda_area`                                                                                                            | number \| null  | Areas in sqm.                                                                                                                                      |
| `construction_year`, `renovated`, `renovation_year`                                                                                                                                                     | various         | Construction details.                                                                                                                              |
| `building_floor_count`, `floor_number`                                                                                                                                                                  | integer \| null | Floor details.                                                                                                                                     |
| `parking_space`, `has_parking_space`, `storage_space`                                                                                                                                                   | various         | Parking / storage.                                                                                                                                 |
| `garden`, `swimming_pool`, `road_access`                                                                                                                                                                | boolean \| null | Amenity flags.                                                                                                                                     |
| `heating_type`, `cooling_type`, `energy_class`, `condition`, `view`, `right_of_ownership`                                                                                                               | string \| null  | Building/condition attributes.                                                                                                                     |
| `description`, `overview`, `map_url`                                                                                                                                                                    | string \| null  | Free-text and link fields.                                                                                                                         |
| `coverage_ratio`, `building_coefficient`                                                                                                                                                                | number \| null  | Plot ratios.                                                                                                                                       |
| `registration_number`, `registration_block`, `parcel_id`                                                                                                                                                | string \| null  | Cadastral identifiers.                                                                                                                             |
| `listing_status`, `share_on_sale`                                                                                                                                                                       | string \| null  | Listing state.                                                                                                                                     |


## OpenAPI

````yaml PATCH /api/assets/{id}/
openapi: 3.1.0
info:
  title: Properties API
  version: 1.0.0
  description: Public properties and foreclosure listings API
servers:
  - url: https://pandora.ask-wire.com
    description: Main API (Properties)
  - url: https://zeus.ask-wire.com
    description: Auth API
security:
  - bearerAuth: []
paths:
  /api/assets/{id}/:
    patch:
      summary: Update a property
      operationId: updateAsset
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInput'
      responses:
        '200':
          description: The updated property
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Asset'
        '404':
          description: Not found
components:
  schemas:
    AssetInput:
      type: object
      required:
        - property_type
      properties:
        portfolio:
          type: string
          nullable: true
        ref_asset_id:
          type: string
          nullable: true
        reference_id:
          type: string
          nullable: true
        notes:
          type: string
          nullable: true
          description: Must be valid HTML, e.g. <p>text</p>.
        address:
          type: string
          nullable: true
        latitude:
          type: number
          nullable: true
        longitude:
          type: number
          nullable: true
        district:
          type: string
          nullable: true
          description: Free-text district name.
        zone_name:
          type: string
          nullable: true
        country:
          type: string
          enum:
            - greece
            - cyprus
        region:
          type: integer
          nullable: true
        regional_unit:
          type: integer
          nullable: true
        neighborhood:
          type: integer
          nullable: true
        listing_type:
          type: string
          nullable: true
          enum:
            - rent
            - sale
            - sold
            - ''
        listing_status:
          type: string
          nullable: true
          enum:
            - active
            - inactive
            - ''
        property_type:
          type: string
          enum:
            - Apartment
            - House
            - Field
            - Plot
            - Warehouse
            - Shop
            - Office
            - Storage
            - Retail
            - Right to Build
            - Parking space
            - Other
        property_usage:
          type: string
          nullable: true
          description: Free text, not a server-enforced enum.
        price:
          type: string
          format: decimal
          nullable: true
        sales_price:
          type: string
          format: decimal
          nullable: true
        build_area:
          type: number
          nullable: true
        land_area:
          type: number
          nullable: true
        basement_area:
          type: number
          nullable: true
        covered_veranda_area:
          type: number
          nullable: true
        uncovered_veranda_area:
          type: number
          nullable: true
        construction_year:
          type: integer
          nullable: true
        renovated:
          type: boolean
          nullable: true
        renovation_year:
          type: integer
          nullable: true
        building_floor_count:
          type: integer
          nullable: true
        floor_number:
          type: integer
          nullable: true
        number_of_bedrooms:
          type: integer
          nullable: true
        number_of_bathrooms:
          type: integer
          nullable: true
        parking_space:
          type: integer
          nullable: true
        has_parking_space:
          type: boolean
          nullable: true
        storage_space:
          type: integer
          nullable: true
        heating_type:
          type: string
          nullable: true
          description: Free text, not a server-enforced enum.
        cooling_type:
          type: string
          nullable: true
        energy_class:
          type: string
          nullable: true
          description: Free text, not a server-enforced enum.
        condition:
          type: string
          nullable: true
          description: Free text, not a server-enforced enum.
        view:
          type: string
          nullable: true
          description: Free text, not a server-enforced enum.
        right_of_ownership:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        seller:
          type: string
          nullable: true
        owner:
          type: string
          nullable: true
        auction:
          type: boolean
        road_access:
          type: boolean
        garden:
          type: boolean
          nullable: true
        swimming_pool:
          type: boolean
          nullable: true
        building_coefficient:
          type: number
          nullable: true
        coverage_ratio:
          type: number
          nullable: true
        parcel_id:
          type: string
          nullable: true
          maxLength: 30
        registration_number:
          type: string
          nullable: true
        registration_block:
          type: string
          nullable: true
        registration_codes:
          type: array
          nullable: true
          items:
            type: object
            required:
              - code
            properties:
              code:
                type: string
                nullable: true
              country:
                type: string
                nullable: true
    Asset:
      type: object
      description: >-
        A manually managed property record, as returned by create, retrieve, and
        update. Verified against live responses.
      properties:
        id:
          type: integer
        ref_asset_id:
          type: string
          nullable: true
        reference_id:
          type: string
          nullable: true
        municipality:
          type: object
          nullable: true
          properties:
            id:
              type: integer
            name_en:
              type: string
        municipal_unit:
          type: object
          nullable: true
          properties:
            id:
              type: integer
            name_en:
              type: string
        region:
          type: integer
          nullable: true
        regional_unit:
          type: integer
          nullable: true
        neighborhood:
          type: integer
          nullable: true
        marketability_report_id:
          type: integer
          nullable: true
        marketability_report_status:
          type: string
          nullable: true
        marketability_report_task_id:
          type: integer
          nullable: true
        marketability_report_task_status:
          type: string
          nullable: true
        marketability_report_task_approved_at:
          type: string
          format: date-time
          nullable: true
        marketability_report_reference:
          type: string
          nullable: true
        adjusted_price_sqm:
          type: number
          nullable: true
        files:
          type: array
          items: {}
        sub_assets:
          type: array
          items: {}
        registration_codes:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                nullable: true
              country:
                type: string
                nullable: true
        deleted:
          type: boolean
        notes:
          type: string
          nullable: true
          description: HTML content.
        created_at:
          type: string
          format: date-time
        modified_at:
          type: string
          format: date-time
        listing_type:
          type: string
          nullable: true
          enum:
            - rent
            - sale
            - sold
            - ''
        title:
          type: string
          nullable: true
        url:
          type: string
          nullable: true
        images:
          type: string
          nullable: true
        source:
          type: string
          nullable: true
        eauction_code:
          type: string
          nullable: true
        price:
          type: string
          nullable: true
          description: Decimal string, e.g. "150000.0000".
        sales_price:
          type: string
          nullable: true
        price_per_sqm:
          type: string
          nullable: true
        auction:
          type: boolean
        auction_status:
          type: string
          nullable: true
        auction_kind:
          type: string
          nullable: true
        auction_notice_date:
          type: string
          format: date-time
          nullable: true
        auction_conduct_date:
          type: string
          format: date-time
          nullable: true
        address:
          type: string
          nullable: true
        country:
          type: string
          enum:
            - greece
            - cyprus
        district:
          type: string
          nullable: true
        zone_name:
          type: string
          nullable: true
        client_id:
          type: string
          nullable: true
        client_name:
          type: string
          nullable: true
        owner:
          type: string
          nullable: true
        seller:
          type: string
          nullable: true
        latitude:
          type: number
          nullable: true
        longitude:
          type: number
          nullable: true
        property_type:
          type: string
          nullable: true
          enum:
            - Apartment
            - House
            - Field
            - Plot
            - Warehouse
            - Shop
            - Office
            - Storage
            - Retail
            - Right to Build
            - Parking space
            - Other
        property_usage:
          type: string
          nullable: true
          enum:
            - residential
            - commercial
            - mixed
        portfolio:
          type: string
          nullable: true
        purpose:
          type: string
          nullable: true
        build_area:
          type: number
          nullable: true
        land_area:
          type: number
          nullable: true
        basement_area:
          type: number
          nullable: true
        covered_veranda_area:
          type: number
          nullable: true
        uncovered_veranda_area:
          type: number
          nullable: true
        construction_year:
          type: integer
          nullable: true
        renovated:
          type: boolean
          nullable: true
        renovation_year:
          type: integer
          nullable: true
        building_floor_count:
          type: integer
          nullable: true
        floor_number:
          type: integer
          nullable: true
        parking_space:
          type: integer
          nullable: true
        has_parking_space:
          type: boolean
          nullable: true
        storage_space:
          type: integer
          nullable: true
        garden:
          type: boolean
          nullable: true
        swimming_pool:
          type: boolean
          nullable: true
        road_access:
          type: boolean
          nullable: true
        heating_type:
          type: string
          nullable: true
        cooling_type:
          type: string
          nullable: true
        energy_class:
          type: string
          nullable: true
        condition:
          type: string
          nullable: true
        view:
          type: string
          nullable: true
        right_of_ownership:
          type: string
          nullable: true
        description:
          type: string
          nullable: true
        overview:
          type: string
          nullable: true
        map_url:
          type: string
          nullable: true
        coverage_ratio:
          type: number
          nullable: true
        building_coefficient:
          type: number
          nullable: true
        registration_number:
          type: string
          nullable: true
        registration_block:
          type: string
          nullable: true
        parcel_id:
          type: string
          nullable: true
        listing_status:
          type: string
          nullable: true
          enum:
            - active
            - inactive
            - ''
        share_on_sale:
          type: string
          nullable: true
        number_of_bedrooms:
          type: integer
          nullable: true
        number_of_bathrooms:
          type: integer
          nullable: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````