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

# UPDATE Property

> Updates a single Property by id. Omitted fields are left unchanged.

**Required capabilities:** `WRITE:PROPERTY`



## OpenAPI

````yaml /api-reference/openapi.json patch /rest/v2/accounts/{accountId}/properties/{propertyId}
openapi: 3.1.0
info:
  title: Prophia API Documentation
  license:
    name: Apache 2.0
    url: http://springdoc.org
  version: v2.495.0
servers:
  - url: https://api.prophia.com
    description: Prophia API
security:
  - apiKey: []
tags:
  - name: Accounts
    description: >-
      Accounts are the top-level scope for everything in the API. Start here:
      list your accounts to find the `accountId` every other path requires.
  - name: Properties
    description: >-
      Properties group one or more buildings under a single asset within an
      account.
  - name: Buildings
    description: Buildings are the physical structures where leases and spaces live.
  - name: Building Spaces
    description: >-
      Building spaces are the units inside a building — suites, floors, storage.
      A space's `suiteNumber` is the canonical name that tag `applicableSpaces`
      entries reference by string match.
  - name: Leases
    description: >-
      Leases are the agreements occupying building spaces. Each lease carries
      its source documents and the tags (structured terms) extracted from them.
  - name: Documents
    description: >-
      Documents are the source files attached to leases — original leases,
      amendments, memorandums, etc.
  - name: Tags
    description: >-
      Tags are the structured lease terms Prophia extracts from documents — a
      rent amount, a renewal option, a key date — each cited to its location in
      the source document. STANDARD tags carry a typed `value`; COMPLEX tags
      carry option details in `tagComponents`.
  - name: Custom Terms
    description: >-
      Custom terms are account-level definitions of extra lease terms your team
      tracks beyond Prophia's standard set. Tags created from them are ordinary
      tags with `isCustomTag: true` — the definition and its tag instances are
      separate resources.
  - name: Custom Fields
    description: >-
      Custom Fields are Account-level fields your team tracks on Buildings
      beyond Prophia's standard set. A `SINGLE` field holds free text per
      Building; a `MULTI` field holds one of a fixed list of options.
      Assignments set a field's value on a Building.
  - name: Loans
    description: >-
      Loans are the financing agreements secured by an account's buildings. Each
      loan carries its source documents and the terms read from them: summary
      terms, covenants and reporting deliverables. Loans is a Labs feature in
      beta, and its endpoints may change.
    x-beta: true
paths:
  /rest/v2/accounts/{accountId}/properties/{propertyId}:
    patch:
      tags:
        - Properties
      summary: UPDATE Property
      description: |-
        Updates a single Property by id. Omitted fields are left unchanged.

        **Required capabilities:** `WRITE:PROPERTY`
      operationId: updateProperty
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: string
        - name: propertyId
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/V2UpdatePropertyRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/V2PropertyModel'
        '400':
          description: Invalid input — request body failed validation or business rules
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Invalid Input
                errorCode: InvalidInput
                message: dba cannot be blank
                status: 400 BAD_REQUEST
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: dba cannot be blank
        '401':
          description: >-
            The credential was rejected before the request reached the endpoint
            — for example a JWT was presented where an API key is required. Only
            `error` is populated on this path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: JWT authentication is not supported. Use an API key.
        '403':
          description: >-
            The API key is valid but lacks a required capability or role, the
            account does not have the REST write module enabled, or the key's
            building permissions do not cover the requested resource. The
            message names the missing capabilities only in the first case
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Access Denied
                errorCode: AccessDenied
                message: 'Not authorized. Missing capabilities: WRITE:DOCUMENT'
                status: 403 FORBIDDEN
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: 'Not authorized. Missing capabilities: WRITE:DOCUMENT'
        '404':
          description: No such resource is visible to the account named in the path
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/V2ErrorResponse'
              example:
                error: Entity Not Found
                errorCode: EntityNotFound
                message: This entity is not found in the system.
                status: 404 NOT_FOUND
                timestamp: '2026-09-02T20:41:03.118Z'
                localizedMessage: This entity is not found in the system.
components:
  schemas:
    V2UpdatePropertyRequest:
      type: object
      description: >-
        Fields to change on a Property. Every field is optional; omit one to
        leave it as it is.
      properties:
        propertyName:
          type: string
          description: >-
            New display name. Must be unique within the Account, compared
            without regard to case. Renaming does not affect the Property's
            Buildings or their names.
        customId:
          type: string
          description: >-
            Your custom external identifier for the Property, for
            cross-referencing with your own systems. This value is purely for
            external reference and is unused in Prophia's system.
    V2PropertyModel:
      type: object
      description: >-
        Representation of a Property — the asset grouping directly beneath an
        Account. A Property holds one or more Buildings; a single Building is
        the common case, and several Buildings under one Property represent a
        campus or other multi-building asset. Leases, Building Spaces, and Tags
        hang off the Buildings rather than the Property itself.
      properties:
        id:
          type: string
          description: Prophia internal Property ID (UUID)
          readOnly: true
        propertyName:
          type: string
          description: >-
            Display name of the property. Must be unique within the Account,
            compared without regard to case.
        customId:
          type: string
          description: >-
            Your external identifier for the property, for cross-referencing
            with your own systems. Prophia does not rely on this value in any
            way.
        buildings:
          type: array
          description: >-
            Buildings in this Property; only populated when `include=buildings`
            is present as a request parameter. Limited to the Buildings your api
            key is permitted to access.
          items:
            $ref: '#/components/schemas/V2BuildingModelEmbedded'
        documents:
          type: array
          description: >-
            Documents filed against the Property itself rather than against any
            of its Leases; only populated when `include=documents` is present as
            a request parameter.
          items:
            $ref: '#/components/schemas/V2LeaseDocModel'
          readOnly: true
    V2ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Stable error category
          example: Invalid Input
        errorCode:
          type: string
          description: Stable error code suitable for programmatic handling
          example: InvalidInput
        message:
          type: string
          description: Human-readable detail; may aggregate multiple field errors
        status:
          type: string
          description: >-
            HTTP status of the response as code and reason phrase, matching the
            response's own status line
          example: 404 NOT_FOUND
        timestamp:
          type: string
          format: date-time
          description: When the error was produced, as an ISO-8601 UTC instant
          example: '2026-09-02T20:41:03.118Z'
        localizedMessage:
          type: string
          description: >-
            Same text as `message`; present because the body is a serialized
            exception. Prefer `message`
    V2BuildingModelEmbedded:
      type: object
      description: >-
        V2BuildingModel as embedded in a parent response. This position omits
        leases, documents, spaces. The `include` parameter is one level deep, so
        they are never populated in this position — fetch the resource directly
        to request them.
      properties:
        id:
          type: string
          description: Prophia internal Building ID (UUID)
          readOnly: true
        propertyId:
          type: string
          description: Pointer to the Property this Building is associated with.
          readOnly: true
        buildingName:
          type: string
          description: >-
            Display name of the building. Must be unique within the same
            Property. Can be duplicated with other Buildings in the Account
            (i.e. Two Properties in the Account can have a Building called
            'Building 1').
        address:
          $ref: '#/components/schemas/Address'
          description: Street address of the building.
        onboardingStatus:
          type: string
          description: >-
            How far this building has progressed through Prophia's onboarding
            process. Leases, BuildingSpaces, and Tags are considered incomplete
            until onboarding completes for the Building.
          enum:
            - NOT_STARTED
            - INITIAL_SETUP
            - ONBOARDING_IN_PROGRESS
            - ONBOARDING_COMPLETE
          readOnly: true
        activeStatus:
          type: string
          description: >-
            Operational state of the building record. An ACTIVE status indicates
            that the building has been fully onboarded and handed off by the
            Prophia team. An INACTIVE status indicates a Building that will no
            longer receive updates to its data and is essentially a purely
            historical representation of the asset. Other statuses show the
            Building moving through the systems automated processing states and
            review points.
          enum:
            - ACTIVE
            - INACTIVE
            - WORK_IN_PROGRESS
            - QA_PENDING
            - AI_PROCESSED
          readOnly: true
        customId:
          type: string
          description: >-
            Your external identifier for the building, for cross-referencing
            with your own systems. Prophia does not rely on this value in any
            way.
        implementationManager:
          type: string
          description: >-
            Prophia implementation manager responsible for onboarding and
            reviewing the data in this Building. This is not the account
            manager.
          readOnly: true
        buildingType:
          type: string
          description: >-
            The Asset type for the Building. This is a subjective reference
            value only, is not validated, and does not affect data onboarding.
          enum:
            - OFFICE
            - INDUSTRIAL
            - RETAIL
            - MIXED_USE
            - OTHER
            - LIFE_SCIENCES
            - MEDICAL_OFFICE
            - FLEX
        buildingClass:
          type: string
          description: >-
            Market classification of the building (e.g. A, B, C). This is a
            subjective reference value only, is not validated, and does not
            affect data onboarding.
        metroArea:
          type: string
          description: >-
            Metro market the building belongs to (e.g. Seattle Metropolitan
            Area. This is a subjective reference value only, is not validated,
            and does not affect data onboarding.
        lat:
          type: number
          description: >-
            Latitude in decimal degrees. Derived automatically from the address
            when the building is created and re-geocoded whenever the address is
            changed; coordinates cannot be supplied directly. A geocode that
            fails or returns no match leaves the previously stored coordinates
            in place, so lat/lng may reflect an earlier address; a building
            whose address has never geocoded successfully has no coordinates at
            all.
          readOnly: true
        lng:
          type: number
          description: >-
            Longitude in decimal degrees. Derived alongside lat from the same
            geocode, and subject to the same staleness caveat.
          readOnly: true
        propertyType:
          type: string
          description: Whether the parent property holds a single building or multiple.
          enum:
            - MULTI_BUILDING
            - SINGLE_BUILDING
          readOnly: true
        totalRentableSquareFootage:
          type: integer
          format: int32
          description: >-
            Cached total rentable square footage from the last stacking-plan
            build; may lag current values while leases are in onboarding. Use
            the stacking plan for point-in-time occupancy.
          readOnly: true
        squareFootageLeased:
          type: integer
          format: int32
          description: >-
            Cached leased square footage from the last stacking-plan build; may
            lag current values while leases are in onboarding. For a Building
            Space to count towards leased square footage it must have either an
            active/commenced lease or a lease with a future commencement date
            referencing that space. Use the stacking plan for point-in-time
            occupancy.
          readOnly: true
        squareFootageOccupied:
          type: integer
          format: int32
          description: >-
            Cached occupied square footage from the last stacking-plan build;
            may lag current values while leases are in onboarding. For a
            Building Space to count towards occupied square footage it must have
            an active/commenced lease referencing that space.Use the stacking
            plan for point-in-time occupancy.
          readOnly: true
        squareFootageVacant:
          type: integer
          format: int32
          description: >-
            Cached vacant square footage from the last stacking-plan build; may
            lag current values while leases are in onboarding. For a Building
            Space to count towards vacant square footage, it can't have any
            active/commenced lease referencing that space.Use the stacking plan
            for point-in-time occupancy.
          readOnly: true
        customFields:
          type: array
          description: >-
            The Building's values for its active Building Custom Fields as
            name/value pairs, sorted by field name; only populated when
            `include=customFields` is present as a request parameter. Manage the
            fields and assignments themselves through the Custom Fields
            endpoints.
          items:
            $ref: '#/components/schemas/V2BuildingCustomFieldModel'
          readOnly: true
    V2LeaseDocModel:
      type: object
      description: >-
        Representation of a Lease Document. Each Document belongs to one Lease
        and cannot be duplicated within a single Lease.
      properties:
        id:
          type: string
          description: Prophia internal Document ID (UUID).
          readOnly: true
        filename:
          type: string
          description: >-
            Name of the document from your file system. This can not be
            duplicated for multiple files in the same Lease.
        title:
          type: string
          description: Display title; defaults to the filename when not set.
        numberOfPages:
          type: integer
          format: int32
          description: 1-based count of pages in the Document.
          readOnly: true
        docCategory:
          type: string
          description: >-
            Document classification. Certain Document categories may determine
            which Tags and in-app features the Document is included in. If left
            blank, Prophia's AI will inspect the Document and set it
            accordingly, with a human review to follow. The AI will not
            overwrite an existing category if one is already set.
          enum:
            - Main Lease Agreement
            - Extension - Amendment
            - Expansion - Amendment
            - Contraction - Amendment
            - Move - Amendment
            - Correction - Amendment
            - New Rights - Amendment
            - Other - Amendment
            - Commencement Letter
            - Work Letter
            - Lease Abstract
            - Stacking Plan
            - Floorplan
            - Site Plan
            - Letter of Credit
            - Letter of Intent
            - Certificate of Insurance
            - Notices
            - Termination Notices
            - Assignment and Assumption Agreement
            - Telecom/Antenna Agreement
            - Storage Agreement
            - Other
            - Sublease Agreement
            - Consent to Sublease
            - Parking Agreement
            - Licensing Agreement
            - Guaranty
            - Estoppel
            - Management Office Agreement
            - Loan Agreement
            - Letter Agreement
            - JV Agreement
            - Closing Document
            - Purchase & Sale Agreement
            - Management Agreement
            - Brokerage Listing Agreement
            - Real Estate Tax Bills
            - Capital Projects
            - Service Agreement
            - Subordination, Non-Disturbance and Attornment Agreement
            - Ground Lease
            - Memorandum of Lease
            - Rent Roll
        createdAt:
          type: string
          format: date-time
          description: When the Document was uploaded to Prophia.
          readOnly: true
        documentStatus:
          type: string
          description: >-
            Processing state: `processing` while the document is in Prophia's AI
            ingestion pipeline, then `incomplete` followed by any account
            specific statuses (defined by/through our operations team) and
            ultimately `complete` when the Document has been fully processed. To
            understand how this plays into the broader onboarding state of the
            Lease and Building see our understanding onboarding conceptual
            guide.
          readOnly: true
        splitStatus:
          type: string
          description: >-
            Whether this Document was split into parts. `single` is an ordinary
            Document, `combined` is an original that was split (its data lives
            on its parts), and `split` is a part cut from an original.
          enum:
            - single
            - combined
            - split
          readOnly: true
        originalDocId:
          type: string
          description: >-
            For a part (`splitStatus` = `split`), the ID of the original
            Document it was cut from. Omitted otherwise.
          readOnly: true
    Address:
      type: object
      properties:
        address1:
          type: string
        address2:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
        zipcode:
          type: string
    V2BuildingCustomFieldModel:
      type: object
      description: >-
        A Building's value for one of the Account's active Building Custom
        Fields.
      properties:
        name:
          type: string
          description: The Custom Field's name.
          readOnly: true
        value:
          type: string
          description: The Building's value for the field.
          readOnly: true
  securitySchemes:
    apiKey:
      type: apiKey
      description: >-
        Prophia API key — either an account key (grants admin level permissions)
        or a user key with the REST scope. Send it in the `X-API-Key` header, or
        equivalently as `Authorization: Bearer <api-key>`. JWTs are rejected on
        /rest endpoints with 401.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.