Project
A real estate transaction project.
- assetType: objectrequired
Asset information: single property or portfolio with property count.
- typeType: stringrequired
Asset type: "single" for single property, "portfolio" for multiple properties.
- propertyType: null | integer | string
Count Pattern: ^-?(?:0|[1-9]\d*)$Format: int32Number of properties in the portfolio. Only present when type is "portfolio".
- createdType: stringFormat: date-time
Utc requiredCreation timestamp (UTC).
- etagType: stringrequired
ETag for concurrency control.
- idType: stringrequired
Project ID.
- nameType: stringrequired
Project name.
- statusType: stringrequired
Project lifecycle status: open, closed, deleted.
- updatedType: stringFormat: date-time
Utc requiredLast update timestamp (UTC).
- changeType: null | string
Origin Origin channel that triggered this change. Informational only; treat as an opaque value.
- changeType: null | string
Type Type of change that produced this version: "create", "update", or "delete"
- classificationType: null | string
Project classification (work stage): draft, active, inactive. Defaults to "draft" when no explicit classification has been set.
- deletedType: null | stringFormat: date-time
Utc Deletion timestamp (UTC) if the resource has been deleted.
- exclusivityType: null | string
Sales exclusivity type: "exclusive", "non_exclusive", "other", or null if not set. Replaces the deprecated
mandatefield; both are populated with the same value on read responses for the duration of the deprecation window. - externalType: array object[] · ExternalRef[]
Refs External references for CRM integration (e.g., Salesforce, HubSpot).
Represents an external system reference (e.g., Salesforce, HubSpot, Pipedrive). Supports multiple CRM systems simultaneously.
- idType: stringmax length:255required
External identifier within the namespace (e.g., "003XXXXXXXXXXXX" for Salesforce). Case-sensitive. Format depends on the external system.
- namespaceType: stringmax length:50required
External system namespace (e.g., "salesforce", "hubspot", "pipedrive", "csv-import"). Case-insensitive.
- mandateType: null | stringdeprecated
Deprecated alias for
exclusivity. Populated with the same value on read responses. Will be removed in a future minor version — migrate toexclusivity. - priceType: object · Price nullable
Asking price / price expectation for the deal (single value). Pair with
priceRangewhen an indicative band is also needed; the range, if set, must contain this value.- currencyType: stringmin length:3max length:3required
ISO 4217 currency code (e.g., "SEK", "EUR", "USD").
- valueType: number | string
Pattern: ^-?(?:0|[1-9]\d*)(?:\.\d+)?$Format: doublemin:0requiredPrice value. Multiply by scale factor to get actual amount. Example: value=1500 with scale="millions" = 1.5 billion.
- scaleType: string
Scale factor for the value: "none" (1), "thousands" (1,000), "millions" (1,000,000), "billions" (1,000,000,000). Default is "none" if not specified on input.
- priceType: object · PriceRange nullable
Range Custom price range (min/max override for display purposes). When set, must contain the
pricevalue.- currencyType: stringmin length:3max length:3required
ISO 4217 currency code (e.g., "EUR", "SEK", "USD").
- maxType: null | number | string
Pattern: ^-?(?:0|[1-9]\d*)(?:\.\d+)?$Format: doublemin:0Maximum price. Multiply by scale factor to get actual amount. Example: max=200 with scale="millions" = 200 million. Omit for an open-ended lower-bounded range.
- minType: null | number | string
Pattern: ^-?(?:0|[1-9]\d*)(?:\.\d+)?$Format: doublemin:0Minimum price. Multiply by scale factor to get actual amount. Example: min=100 with scale="millions" = 100 million. Omit for an open-ended upper-bounded range.
- scaleType: string
Scale factor for the values: "none" (1), "thousands" (1,000), "millions" (1,000,000), "billions" (1,000,000,000). Default is "none" if not specified on input.
- propertiesType: array object[] | null · ProjectPropertyRef[]
Linked properties. Currently contains at most one property.
Reference to a linked property.
- idType: stringrequired
Property ID.
- nameType: stringrequired
Property name.
- uriType: null | string
Opaque canonical Propstreet entity URI for deep linking.
- teaserType: object · Teaser nullable
Teaser information including workflow stage and timestamps. Null if teaser workflow has not started.
- createdType: stringFormat: date-time
Utc requiredCreation timestamp (UTC).
- etagType: stringrequired
ETag for concurrency control. Send back in
If-Matchon PATCH. - idType: stringrequired
Teaser ID. Opaque string. Stable across reads — clients should treat the value as opaque (do not parse).
- updatedType: stringFormat: date-time
Utc requiredLast update timestamp (UTC).
- changeType: null | string
Origin Origin of the change:
api,mcp,ui, orsystem. Returned only on write responses; null on GET. - changeType: null | string
Type Type of change that produced this version:
create,update, ordelete. Returned only on write responses; null on GET. - communicatedType: null | stringFormat: date-time
Utc When the teaser was first communicated to prospects (UTC). Null if not yet communicated.
- exclusivityType: null | string
Project sales exclusivity:
exclusive,non_exclusive, orother. Mirrored from the parent project (null on property / room contexts). Aligned with the project resource'sexclusivityfield. - isType: null | boolean
Pre Market True when the teaser is pre-market (investor-initiated portfolio teaser, before a project exists).
- navigateType: null | string
Uri Propstreet app deeplink in the
propstreet://URI scheme. Opaque to integrators; used by first-party clients (Propstreet app, Propstreet agent) for in-app navigation. - nudgeType: object · TeaserNudge nullable
Optional steerable hint when a prerequisite is missing or the current state blocks the obvious next move. Carries a stable
codealongside the human-readablemessage— branch on the code. - optionsType: object · TeaserOptions nullable
Author-curated visibility matrix for each teaser field. The author is whoever owns the parent — broker on project / room, investor on property pre-market. Drives what third-party investors see in the projection.
- projectionType: object · TeaserProjection nullable
Third-party investor projection — what investors actually see in the prospect feed and shortlist views, rendered from the stored fields after applying the author's visibility matrix. Hidden fields are absent (not
null) so the JSON shape mirrors the investor view. - publishedType: null | stringFormat: date-time
Utc When the teaser was published (UTC). Null if not yet published.
- stageType: null | string
Teaser workflow stage:
property_added,drafting,published,verified,communicated. Null if the teaser workflow has not started. - tagsType: array string[] | null
Snapshot of tags visible on this teaser — the exact set the author chose to disclose to investors at write time. Stored verbatim and rendered verbatim; never resolved against the property's current pool. Subsequent property-tag edits do not change what investors see on this teaser; the author writes a new teaser to pick them up. Omitted on thin steerable envelopes (e.g., when
nudge.codeisno_property_attached,no_pre_market_yet, ortransferred_to_other_broker). - templateType: object · TeaserTemplate nullable
What the author is allowed to choose for each option, given the active billing plan, the underlying property data, and the parent context (project / property pre-market / room).
- titleType: null | string
Author-side display title (the teaser title as seen by whoever owns the parent — broker on project / room, investor on property pre- market). Composed from categories and locality at read time; never stored. Null when both categories and locality are unknown.
- uriType: null | string
Opaque canonical Propstreet entity URI for deep linking.
- verifiedType: null | stringFormat: date-time
Utc When the teaser was verified (UTC). Null if not yet verified.
- transactionsType: array object[] | null · Transaction[]
Completed transactions (populated when status="closed").
Transaction record for a closed deal.
- closedType: stringFormat: date-time
Utc requiredWhen the deal closed (ISO 8601 UTC).
- typeType: stringrequired
Transaction type: "sell" (future: "buy").
- buyerType: object · TransactionParty nullable
Buyer details (populated for sell transactions).
- priceType: object · PriceOrRange nullable
Transaction price as a single
value, amin/maxrange, or both. - sellerType: object · TransactionParty nullable
Seller details (populated for buy transactions).
- yieldType: object · PercentOrRange nullable
Yield at transaction as a single
value, amin/maxrange, or both. Values are in percentage form (e.g., 5.0 = 5%).
- uriType: null | string
Opaque canonical Propstreet entity URI for deep linking.