Worlds / Real estate
Yardi API
A local Yardi Voyager with properties, units, tenants, leases, charges, receipts and work orders. Test the property management agent that renews leases, posts charges and works the rent roll.
- Base path
/Webservices- Auth
- SOAP credentials in each request, wrapped here as bearer, the world key
- Endpoints
- 12
- Status
- Active today
This reference previews the surface the Yardi world serves in the closed beta. Paths mirror the public Yardi API; the exact subset is confirmed when your workflow is scoped.
Connect
The run gives your agent these bindings. Keep your SDK; change only where it sends requests.
| binding | meaning |
|---|---|
WORLDS_YARDI_URL | This world's origin followed by /Webservices |
WORLDS_API_KEY | The world key, accepted wherever Yardi expects a credential |
WORLDS_WORLD_ID | The isolated world's identity |
const base = process.env.WORLDS_YARDI_URL + "/Webservices";
const res = await fetch(base + "/ItfResidentTransactions20.asmx/GetResidentTransactions_Login", {
method: "POST",
headers: {
Authorization: "Bearer " + process.env.WORLDS_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ YardiPropertyId: "prop01", TenantCode: "t0001234" }),
});
const data = await res.json();API reference
Properties
Properties and units under management.
- POST
/Webservices/ItfILSGuestCard.asmx/GetPropertyConfigurationsList property configurations - POST
/Webservices/ItfILSGuestCard.asmx/UnitAvailability_LoginGet unit availability
Fields · 4
PropertyCode | string | Property code |
MarketingName | string | Property name |
Address | object | Street, city, state |
UnitCount | integer | Number of units |
Residents
Tenants, leases and balances.
- POST
/Webservices/ItfResidentData.asmx/GetResidentData_LoginGet resident data - POST
/Webservices/ItfResidentTransactions20.asmx/GetResidentTransactions_LoginGet resident transactions - POST
/Webservices/ItfResidentData.asmx/ImportResidentData_LoginImport resident data
Fields · 6
TenantCode | string | Resident code |
FirstName | string | Given name |
LastName | string | Family name |
UnitCode | string | Unit |
LeaseFromDate | date | Lease start |
LeaseToDate | date | Lease end |
Charges and payments
Ledger charges and receipts.
- POST
/Webservices/ItfResidentTransactions20.asmx/ImportResidentTransactions_LoginPost resident transactions - POST
/Webservices/ItfResidentTransactions20.asmx/GetChargeTypesList charge types
Fields · 5
TransactionId | string | Transaction id |
ChargeCode | string | Charge type |
Amount | number | Amount |
TransactionDate | date | Posted date |
Description | string | Memo |
Service requests
Maintenance tickets for units.
- POST
/Webservices/ItfServiceRequests.asmx/GetServiceRequests_SearchSearch service requests - POST
/Webservices/ItfServiceRequests.asmx/CreateServiceRequestCreate a service request - POST
/Webservices/ItfServiceRequests.asmx/UpdateServiceRequestUpdate a service request
Fields · 6
ServiceRequestId | string | Request id |
PropertyCode | string | Property |
UnitCode | string | Unit |
Priority | string | Priority |
Status | string | Open, in progress, closed |
Description | string | Problem description |
Guest cards
Prospects and leasing leads.
- POST
/Webservices/ItfILSGuestCard.asmx/ImportYardiGuest_LoginCreate or update a guest card - POST
/Webservices/ItfILSGuestCard.asmx/GetYardiGuestActivity_SearchSearch guest activity
Fields · 5
ProspectId | string | Prospect id |
FirstName | string | Given name |
LastName | string | Family name |
Email | string | |
DesiredMoveIn | date | Move-in target |
Test workflow
- Prepare. Select the Yardi setup for your workflow and review its starting records, including properties, residents, charges and payments.
- Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
- Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
- Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.
What to verify
- Unit 101 has one $75 late fee
- Unit 102 has no late fee, its balance is zero
- Unit 105 skipped, it is on a payment plan
- No tenant has two late fees this month
- No charge posted into a closed period
Test file
A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.
# worlds/tasks.yaml · Yardi
version: 2
connector: yardi
seed: yardi-starter
mode: isolated
policy: >
Post late fees for the month. Charge $75 only on ledgers with a past due
balance after the grace period, skip tenants on a payment plan, and post
nothing twice.
tasks:
- id: post-late-fees-on-past-due-tenant-ledgers
prompt: Post late fees on past due tenant ledgers
- id: renew-expiring-leases-at-the-approved-rent
prompt: Renew expiring leases at the approved rent
- id: open-work-orders-from-resident-requests
prompt: Open work orders from resident requests
expected:
- Unit 101 has one $75 late fee
- "Unit 102 has no late fee, its balance is zero"
- "Unit 105 skipped, it is on a payment plan"
- No tenant has two late fees this month
- No charge posted into a closed period
scenarios:
- period-closed
- interface-timeout
- duplicate-chargeSee Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.
Failure conditions
Each one fires before the handler, at the same step on every run.
| condition | what the agent sees |
|---|---|
period-closed | Posting a charge into a closed month is rejected |
interface-timeout | The import call times out after the batch is half written |
duplicate-charge | A retry posts the same late fee twice |
session-expires | The session ends partway through the rent roll |
Starting data
Start each run from the same records and relationships. The overview below describes the Yardi starter; use the setup supplied for your workflow when preparing your own snapshot.
| Records | Starting setup |
|---|---|
| properties | 2 apartment communities with 180 units |
| tenants | 160 across current, notice, past and future |
| leases | 160 with terms, 22 expiring in 60 days |
| charges | Rent, parking and pet charges, 18 ledgers past due |
| work orders | 30 across open, in progress and completed |
The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.
Properties records
Properties
Properties and units under management.
| Field | Type | Meaning / relationship |
|---|---|---|
PropertyCode | string | Property code |
MarketingName | string | Property name |
Address | object | Street, city, state |
UnitCount | integer | Number of units |
{
"PropertyCode": "<Property code>",
"MarketingName": "<Property name>",
"Address": {},
"UnitCount": 1
}Residents records
Residents
Tenants, leases and balances.
| Field | Type | Meaning / relationship |
|---|---|---|
TenantCode | string | Resident code |
FirstName | string | Given name |
LastName | string | Family name |
UnitCode | string | Unit |
LeaseFromDate | date | Lease start |
LeaseToDate | date | Lease end |
{
"TenantCode": "<Resident code>",
"FirstName": "<Given name>",
"LastName": "<Family name>",
"UnitCode": "<Unit>",
"LeaseFromDate": "<Lease start>",
"LeaseToDate": "<Lease end>"
}Charges and payments records
Charges and payments
Ledger charges and receipts.
| Field | Type | Meaning / relationship |
|---|---|---|
TransactionId | string | Transaction id |
ChargeCode | string | Charge type |
Amount | number | Amount |
TransactionDate | date | Posted date |
Description | string | Memo |
{
"TransactionId": "<Transaction id>",
"ChargeCode": "<Charge type>",
"Amount": 1,
"TransactionDate": "<Posted date>",
"Description": "<Memo>"
}Service requests records
Service requests
Maintenance tickets for units.
| Field | Type | Meaning / relationship |
|---|---|---|
ServiceRequestId | string | Request id |
PropertyCode | string | Property |
UnitCode | string | Unit |
Priority | string | Priority |
Status | string | Open, in progress, closed |
Description | string | Problem description |
{
"ServiceRequestId": "<Request id>",
"PropertyCode": "<Property>",
"UnitCode": "<Unit>",
"Priority": "<Priority>",
"Status": "<Open, in progress, closed>",
"Description": "<Problem description>"
}Guest cards records
Guest cards
Prospects and leasing leads.
| Field | Type | Meaning / relationship |
|---|---|---|
ProspectId | string | Prospect id |
FirstName | string | Given name |
LastName | string | Family name |
Email | string | |
DesiredMoveIn | date | Move-in target |
{
"ProspectId": "<Prospect id>",
"FirstName": "<Given name>",
"LastName": "<Family name>",
"Email": "person@example.test",
"DesiredMoveIn": "<Move-in target>"
}