generated: '2026-07-26' method: derived source: openapi/ (16 documents, 317 operations) - relationships read from the real nested path shapes description: 'The Arthur API v2 entity graph. Arthur expresses relationships through path nesting rather than through $ref-linked schemas (the published contract is a Postman collection, so response bodies are documented by example, not by schema). Every relationship below is read from a real documented path: /properties/{property_id}/units means a Property has many Units.' identifiers: style: opaque positive integers, unique within an entity prefixes: null cross_system_identifier: null note: No UPI, no RESO identifier, no external key. Ids are only meaningful inside the entity named in X-EntityID. root: Entity entities: - name: Entity collection: /entities description: The Arthur account boundary named in X-EntityID. - name: Property collection: /properties description: A building or address record. - name: Unit collection: /units description: A lettable space beneath a property. - name: Tenancy collection: /tenancies description: An agreement over a unit. - name: Tenant collection: /tenants description: A person on a tenancy. - name: Applicant collection: /applicants description: A prospective renter. - name: Viewing collection: /viewings description: A viewing appointment on a property or unit. - name: Task collection: /tasks description: A maintenance or management task. - name: Subtask collection: /subtasks description: A child of a task. - name: Workorder collection: /workorders description: Contractor work dispatched from a task. - name: Quote collection: /quotes description: A contractor quote against a work order. - name: ContractorInvoice collection: /invoices description: A contractor invoice against a work order. - name: Transaction collection: /transactions description: A financial movement. - name: Recurring collection: /recurrings description: A repeating charge on a tenancy. - name: Certificate collection: /certificates description: A compliance certificate with an expiry. - name: Asset collection: /assets description: A file or document. - name: Utility collection: /utilities description: A utility account on a property or unit. - name: UtilityReading collection: /readings description: A meter reading on a utility. - name: Conversation collection: /conversations description: A message thread. - name: Message collection: /messages description: A message in a conversation. - name: Note collection: /notes description: A free-text note on any record. - name: Tag collection: /tags description: A cross-cutting label. - name: GeneralInformation collection: /faqs description: Shared property/unit information. - name: Manager collection: /managers description: An assigned manager on an applicant or viewing. - name: CreditCheck collection: /credit-checks description: A credit check on an applicant. - name: Deposit collection: /register-deposit description: A registered tenancy deposit. - name: Type collection: /types description: A read-only reference vocabulary. relationship_count: 72 relationships: - from: Applicant to: Asset type: has_many via: applicant_id path: /applicants/{applicant_id}/assets - from: Applicant to: Conversation type: has_many via: applicant_id path: /applicants/{applicant_id}/conversations - from: Applicant to: Manager type: has_many via: applicant_id path: /applicants/{applicant_id}/managers - from: Applicant to: Note type: has_many via: applicant_id path: /applicants/{applicant_id}/notes - from: Applicant to: Tag type: has_many via: applicant_id path: /applicants/{applicant_id}/tags - from: Applicant to: Viewing type: has_many via: applicant_id path: /applicants/{applicant_id}/viewings - from: Conversation to: Asset type: has_many via: conversation_id path: /conversations/{conversation_id}/assets - from: Conversation to: Message type: has_many via: conversation_id path: /conversations/{conversation_id}/messages - from: Note to: Tag type: has_many via: note_id path: /notes/{note_id}/tags - from: Property to: Asset type: has_many via: property_id path: /properties/{property_id}/assets - from: Property to: Certificate type: has_many via: property_id path: /properties/{property_id}/certificates - from: Property to: Conversation type: has_many via: property_id path: /properties/{property_id}/conversations - from: Property to: GeneralInformation type: has_many via: property_id path: /properties/{property_id}/faqs - from: Property to: Note type: has_many via: property_id path: /properties/{property_id}/notes - from: Property to: Tag type: has_many via: property_id path: /properties/{property_id}/tags - from: Property to: Task type: has_many via: property_id path: /properties/{property_id}/tasks - from: Property to: Tenancy type: has_many via: property_id path: /properties/{property_id}/tenancies - from: Property to: Transaction type: has_many via: property_id path: /properties/{property_id}/transactions - from: Property to: Unit type: has_many via: property_id path: /properties/{property_id}/units - from: Property to: Utility type: has_many via: property_id path: /properties/{property_id}/utilities - from: Property to: Workorder type: has_many via: property_id path: /properties/{property_id}/workorders - from: Task to: Asset type: has_many via: task_id path: /tasks/{task_id}/assets - from: Task to: Conversation type: has_many via: task_id path: /tasks/{task_id}/conversations - from: Task to: Note type: has_many via: task_id path: /tasks/{task_id}/notes - from: Task to: Subtask type: has_many via: task_id path: /tasks/{task_id}/subtasks - from: Task to: Tag type: has_many via: task_id path: /tasks/{task_id}/tags - from: Task to: Tenant type: has_many via: task_id path: /tasks/{task_id}/tenants - from: Task to: Workorder type: has_many via: task_id path: /tasks/{task_id}/workorders - from: Tenancy to: Asset type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/assets - from: Tenancy to: Certificate type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/certificates - from: Tenancy to: Conversation type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/conversations - from: Tenancy to: Note type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/notes - from: Tenancy to: Recurring type: has_many via: tenancyId path: /tenancies/{tenancyId}/recurrings - from: Tenancy to: register_deposit type: has_many via: id path: /tenancies/{id}/register_deposit - from: Tenancy to: Tag type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/tags - from: Tenancy to: Task type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/tasks - from: Tenancy to: Tenant type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/tenants - from: Tenancy to: Transaction type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/transactions - from: Tenancy to: Workorder type: has_many via: tenancy_id path: /tenancies/{tenancy_id}/workorders - from: Tenancy to: Workorder type: has_many via: tenancy_id path: /tenancy/{tenancy_id}/workorders - from: Tenancy_types to: tenancy_sub_types type: has_many via: id path: /tenancy_types/{id}/tenancy_sub_types - from: Unit to: Asset type: has_many via: unit_id path: /units/{unit_id}/assets - from: Unit to: Certificate type: has_many via: unit_id path: /units/{unit_id}/certificates - from: Unit to: Conversation type: has_many via: unit_id path: /units/{unit_id}/conversations - from: Unit to: GeneralInformation type: has_many via: unit_id path: /units/{unit_id}/faqs - from: Unit to: Note type: has_many via: unit_id path: /units/{unit_id}/notes - from: Unit to: property type: has_many via: unit_id path: /units/{unit_id}/property - from: Unit to: Tag type: has_many via: id path: /units/{id}/tags - from: Unit to: Task type: has_many via: unit_id path: /units/{unit_id}/tasks - from: Unit to: Tenancy type: has_many via: unit_id path: /units/{unit_id}/tenancies - from: Unit to: Transaction type: has_many via: unit_id path: /units/{unit_id}/transactions - from: Unit to: Utility type: has_many via: unit_id path: /units/{unit_id}/utilities - from: Unit to: Viewing type: has_many via: unit_id path: /units/{unit_id}/viewings - from: Unit to: Workorder type: has_many via: unit_id path: /units/{unit_id}/workorders - from: Utility to: UtilityReading type: has_many via: utility_id path: /utilities/{utility_id}/readings - from: Viewing to: Applicant type: has_many via: viewing_id path: /viewings/{viewing_id}/applicants - from: Viewing to: Conversation type: has_many via: viewing_id path: /viewings/{viewing_id}/conversations - from: Viewing to: Manager type: has_many via: viewing_id path: /viewings/{viewing_id}/managers - from: Viewing to: Note type: has_many via: viewing_id path: /viewings/{viewing_id}/notes - from: Viewing to: submit_offer type: has_many via: viewing_id path: /viewings/{viewing_id}/submit_offer - from: Viewing to: Tag type: has_many via: viewing_id path: /viewings/{viewing_id}/tags - from: Viewing to: Tenancy type: has_many via: viewing_id path: /viewings/{viewing_id}/tenancies - from: Workorder to: Asset type: has_many via: workorder_id path: /workorders/{workorder_id}/assets - from: Workorder to: Certificate type: has_many via: workorder_id path: /workorders/{workorder_id}/certificates - from: Workorder to: contractors type: has_many via: workorder_id path: /workorders/{workorder_id}/contractors - from: Workorder to: Conversation type: has_many via: workorder_id path: /workorders/{workorder_id}/conversations - from: Workorder to: ContractorInvoice type: has_many via: workorder_id path: /workorders/{workorder_id}/invoices - from: Workorder to: Note type: has_many via: workorder_id path: /workorders/{workorder_id}/notes - from: Workorder to: Quote type: has_many via: workorder_id path: /workorders/{workorder_id}/quotes - from: Workorder to: Tag type: has_many via: workorder_id path: /workorders/{workorder_id}/tags - from: Workorder to: Tenant type: has_many via: workorder_id path: /workorders/{workorder_id}/tenants - from: Workorder to: Transaction type: has_many via: workorder_id path: /workorders/{workorder_id}/transactions sub_resource_actions: - 'on': Applicant action: status path: /applicant/{applicant_id}/status - 'on': Applicant action: conversation_recipients path: /applicants/{applicant_id}/conversation_recipients - 'on': Applicant action: credit_checks path: /applicants/{applicant_id}/credit_checks - 'on': Applicant action: untag path: /applicants/{applicant_id}/untag - 'on': Applicant action: untag_all path: /applicants/{applicant_id}/untag_all - 'on': Note action: untag path: /notes/{note_id}/untag - 'on': Note action: untag_all path: /notes/{note_id}/untag_all - 'on': Property action: conversation_recipients path: /properties/{property_id}/conversation_recipients - 'on': Property action: untag path: /properties/{property_id}/untag - 'on': Property action: untag_all path: /properties/{property_id}/untag_all - 'on': Task action: conversation_recipients path: /tasks/{task_id}/conversation_recipients - 'on': Task action: status path: /tasks/{task_id}/status - 'on': Task action: untag path: /tasks/{task_id}/untag - 'on': Task action: untag_all path: /tasks/{task_id}/untag_all - 'on': Tenancy action: conversation_recipients path: /tenancies/{tenancy_id}/conversation_recipients - 'on': Tenancy action: untag path: /tenancies/{tenancy_id}/untag - 'on': Tenancy action: untag_all path: /tenancies/{tenancy_id}/untag_all - 'on': Tenant action: invite path: /tenants/{tenant_id}/invite - 'on': Transaction action: payoff path: /transactions/{transaction_id}/payoff - 'on': Unit action: conversation_recipients path: /units/{unit_id}/conversation_recipients - 'on': Unit action: untag path: /units/{unit_id}/untag - 'on': Unit action: untag_all path: /units/{unit_id}/untag_all - 'on': Viewing action: conversation_recipients path: /viewings/{viewing_id}/conversation_recipients - 'on': Viewing action: status path: /viewings/{viewing_id}/status - 'on': Viewing action: untag path: /viewings/{viewing_id}/untag - 'on': Viewing action: untag_all path: /viewings/{viewing_id}/untag_all - 'on': Workorder action: conversation_recipients path: /workorders/{workorder_id}/conversation_recipients - 'on': Workorder action: untag path: /workorders/{workorder_id}/untag - 'on': Workorder action: untag_all path: /workorders/{workorder_id}/untag_all cross_cutting: - attachment: Note attaches_to: - Property - Unit - Tenancy - Applicant - Viewing - attachment: Tag attaches_to: - Property - Unit - Tenancy - Applicant - Viewing - Note - attachment: Asset attaches_to: - Property - Unit - Tenancy - Applicant - Conversation - attachment: Conversation attaches_to: - Property - Unit - Tenancy - Applicant - Viewing - attachment: Certificate attaches_to: - Property - Unit - Tenancy - attachment: Task attaches_to: - Property - Unit - Tenancy - attachment: Workorder attaches_to: - Property - Unit - Tenancy - attachment: Transaction attaches_to: - Property - Unit - Tenancy - attachment: Utility attaches_to: - Property - Unit - attachment: custom_fields attaches_to: - Property - Unit - Tenancy - Applicant - Tenant lifecycle_path: Applicant -> Viewing (offer) -> Tenancy -> Tenant, with Property -> Unit as the physical spine and Task -> Workorder -> Quote -> ContractorInvoice as the maintenance spine. related: vocabulary: vocabulary/arthur-online-vocabulary.yml conventions: conventions/arthur-online-conventions.yml