Skip to content

PyPropertyMe

A Python API wrapper for the PropertyMe API - Australian property management platform.

Features

  • Full Async Python Client - Modern async/await API for PropertyMe's REST API
  • OAuth 2.0 Authentication - Automatic token refresh and secure credential storage
  • Type Safety - Pydantic models for validation and IDE autocompletion
  • Simple CLI - Quick data exports with JSON output for automation
  • Sync Modules - Optional Airtable and MongoDB sync for custom integrations
  • Auto-generated - Client code generated from OpenAPI specification using Microsoft Kiota

Quick Start

Installation

# Basic installation
uv add pypropertyme

# With CLI support
uv add pypropertyme[cli]

Authentication

# Run once to authenticate
pypropertyme auth

This opens a browser for OAuth login. Tokens are stored securely in ~/.pypropertyme/tokens.json.

CLI Usage

# List all contacts (JSON to stdout)
pypropertyme contacts

# Get a single property by ID
pypropertyme properties --id 00000000-0000-0000-0000-000000000000

# Save to file
pypropertyme contacts -o contacts.json

# Filter properties
pypropertyme properties --type rentals

Programmatic Usage

import asyncio
from pypropertyme.client import Client

async def main():
    # Load your OAuth token
    token = {...}  # Your OAuth token dict

    # Create the client
    client = Client.get_client(token)

    # Fetch all contacts
    contacts = await client.contacts.all()

    # Fetch a single property by ID
    property_detail = await client.properties.get("property-id")

asyncio.run(main())

Supported Entities

Entity List Get by ID Description
Contacts client.contacts.all() client.contacts.get(id) Owners, tenants, suppliers
Properties client.properties.all() client.properties.get(id) Managed properties
Tenancies client.tenancies.all() - Rental agreements
Tenancy Balances client.tenancy_balances.all() client.tenancy_balances.get(id) Financial balance data
Members client.members.all() - Agency staff
Tasks client.tasks.all() client.tasks.get(id) Workflow tasks
Inspections client.inspections.all() client.inspections.get(id) Property inspections
Jobs client.jobs.all() client.jobs.get(id) Maintenance jobs

Sync Modules

PyPropertyMe includes optional sync modules for external integrations:

  • Airtable Sync - Sync to Airtable for custom views and reporting
  • MongoDB Sync - Sync to MongoDB for analytics and AI/ML pipelines

API Limitations

Read-Only Access

This library currently supports GET endpoints only. Write operations (POST/PUT/DELETE) require additional API scopes that are not typically available.

The following are not retrievable via the API:

  • Documents and attachments (POST-only endpoints)
  • Comments (POST-only endpoints)
  • Bills (POST-only endpoint)

Next Steps