PropertyMe · Arazzo Workflow

Connect a PropertyMe portfolio and run a change-since sync

Version 1.0.0

PropertyMe publishes no webhooks, so an integration keeps a portfolio current by polling the six change-since collections with an int64 Timestamp cursor. This workflow seeds the mirror from Timestamp 0 and reads the agency directory, then shows the clean disconnect. Every operation is scoped to the one customer portfolio the OAuth token was issued against.

2 workflows 4 source APIs 1 provider
View Spec View on GitHub Real-EstateAustraliaProperty ManagementRentalsPropTechTenancyTrust AccountingInspectionsMaintenanceDocumentsPaymentsNew ZealandArazzoWorkflows

Provider

propertyme

Workflows

connect-and-sync-portfolio
Seed a full read of a connected PropertyMe portfolio and advance the change cursor.
Requires contact:read, property:read and activity:read. Send Accept application/json on every call — it is a required parameter in the contract, not optional.
8 steps inputs: timestamp
1
read-agency
Read the agency's own contact record to confirm which portfolio the token is bound to.
2
read-members
Read the agency staff directory so job and inspection assignees can be resolved locally.
3
sync-contacts
Owners, tenants and suppliers changed since the cursor.
4
sync-lots
Properties (lots) changed since the cursor.
5
sync-tenancies
Tenancies. Note this collection takes no Timestamp — it returns the full set, filtered only by ContactId, LotId, HasOwnership and IncludeClosed.
6
sync-inspections
Inspections changed since the cursor.
7
sync-jobtasks
Maintenance work orders changed since the cursor, in the newer v2 shape.
8
sync-tasks
General property-management tasks changed since the cursor.
disconnect-portfolio
Sever the integration's connection to the customer's current portfolio.
Cannot be undone. The current access token is invalidated and the portfolio user must choose to reconnect. Run this on teardown or revocation only — never as error handling.
1 step

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Connect a PropertyMe portfolio and run a change-since sync
  version: 1.0.0
  description: >-
    PropertyMe publishes no webhooks, so an integration keeps a portfolio current by polling the six
    change-since collections with an int64 Timestamp cursor. This workflow seeds the mirror from
    Timestamp 0 and reads the agency directory, then shows the clean disconnect. Every operation is
    scoped to the one customer portfolio the OAuth token was issued against.
  x-realizes-capability-ids:
  - BC-4940.20
  x-capability-derivation:
    method: 'deterministic join: sourceDescriptions -> per-tag OpenAPI -> tag/capability edge. No classification at this step.'
    min_confidence: 0.7
    sources:
    - capability_id: BC-4940.20
      capability_name: Property Maintenance & Work Order Management
      spec: propertyme-scope-activities-api-openapi.yml
      confidence: 0.72
    model: Turbo EA Capabilities by Vincent Verdet — Turbo EA, https://github.com/vincentmakes/turbo-ea-capabilities, CC BY 4.0
sourceDescriptions:
- name: connectionApi
  url: ../openapi/propertyme-connection-api-openapi.yml
  type: openapi
- name: scopeActivitiesApi
  url: ../openapi/propertyme-scope-activities-api-openapi.yml
  type: openapi
- name: scopeContactsApi
  url: ../openapi/propertyme-scope-contacts-api-openapi.yml
  type: openapi
- name: scopePropertiesApi
  url: ../openapi/propertyme-scope-properties-api-openapi.yml
  type: openapi
workflows:
- workflowId: connect-and-sync-portfolio
  summary: Seed a full read of a connected PropertyMe portfolio and advance the change cursor.
  description: >-
    Requires contact:read, property:read and activity:read. Send Accept application/json on every
    call — it is a required parameter in the contract, not optional.
  inputs:
    type: object
    properties:
      timestamp:
        type: integer
        format: int64
        description: Change cursor. Use 0 to seed, then the highest observed changed timestamp.
        default: 0
    required: [timestamp]
  steps:
  - stepId: read-agency
    description: Read the agency's own contact record to confirm which portfolio the token is bound to.
    operationId: AgencyRequestcontactsagency_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    successCriteria:
    - condition: $statusCode == 200
  - stepId: read-members
    description: Read the agency staff directory so job and inspection assignees can be resolved locally.
    operationId: MembersRequestmembers_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-contacts
    description: Owners, tenants and suppliers changed since the cursor.
    operationId: ChangedContactsRequestcontacts_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    - name: Timestamp
      in: query
      value: $inputs.timestamp
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-lots
    description: Properties (lots) changed since the cursor.
    operationId: ChangedLotRequestlots_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    - name: Timestamp
      in: query
      value: $inputs.timestamp
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-tenancies
    description: >-
      Tenancies. Note this collection takes no Timestamp — it returns the full set, filtered only
      by ContactId, LotId, HasOwnership and IncludeClosed.
    operationId: TenancyRequesttenancies_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-inspections
    description: Inspections changed since the cursor.
    operationId: ChangedInspectionsRequestinspections_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    - name: Timestamp
      in: query
      value: $inputs.timestamp
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-jobtasks
    description: Maintenance work orders changed since the cursor, in the newer v2 shape.
    operationId: ChangedJobTaskV2Requestjobtasks_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    - name: Timestamp
      in: query
      value: $inputs.timestamp
    successCriteria:
    - condition: $statusCode == 200
  - stepId: sync-tasks
    description: General property-management tasks changed since the cursor.
    operationId: ChangedTasksRequesttasks_Get
    parameters:
    - name: Accept
      in: header
      value: application/json
    - name: Timestamp
      in: query
      value: $inputs.timestamp
    successCriteria:
    - condition: $statusCode == 200
- workflowId: disconnect-portfolio
  summary: Sever the integration's connection to the customer's current portfolio.
  description: >-
    Cannot be undone. The current access token is invalidated and the portfolio user must choose to
    reconnect. Run this on teardown or revocation only — never as error handling.
  steps:
  - stepId: disconnect
    operationId: DisconnectPortfolioRequestportfoliosdisconnect_Delete
    parameters:
    - name: Accept
      in: header
      value: application/json
    successCriteria:
    - condition: $statusCode == 200

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/propertyme-connect-and-sync"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.