Archive, unarchive, or supersede a note on a contact.

Body shape

PATCH /api/v1/network/contacts/123/notes/456
If-Match: "AAAAAAAAK0Q="
Content-Type: application/json

{ "action": "archive" }
PATCH /api/v1/network/contacts/123/notes/456
If-Match: "AAAAAAAAK0Q="
Content-Type: application/json

{ "action": "unarchive" }
PATCH /api/v1/network/contacts/123/notes/456
If-Match: "AAAAAAAAK0Q="
Content-Type: application/json

{
  "action": "supersede",
  "supersede": { "message": "Updated wording — discussed with the asset team." }
}

Semantics

  • archive soft-hides the note; archivedAt is stamped. Idempotent: re-archiving an already-archived note is a no-op 204.
  • unarchive clears archivedAt. Fails (400) when the note has been superseded (caller must unarchive the head of the chain).
  • supersede expires the predecessor and creates a new revision pointing back at it via supersedesActivityId. Unset payload fields inherit from the predecessor.
  • When action == "archive" or "unarchive", any supersede payload is ignored (not an error).
  • When action == "supersede", the supersede object must be present.

Retry safety

These PATCH endpoints are not replay-cached by Idempotency-Key. Use the required If-Match header for retry safety. A concurrent revision makes the stale retry fail with 412 instead of mutating the wrong note version.

Path Parameters
  • id
    Type: string
    required

    Contact ID

  • noteId
    Type: string
    required

    Note ID (the action id returned by the actions endpoint)

Headers
  • If-Match
    Type: string

    Required ETag value from a previous GET response. Missing -> 428; mismatched -> 412.

Body·
required

Action discriminator + optional supersede payload

Body for PATCH /api/v1/network/{contacts|companies}/{id}/notes/{noteId}. Body-discriminated: action selects archive / unarchive / supersede; the supersede object carries the new-revision payload when applicable and is ignored for archive / unarchive.

  • action
    Type: string
    required

    Required verb. One of: archive, unarchive, supersede. Unknown values return 400 ValidationFailed.

  • supersede
    Type: object · nullable

    Required when action == "supersede"; ignored otherwise. Every field is a partial-update wrapper: omitted properties inherit from the predecessor, and explicit null clears the field.

Responses
  • 204

    Note mutated successfully

  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
  • application/problem+json
Request Example for patch/api/v1/network/contacts/{id}/notes/{noteId}
curl 'https://app.propstreet.com/api/v1/network/contacts/{id}/notes/{noteId}' \
  --request PATCH \
  --header 'If-Match: ' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --data '{
  "action": "",
  "supersede": {
    "message": null,
    "fileId": null,
    "contentFormat": null
  }
}'
No Body