Offer

An offer the investor has received from a broker, plus the investor's response state. Which optional fields are populated depends on the offer's status: pre-response offers expose only the anonymized teaser and response deadline; accepted offers additionally expose the broker's contact card and available capabilities.

  • id
    Type: string
    required

    Unique offer identifier.

  • status
    Type: string
    required

    Offer state: "unanswered", "accepted", "rejected", "expired", "removed", or "closed".

  • uri
    Type: string
    required

    Opaque canonical Propstreet entity URI for deep linking.

  • acceptedUtc
    Type: null | stringFormat: date-time

    When the investor accepted the teaser (UTC).

  • acceptMessage
    Type: null | string

    Free-form message the investor included with their acceptance.

  • broker
    Type: object · OfferBroker nullable

    Broker contact. Populated for accepted and established offers; null otherwise.

    • name
      Type: string
      required

      Broker's full display name.

    • companyName
      Type: null | string

      Broker's company name.

    • jobTitle
      Type: null | string

      Broker's job title.

  • capabilities
    Type: array string[]

    Capability flags indicating what actions are available for this offer. Possible values: chat (messaging with the broker is available).

  • communicatedUtc
    Type: null | stringFormat: date-time

    When the teaser was first delivered to the investor (UTC).

  • deadlineUtc
    Type: null | stringFormat: date-time

    Deadline for the investor to respond (UTC).

  • teaser
    Type: object · InvestorTeaser nullable

    Anonymized teaser content (asset mix, price/yield/area ranges, zoning, tags).

    • id
      Type: string
      required

      Stable teaser identifier.

    • avgContractLength
      Type: object · YearsRange nullable

      Average remaining contract length across tenants (years).

    • categories
      Type: array object[] · InvestorTeaserCategory[]

      Asset-category mix (e.g. office 70%, retail 30%).

      A single entry in the teaser's category mix.

    • conversions
      Type: array string[] | null

      Alternative use categories the broker suggests as viable for the property (e.g. office that could be converted to residential). Non-binding broker hints. Values: residential, office, retail, industrial, social_infrastructure, hotel, land, special_purpose.

    • country
      Type: null | string

      ISO 3166-1 alpha-2 country code.

    • investmentSize
      Type: object · PriceRange nullable

      Total investment size range (ticket size).

    • isPreMarket
      Type: null | boolean

      True when this teaser is pre-market.

    • leasableUnits
      Type: object · AreaRange nullable

      Leasable area range (sqm).

    • locality
      Type: null | string

      Locality (city / municipality).

    • noi
      Type: object · PriceRange nullable

      Net operating income range.

    • parcelArea
      Type: object · AreaRange nullable

      Parcel (land) area range (sqm).

    • propertyCount
      Type: object · UnitRange nullable

      Number of properties in the portfolio (range).

    • rentalIncome
      Type: object · PriceRange nullable

      Annualised rental income range.

    • rentedPercent
      Type: object · PercentRange nullable

      Occupied-space percentage range.

    • tags
      Type: array string[] | null

      Teaser tags applied by the broker (e.g. green_building, value_add, triple_net, long_leases, core_plus). See documentation for the full list.

    • tenure
      Type: null | string

      Property tenure: freehold or leasehold.

    • title
      Type: null | string

      Human-readable display title, composed from the teaser's asset categories and locality in the caller's UI language (e.g. "Industrial, Tullinge (SE)"). Safe to use as a row heading or link label when presenting the teaser. Null when categories and locality are both unknown.

    • totalCosts
      Type: object · PriceRange nullable

      Total operating costs range.

    • yearBuilt
      Type: object · YearRange nullable

      Range of year built across the portfolio.

    • yield
      Type: object · PercentRange nullable

      Gross yield range.

    • zoningCategories
      Type: array string[] | null

      Zoning categories (permitted uses). Values: residential, office, retail, industrial, social_infrastructure, hotel, land, special_purpose.

    • zoningGfa
      Type: object · AreaRange nullable

      Permitted gross floor area range (sqm).