Data schema diagram
How x0 tables relate to each other — the same catalog as OData, shown as a diagram.
After you connect a Xero organisation, Dashboard → Data schema draws pictograms (Accounts, Contacts, Invoices, …) with linkage lines between them. Each node shows row count and last refresh from the cache. Double-click a pictogram to jump to that entity in the OData guide.
Agents can paste the same picture into markdown: MCP tool get_schema_diagram (see MCP for AI agents).
On the dashboard
You need a connected Xero organisation. Then:
- Open Dashboard.
- Find Data schema (above the Data cache table).
- Optionally pick an organisation if you have more than one.
- Click a table for row counts, last fetched, OData name, and docs links.
- Double-click to open OData docs at that entity (
#entity-Invoices, …). - Drag to pan, scroll to zoom. Toggle Port ticks, Relationship labels, and layer groups (transactions, line tables, …).
Ring colour:
| Ring | Meaning |
|---|---|
| Green | Cached and last sync complete |
| Amber | Rows present, sync pending or stale |
| Grey | Not in cache yet — refresh data or enable the endpoint |
Excel line tables (Invoices_Table, Contacts_Table, …) appear as dashed “hosted” links beside their parent once those tables are cached.
What the layout means
Left to right:
| Column | What |
|---|---|
| Portal | Your x0 customer and connected organisation |
| Organisation | Settings (Xero /Organisation) |
| Master data / Contacts | Chart of accounts, items, tax, contacts, contact groups |
| Transactions | Invoices, bills, quotes, POs, repeating invoices, … |
| Ledger / banking | Journals, manual journals, budgets, bank transactions, payments |
| Crawled / partner | Attachments, reports, history notes; Bank Feeds / payment services |
Solid lines are relationships (often a foreign key such as ContactID). Dashed lines are Excel *_Table flattenings of nested arrays (LineItems, Addresses).
Mermaid (for docs and agents)
This is the overview catalog (no Excel line tables). Paste it into GitHub, Cursor, or your own markdown. The live dashboard diagram adds cache stats on top of the same entities.
flowchart LR
subgraph sg_portal["Portal & connection"]
customer["Customer"]
organisation["Organisation"]
end
subgraph sg_org["Organisation"]
settings["Settings"]
end
subgraph sg_master["Master data"]
accounts["Accounts"]
brandingthemes["BrandingThemes"]
contactgroups["ContactGroups"]
currencies["Currencies"]
invoicereminders["InvoiceReminders"]
items["Items"]
taxrates["TaxRates"]
trackingcategories["TrackingCategories"]
users["Users"]
end
subgraph sg_contacts["Contacts"]
contacts["Contacts"]
end
subgraph sg_transactions["Transactions"]
batchpayments["BatchPayments"]
creditnotes["CreditNotes"]
invoices["Invoices"]
linkedtransactions["LinkedTransactions"]
overpayments["Overpayments"]
prepayments["Prepayments"]
purchaseorders["PurchaseOrders"]
quotes["Quotes"]
repeatinginvoices["RepeatingInvoices"]
end
subgraph sg_ledger["Ledger & budgets"]
budgets["Budgets"]
journals["Journals"]
manualjournals["ManualJournals"]
end
subgraph sg_banking["Banking"]
banktransactions["BankTransactions"]
banktransfers["BankTransfers"]
payments["Payments"]
end
subgraph sg_crawled["Crawled catalogs"]
attachments["Attachments"]
historynotes["HistoryNotes"]
reports["Reports"]
end
subgraph sg_partner["Partner APIs"]
bankstatements["BankStatements"]
paymentservices["PaymentServices"]
end
customer --> organisation
organisation --> settings
settings --> accounts
settings --> brandingthemes
settings --> contactgroups
settings --> currencies
settings --> invoicereminders
settings --> items
settings --> taxrates
settings --> trackingcategories
settings --> users
settings --> contacts
settings --> batchpayments
settings --> creditnotes
settings --> invoices
settings --> linkedtransactions
settings --> overpayments
settings --> prepayments
settings --> purchaseorders
settings --> quotes
settings --> repeatinginvoices
settings --> budgets
settings --> journals
settings --> manualjournals
settings --> banktransactions
settings --> banktransfers
settings --> payments
settings --> bankstatements
settings --> paymentservices
contacts -->|ContactID| batchpayments
contacts -->|ContactID| banktransactions
contacts -->|ContactID| creditnotes
contacts -->|ContactID| invoices
contacts -->|ContactID| linkedtransactions
contacts -->|ContactID| overpayments
contacts -->|ContactID| prepayments
contacts -->|ContactID| purchaseorders
contacts -->|ContactID| quotes
contacts -->|ContactID| repeatinginvoices
contactgroups -->|ContactIDs| contacts
accounts -->|AccountID (lines)| invoices
settings --> attachments
settings --> reports
settings --> historynotes
Full catalog (every *_Table line grain plus X0 / Tenants / Tables): MCP get_schema_diagram with detail=full, or resource x0://schema-diagram.
Related
- OData — entity sets, filters, scopes
- Data freshness — cache, refresh, TTL
- MCP for AI agents —
get_schema_diagram - AI agents — HTTP discovery order
- Documentation index