Updates an existing project (partial update using PATCH semantics).
- Type: stringidrequired
Project ID
- Type: stringIf
- Match ETag value for optimistic concurrency control
Fields to update
Request model for updating a project.
- Type: object · nullableasset
Asset information for a project. Describes whether this is a single property or portfolio deal.
- Type: null | stringexclusivity
Sales exclusivity type: "exclusive", "non_exclusive", "other", or null to clear. Preferred field; mutually exclusive with the deprecated
mandatefield. - Type: array object[] ·external
Refs External references for CRM integration. Replaces all existing external refs. Set to empty array to remove all external refs.
Represents an external system reference (e.g., Salesforce, HubSpot, Pipedrive). Supports multiple CRM systems simultaneously.
- Type: null | stringmandatedeprecated
Deprecated alias for
exclusivity. Sending bothmandateandexclusivitywith non-null values is rejected with 422. Will be removed in a future minor version. - Type: null | stringname
Project name. Cannot be empty if provided.
- Type: object · nullableprice
Price as a single
value, with currency and scale. - Type: object · nullableprice
Range Price as a
min/maxrange, with currency and scale.
- application/json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
- application/problem+json
curl 'https://app.propstreet.com/api/v1/projects/{id}' \
--request PATCH \
--header 'If-Match: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": null,
"asset": {
"type": "",
"propertyCount": ""
},
"externalRefs": [
{
"namespace": "",
"id": ""
}
],
"exclusivity": null,
"price": {
"value": 0,
"currency": "",
"scale": ""
},
"priceRange": {
"min": 0,
"max": 0,
"currency": "",
"scale": ""
}
}'
{
"id": "string",
"uri": null,
"externalRefs": [
{
"namespace": "string",
"id": "string"
}
],
"name": "string",
"asset": {
"type": "string",
"propertyCount": "string"
},
"status": "string",
"classification": null,
"teaser": {
"id": "string",
"uri": null,
"createdUtc": "2026-05-18T20:22:36.959Z",
"updatedUtc": "2026-05-18T20:22:36.959Z",
"etag": "string",
"changeType": null,
"changeOrigin": null,
"stage": null,
"publishedUtc": null,
"verifiedUtc": null,
"communicatedUtc": null,
"isPreMarket": null,
"exclusivity": null,
"title": null,
"tags": [
"string"
],
"options": {
"locality": {
"display": "actual"
},
"country": {
"display": "actual"
},
"tenure": {
"display": "actual"
},
"categories": {
"display": "actual"
},
"parcelArea": {
"display": "actual"
},
"avgContractLength": {
"display": "actual"
},
"leasableUnits": {
"display": "actual"
},
"zoningCategory": {
"display": "actual"
},
"zoningGfa": {
"display": "actual"
},
"rentalIncome": {
"display": "actual"
},
"investmentSize": {
"display": "actual"
},
"rentedPercent": {
"display": "actual"
},
"totalCosts": {
"display": "actual"
},
"noi": {
"display": "actual"
},
"yield": {
"display": "actual"
},
"propertyCount": {
"display": "actual"
},
"conversions": {
"display": "actual"
},
"yearBuilt": {
"display": "actual"
},
"locationClasses": {
"display": "actual"
}
},
"template": {
"locality": {
"allowedDisplays": [
"actual"
]
},
"country": {
"allowedDisplays": [
"actual"
]
},
"tenure": {
"allowedDisplays": [
"actual"
]
},
"categories": {
"allowedDisplays": [
"actual"
]
},
"parcelArea": {
"allowedDisplays": [
"actual"
]
},
"avgContractLength": {
"allowedDisplays": [
"actual"
]
},
"leasableUnits": {
"allowedDisplays": [
"actual"
]
},
"zoningCategory": {
"allowedDisplays": [
"actual"
]
},
"zoningGfa": {
"allowedDisplays": [
"actual"
]
},
"rentalIncome": {
"allowedDisplays": [
"actual"
]
},
"investmentSize": {
"allowedDisplays": [
"actual"
]
},
"rentedPercent": {
"allowedDisplays": [
"actual"
]
},
"totalCosts": {
"allowedDisplays": [
"actual"
]
},
"noi": {
"allowedDisplays": [
"actual"
]
},
"yield": {
"allowedDisplays": [
"actual"
]
},
"propertyCount": {
"allowedDisplays": [
"actual"
]
},
"conversions": {
"allowedDisplays": [
"actual"
]
},
"yearBuilt": {
"allowedDisplays": [
"actual"
]
},
"locationClasses": {
"allowedDisplays": [
"actual"
]
},
"tags": [
"string"
]
},
"projection": {
"locality": null,
"country": null,
"categories": [
{
"type": "string",
"locationClass": null,
"percentage": "string"
}
],
"yearBuilt": {
"value": "string",
"min": "string",
"max": "string"
},
"tenure": null,
"conversions": [
"string"
],
"rentalIncome": {
"value": 0,
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"leasableUnits": {
"value": 0,
"min": 0,
"max": 0
},
"rentedPercent": {
"value": "string",
"min": "string",
"max": "string"
},
"totalCosts": {
"value": 0,
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"noi": {
"value": 0,
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"parcelArea": {
"value": 0,
"min": 0,
"max": 0
},
"avgContractLength": {
"value": 0,
"min": 0,
"max": 0
},
"yield": {
"value": "string",
"min": "string",
"max": "string"
},
"zoningCategories": [
"string"
],
"zoningGfa": {
"value": 0,
"min": 0,
"max": 0
},
"investmentSize": {
"value": 0,
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"propertyCount": {
"value": 0,
"min": 0,
"max": 0
}
},
"nudge": {
"code": "string",
"message": "string",
"navigateUri": null
},
"navigateUri": null
},
"exclusivity": null,
"price": {
"value": 0,
"currency": "string",
"scale": "string"
},
"priceRange": {
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"properties": [
{
"id": "string",
"uri": null,
"name": "string"
}
],
"transactions": [
{
"type": "string",
"closedUtc": "2026-05-18T20:22:36.959Z",
"price": {
"value": 0,
"min": 0,
"max": 0,
"currency": "string",
"scale": "string"
},
"yield": {
"value": "string",
"min": "string",
"max": "string"
},
"buyer": {
"type": null,
"name": null,
"prospectId": null
},
"seller": {
"type": null,
"name": null,
"prospectId": null
}
}
],
"createdUtc": "2026-05-18T20:22:36.959Z",
"updatedUtc": "2026-05-18T20:22:36.959Z",
"deletedUtc": null,
"etag": "string",
"changeType": null,
"changeOrigin": null
}