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¶
- Getting Started - Detailed installation and setup
- CLI Reference - Complete CLI command reference
- API Usage Guide - Programmatic API patterns
- Entity Relationships - How PropertyMe entities relate