How do I use the V4 Maintenance API to manage maintenance jobs?
The V4 Maintenance API covers the complete maintenance lifecycle — creating and tracking jobs, assigning contractors, processing invoices, and managing documents. All endpoints are at https://live-api.letmc.com/v4/maintenance/.
Complete maintenance job workflow
- Get branches —
GET /v4/maintenance/{shortName}/company/branches/{offset}/{count} - Get properties for maintenance —
GET /properties/{branchID}/{offset}/{count}Includes archived properties (intentional, for integrator compatibility). Each property includes aManagedMaintenanceflag. - Get job status types —
GET /jobs/statusTypes/{offset}/{count}Understand available workflow states (e.g. pending, in progress, completed, cancelled). - Create a maintenance job —
POST /jobs/{branchID}/jobRequired:MaintenanceJobSubmissionModelincluding property ID, description, status ID, and optional contractor assignment. - Track job progress —
GET /jobs/{jobID} - Update job status —
PATCH /jobs/{jobID}Use thenoContractorflag to remove a contractor assignment if needed.
Contractor management
- All contractors for a branch:
GET /contacts/contractors/{branchID}/{offset}/{count} - Specific contractor:
GET /contacts/contractors/{contractorID} - Submit contractor invoice:
POST /invoice/submitusingContractorInvoiceSubmissionModel(requires contractor ID, job ID, invoice amount, and supporting documents)
Property and contact lookups
- Property details:
GET /properties/{propertyID} - Landlord:
GET /contacts/landlords/{landlordID} - Tenant:
GET /contacts/tenants/{tenantID} - Staff member:
GET /contacts/staff/{staffMemberID}
Job tracking and reporting
- All jobs for a branch:
GET /jobs/{branchID}/{offset}/{count} - Specific status type:
GET /jobs/statustypes/{statusID} - Tenancy states (includes archived):
GET /{branchID}/tenancies/tenancyState/{offset}/{count}
Document attachment
POST /jobs/{jobID}/attachdocument Supported formats: PDF, JPG, PNG, DOC, DOCX, XLS, XLSX.
Maintenance preferences
Preferences are property-specific settings that define maintenance requirements or instructions.
- All preferences for a property:
GET /preferences/{propertyID}/{offset}/{count}(returned ordered by name) - Specific preference:
GET /preferences/{preferenceID}
Custom fields
- Get definition:
/company/object/{objectID}/customfield - Get value:
/company/objects/{objectID}/{fieldID}/value - Set value:
POST /company/objects/{objectID}/{fieldID}/customfield
Data relationships
Branch → Properties → Jobs → Contractor → Invoice | Property → Preferences | Job → Status Type | Job → Documents | Property → Tenancy
Test with Swagger: Select "V4.Maintenance" from the tier dropdown. Pay particular attention to the MaintenanceJobSubmissionModel and ContractorInvoiceSubmissionModel structures.