@nightsquawktech/appfolio-mcp-server 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (313) hide show
  1. package/COMMERCIAL.md +35 -0
  2. package/LICENSE +661 -0
  3. package/README.md +127 -0
  4. package/dist/catalog/index.json +1511 -0
  5. package/dist/catalog/report-spec.js +27 -0
  6. package/dist/catalog/reports/account_totals.json +112 -0
  7. package/dist/catalog/reports/additional_fees.json +73 -0
  8. package/dist/catalog/reports/aged_payables_summary.json +124 -0
  9. package/dist/catalog/reports/aged_receivables_detail.json +132 -0
  10. package/dist/catalog/reports/amenities_by_property.json +73 -0
  11. package/dist/catalog/reports/annual_budget_comparative.json +138 -0
  12. package/dist/catalog/reports/annual_budget_forecast.json +125 -0
  13. package/dist/catalog/reports/appfolio_stack_usage.json +112 -0
  14. package/dist/catalog/reports/association_work_order.json +232 -0
  15. package/dist/catalog/reports/balance_sheet.json +124 -0
  16. package/dist/catalog/reports/balance_sheet_comparative.json +126 -0
  17. package/dist/catalog/reports/balance_sheet_comparison.json +113 -0
  18. package/dist/catalog/reports/bank_account_association.json +94 -0
  19. package/dist/catalog/reports/bill_detail.json +183 -0
  20. package/dist/catalog/reports/board_of_directors.json +87 -0
  21. package/dist/catalog/reports/budget_comparative.json +162 -0
  22. package/dist/catalog/reports/budget_comparison.json +141 -0
  23. package/dist/catalog/reports/cancelled_processes.json +122 -0
  24. package/dist/catalog/reports/cash_flow.json +158 -0
  25. package/dist/catalog/reports/cash_flow_comparison.json +158 -0
  26. package/dist/catalog/reports/cash_flow_detail.json +129 -0
  27. package/dist/catalog/reports/charge_detail.json +198 -0
  28. package/dist/catalog/reports/chart_of_accounts.json +22 -0
  29. package/dist/catalog/reports/check_register.json +181 -0
  30. package/dist/catalog/reports/check_register_detail.json +181 -0
  31. package/dist/catalog/reports/completed_processes.json +117 -0
  32. package/dist/catalog/reports/delinquency.json +164 -0
  33. package/dist/catalog/reports/delinquency_as_of.json +155 -0
  34. package/dist/catalog/reports/deposit_register.json +51 -0
  35. package/dist/catalog/reports/dues_roll.json +89 -0
  36. package/dist/catalog/reports/dues_roll_itemized.json +113 -0
  37. package/dist/catalog/reports/eligible_debt_summary.json +73 -0
  38. package/dist/catalog/reports/email_delivery_errors.json +104 -0
  39. package/dist/catalog/reports/expense_distribution.json +109 -0
  40. package/dist/catalog/reports/expense_register.json +149 -0
  41. package/dist/catalog/reports/fixed_assets.json +111 -0
  42. package/dist/catalog/reports/flows_assigned_tasks.json +103 -0
  43. package/dist/catalog/reports/fund_balance_sheet.json +113 -0
  44. package/dist/catalog/reports/fund_balance_sheet_active_funds.json +113 -0
  45. package/dist/catalog/reports/fund_income_statement.json +132 -0
  46. package/dist/catalog/reports/general_ledger.json +166 -0
  47. package/dist/catalog/reports/gross_potential_rent_enhanced.json +102 -0
  48. package/dist/catalog/reports/guest_card_inquiries.json +177 -0
  49. package/dist/catalog/reports/guest_cards.json +161 -0
  50. package/dist/catalog/reports/historical_advertised_rent.json +92 -0
  51. package/dist/catalog/reports/homeowner_delinquency.json +143 -0
  52. package/dist/catalog/reports/homeowner_delinquency_as_of.json +161 -0
  53. package/dist/catalog/reports/homeowner_directory.json +126 -0
  54. package/dist/catalog/reports/homeowner_ledger.json +59 -0
  55. package/dist/catalog/reports/homeowner_prepayment_balance.json +127 -0
  56. package/dist/catalog/reports/homeowner_resale.json +107 -0
  57. package/dist/catalog/reports/homeowner_vehicle_info.json +104 -0
  58. package/dist/catalog/reports/import_variances.json +41 -0
  59. package/dist/catalog/reports/in_progress_workflows.json +181 -0
  60. package/dist/catalog/reports/inactive_guest_cards.json +134 -0
  61. package/dist/catalog/reports/income_register.json +131 -0
  62. package/dist/catalog/reports/income_statement.json +130 -0
  63. package/dist/catalog/reports/income_statement_comparative.json +140 -0
  64. package/dist/catalog/reports/income_statement_comparison.json +135 -0
  65. package/dist/catalog/reports/income_statement_date_range.json +134 -0
  66. package/dist/catalog/reports/inspection_detail.json +107 -0
  67. package/dist/catalog/reports/insurance_enforcement.json +22 -0
  68. package/dist/catalog/reports/insurance_usage.json +92 -0
  69. package/dist/catalog/reports/inventory_status.json +73 -0
  70. package/dist/catalog/reports/inventory_usage.json +131 -0
  71. package/dist/catalog/reports/keys_detail.json +131 -0
  72. package/dist/catalog/reports/late_fee_policy_comparison.json +135 -0
  73. package/dist/catalog/reports/lease_expiration_detail.json +147 -0
  74. package/dist/catalog/reports/lease_expiration_summary.json +95 -0
  75. package/dist/catalog/reports/lease_history.json +147 -0
  76. package/dist/catalog/reports/leasing_agent_performance.json +54 -0
  77. package/dist/catalog/reports/leasing_funnel_performance.json +113 -0
  78. package/dist/catalog/reports/leasing_summary.json +92 -0
  79. package/dist/catalog/reports/loans.json +95 -0
  80. package/dist/catalog/reports/occupancy_custom_fields.json +73 -0
  81. package/dist/catalog/reports/occupancy_summary.json +95 -0
  82. package/dist/catalog/reports/owner1099.json +135 -0
  83. package/dist/catalog/reports/owner1099_detail.json +156 -0
  84. package/dist/catalog/reports/owner_custom_fields.json +73 -0
  85. package/dist/catalog/reports/owner_directory.json +101 -0
  86. package/dist/catalog/reports/owner_leasing.json +115 -0
  87. package/dist/catalog/reports/owner_withholdings.json +170 -0
  88. package/dist/catalog/reports/payment_plans.json +128 -0
  89. package/dist/catalog/reports/premium_leads_billing_detail.json +70 -0
  90. package/dist/catalog/reports/project_budget_detail.json +56 -0
  91. package/dist/catalog/reports/project_directory.json +144 -0
  92. package/dist/catalog/reports/property_budget.json +83 -0
  93. package/dist/catalog/reports/property_custom_fields.json +73 -0
  94. package/dist/catalog/reports/property_directory.json +73 -0
  95. package/dist/catalog/reports/property_group_directory.json +85 -0
  96. package/dist/catalog/reports/property_performance.json +115 -0
  97. package/dist/catalog/reports/property_staff_assignments.json +73 -0
  98. package/dist/catalog/reports/prospect_source_tracking.json +92 -0
  99. package/dist/catalog/reports/purchase_order.json +163 -0
  100. package/dist/catalog/reports/receivables_activity.json +138 -0
  101. package/dist/catalog/reports/renewal_summary.json +134 -0
  102. package/dist/catalog/reports/rent_roll.json +114 -0
  103. package/dist/catalog/reports/rent_roll_commercial.json +106 -0
  104. package/dist/catalog/reports/rent_roll_itemized.json +125 -0
  105. package/dist/catalog/reports/rentable_items.json +97 -0
  106. package/dist/catalog/reports/rental_applications.json +118 -0
  107. package/dist/catalog/reports/renter_directory.json +60 -0
  108. package/dist/catalog/reports/resident_financial_activity.json +107 -0
  109. package/dist/catalog/reports/screening_assessments.json +104 -0
  110. package/dist/catalog/reports/screening_usage.json +92 -0
  111. package/dist/catalog/reports/security_deposit_funds_detail.json +141 -0
  112. package/dist/catalog/reports/showings.json +123 -0
  113. package/dist/catalog/reports/student_housing_rent_roll_by_bed.json +125 -0
  114. package/dist/catalog/reports/surveys_summary.json +118 -0
  115. package/dist/catalog/reports/tenant_debt_collections_status.json +90 -0
  116. package/dist/catalog/reports/tenant_directory.json +120 -0
  117. package/dist/catalog/reports/tenant_ledger.json +72 -0
  118. package/dist/catalog/reports/tenant_tickler.json +102 -0
  119. package/dist/catalog/reports/tenant_transactions_summary.json +97 -0
  120. package/dist/catalog/reports/tenant_unpaid_charges_summary.json +147 -0
  121. package/dist/catalog/reports/tenant_vehicle_info.json +107 -0
  122. package/dist/catalog/reports/trial_balance.json +104 -0
  123. package/dist/catalog/reports/trial_balance_by_property.json +104 -0
  124. package/dist/catalog/reports/trust_account_balance.json +116 -0
  125. package/dist/catalog/reports/trust_account_balance_detail.json +112 -0
  126. package/dist/catalog/reports/twelve_month_cash_flow.json +157 -0
  127. package/dist/catalog/reports/twelve_month_income_statement.json +147 -0
  128. package/dist/catalog/reports/unit_custom_fields.json +73 -0
  129. package/dist/catalog/reports/unit_directory.json +80 -0
  130. package/dist/catalog/reports/unit_inspection.json +95 -0
  131. package/dist/catalog/reports/unit_turn_detail.json +104 -0
  132. package/dist/catalog/reports/unit_vacancy.json +143 -0
  133. package/dist/catalog/reports/unpaid_balances_by_month.json +181 -0
  134. package/dist/catalog/reports/upcoming_activities.json +142 -0
  135. package/dist/catalog/reports/vendor1099.json +84 -0
  136. package/dist/catalog/reports/vendor_custom_fields.json +22 -0
  137. package/dist/catalog/reports/vendor_directory.json +134 -0
  138. package/dist/catalog/reports/vendor_ledger.json +122 -0
  139. package/dist/catalog/reports/vendor_ledger_enhanced.json +122 -0
  140. package/dist/catalog/reports/violation_detail.json +122 -0
  141. package/dist/catalog/reports/work_order.json +254 -0
  142. package/dist/catalog/reports/work_order_labor_summary.json +148 -0
  143. package/dist/catalog-db/endpoint-spec.js +22 -0
  144. package/dist/catalog-db/endpoints/delete_inspections_inspectionid.json +21 -0
  145. package/dist/catalog-db/endpoints/delete_inventories_id.json +21 -0
  146. package/dist/catalog-db/endpoints/delete_properties_propertyid_marketing_photos_marketingphotoid.json +27 -0
  147. package/dist/catalog-db/endpoints/delete_properties_propertyid_photos_photoid.json +27 -0
  148. package/dist/catalog-db/endpoints/delete_units_unitid_photos_photoid.json +27 -0
  149. package/dist/catalog-db/endpoints/delete_work_orders_workorderid_attachments_attachmentid.json +27 -0
  150. package/dist/catalog-db/endpoints/get_bank_accounts.json +58 -0
  151. package/dist/catalog-db/endpoints/get_bills.json +185 -0
  152. package/dist/catalog-db/endpoints/get_ca_associations.json +106 -0
  153. package/dist/catalog-db/endpoints/get_ca_bank_balances.json +101 -0
  154. package/dist/catalog-db/endpoints/get_ca_board_members.json +146 -0
  155. package/dist/catalog-db/endpoints/get_ca_homeowner_ledgers.json +70 -0
  156. package/dist/catalog-db/endpoints/get_ca_homeowners.json +151 -0
  157. package/dist/catalog-db/endpoints/get_ca_renters.json +132 -0
  158. package/dist/catalog-db/endpoints/get_ca_rules.json +76 -0
  159. package/dist/catalog-db/endpoints/get_ca_units.json +130 -0
  160. package/dist/catalog-db/endpoints/get_ca_violations.json +119 -0
  161. package/dist/catalog-db/endpoints/get_charges.json +76 -0
  162. package/dist/catalog-db/endpoints/get_corporate_entities.json +88 -0
  163. package/dist/catalog-db/endpoints/get_custom_fields.json +120 -0
  164. package/dist/catalog-db/endpoints/get_delinquent_charges.json +88 -0
  165. package/dist/catalog-db/endpoints/get_gl_accounts.json +115 -0
  166. package/dist/catalog-db/endpoints/get_gl_details.json +154 -0
  167. package/dist/catalog-db/endpoints/get_inventories.json +131 -0
  168. package/dist/catalog-db/endpoints/get_inventory_locations.json +70 -0
  169. package/dist/catalog-db/endpoints/get_jobs.json +79 -0
  170. package/dist/catalog-db/endpoints/get_journal_entries.json +137 -0
  171. package/dist/catalog-db/endpoints/get_late_fee_policies.json +148 -0
  172. package/dist/catalog-db/endpoints/get_leads.json +248 -0
  173. package/dist/catalog-db/endpoints/get_leads_notes.json +83 -0
  174. package/dist/catalog-db/endpoints/get_leases.json +70 -0
  175. package/dist/catalog-db/endpoints/get_leases_renewal_pricings.json +52 -0
  176. package/dist/catalog-db/endpoints/get_listings.json +259 -0
  177. package/dist/catalog-db/endpoints/get_occupancies_documents.json +70 -0
  178. package/dist/catalog-db/endpoints/get_owner_groups.json +230 -0
  179. package/dist/catalog-db/endpoints/get_owners.json +258 -0
  180. package/dist/catalog-db/endpoints/get_owners_attachments.json +82 -0
  181. package/dist/catalog-db/endpoints/get_owners_notes.json +71 -0
  182. package/dist/catalog-db/endpoints/get_owners_ownerid.json +247 -0
  183. package/dist/catalog-db/endpoints/get_payables.json +138 -0
  184. package/dist/catalog-db/endpoints/get_portfolios.json +70 -0
  185. package/dist/catalog-db/endpoints/get_properties.json +267 -0
  186. package/dist/catalog-db/endpoints/get_properties_attachments.json +76 -0
  187. package/dist/catalog-db/endpoints/get_properties_marketing_photos.json +76 -0
  188. package/dist/catalog-db/endpoints/get_properties_notes.json +71 -0
  189. package/dist/catalog-db/endpoints/get_properties_photos.json +76 -0
  190. package/dist/catalog-db/endpoints/get_property_groups.json +84 -0
  191. package/dist/catalog-db/endpoints/get_recurring_charges.json +106 -0
  192. package/dist/catalog-db/endpoints/get_rental_applications.json +186 -0
  193. package/dist/catalog-db/endpoints/get_rental_applications_notes.json +71 -0
  194. package/dist/catalog-db/endpoints/get_showings.json +99 -0
  195. package/dist/catalog-db/endpoints/get_tenant_ledgers.json +82 -0
  196. package/dist/catalog-db/endpoints/get_tenants.json +273 -0
  197. package/dist/catalog-db/endpoints/get_tenants_notes.json +71 -0
  198. package/dist/catalog-db/endpoints/get_unit_types.json +168 -0
  199. package/dist/catalog-db/endpoints/get_units.json +359 -0
  200. package/dist/catalog-db/endpoints/get_units_attachments.json +76 -0
  201. package/dist/catalog-db/endpoints/get_units_notes.json +71 -0
  202. package/dist/catalog-db/endpoints/get_units_photos.json +70 -0
  203. package/dist/catalog-db/endpoints/get_users.json +88 -0
  204. package/dist/catalog-db/endpoints/get_vendors.json +317 -0
  205. package/dist/catalog-db/endpoints/get_vendors_notes.json +71 -0
  206. package/dist/catalog-db/endpoints/get_work_orders.json +322 -0
  207. package/dist/catalog-db/endpoints/get_work_orders_attachments.json +83 -0
  208. package/dist/catalog-db/endpoints/patch_bills_billid.json +156 -0
  209. package/dist/catalog-db/endpoints/patch_ca_violations_violationid.json +71 -0
  210. package/dist/catalog-db/endpoints/patch_inspections_inspectionid.json +77 -0
  211. package/dist/catalog-db/endpoints/patch_inventories_id.json +113 -0
  212. package/dist/catalog-db/endpoints/patch_inventory_locations_id.json +52 -0
  213. package/dist/catalog-db/endpoints/patch_journal_entries_journalentryid.json +90 -0
  214. package/dist/catalog-db/endpoints/patch_leads_guestcardid_notes_id.json +46 -0
  215. package/dist/catalog-db/endpoints/patch_leads_leadid.json +162 -0
  216. package/dist/catalog-db/endpoints/patch_leases_leaseid.json +52 -0
  217. package/dist/catalog-db/endpoints/patch_owner_groups_id.json +72 -0
  218. package/dist/catalog-db/endpoints/patch_owners_ownerid.json +344 -0
  219. package/dist/catalog-db/endpoints/patch_owners_ownerid_notes_id.json +46 -0
  220. package/dist/catalog-db/endpoints/patch_portfolios_portfolioid.json +46 -0
  221. package/dist/catalog-db/endpoints/patch_properties_propertyid.json +333 -0
  222. package/dist/catalog-db/endpoints/patch_properties_propertyid_marketing_photos_marketingphotoid.json +46 -0
  223. package/dist/catalog-db/endpoints/patch_properties_propertyid_notes_id.json +46 -0
  224. package/dist/catalog-db/endpoints/patch_properties_propertyid_photos_photoid.json +46 -0
  225. package/dist/catalog-db/endpoints/patch_property_groups_propertygroupid.json +40 -0
  226. package/dist/catalog-db/endpoints/patch_recurring_charges_recurringchargeid.json +89 -0
  227. package/dist/catalog-db/endpoints/patch_rental_applications_rentalapplicationid.json +47 -0
  228. package/dist/catalog-db/endpoints/patch_rental_applications_rentalapplicationid_notes_id.json +46 -0
  229. package/dist/catalog-db/endpoints/patch_showings_showingid.json +69 -0
  230. package/dist/catalog-db/endpoints/patch_tenants_bulk.json +131 -0
  231. package/dist/catalog-db/endpoints/patch_tenants_tenantid.json +48 -0
  232. package/dist/catalog-db/endpoints/patch_tenants_tenantid_notes_id.json +46 -0
  233. package/dist/catalog-db/endpoints/patch_unit_types_unittypeid.json +126 -0
  234. package/dist/catalog-db/endpoints/patch_units_unitid.json +296 -0
  235. package/dist/catalog-db/endpoints/patch_units_unitid_notes_id.json +46 -0
  236. package/dist/catalog-db/endpoints/patch_units_unitid_photos_photoid.json +46 -0
  237. package/dist/catalog-db/endpoints/patch_vendors_vendorid.json +263 -0
  238. package/dist/catalog-db/endpoints/patch_vendors_vendorid_notes_id.json +46 -0
  239. package/dist/catalog-db/endpoints/patch_work_orders_workorderid.json +273 -0
  240. package/dist/catalog-db/endpoints/patch_work_orders_workorderid_notes_id.json +46 -0
  241. package/dist/catalog-db/endpoints/post_bank_accounts_bulk.json +167 -0
  242. package/dist/catalog-db/endpoints/post_bills.json +160 -0
  243. package/dist/catalog-db/endpoints/post_bills_billid_attachments.json +40 -0
  244. package/dist/catalog-db/endpoints/post_bills_bulk.json +185 -0
  245. package/dist/catalog-db/endpoints/post_bills_bulk_async.json +192 -0
  246. package/dist/catalog-db/endpoints/post_ca_violations.json +63 -0
  247. package/dist/catalog-db/endpoints/post_ca_violations_violationid_attachments.json +41 -0
  248. package/dist/catalog-db/endpoints/post_charges.json +56 -0
  249. package/dist/catalog-db/endpoints/post_charges_bulk.json +70 -0
  250. package/dist/catalog-db/endpoints/post_charges_bulk_async.json +70 -0
  251. package/dist/catalog-db/endpoints/post_charges_chargeid_attachments.json +40 -0
  252. package/dist/catalog-db/endpoints/post_corporate_gl_accounts_bulk.json +71 -0
  253. package/dist/catalog-db/endpoints/post_gl_accounts_bulk.json +77 -0
  254. package/dist/catalog-db/endpoints/post_inspections.json +70 -0
  255. package/dist/catalog-db/endpoints/post_inspections_bulk.json +76 -0
  256. package/dist/catalog-db/endpoints/post_inspections_inspectionid_attachments.json +41 -0
  257. package/dist/catalog-db/endpoints/post_inventories.json +105 -0
  258. package/dist/catalog-db/endpoints/post_inventories_bulk.json +119 -0
  259. package/dist/catalog-db/endpoints/post_inventory_locations.json +44 -0
  260. package/dist/catalog-db/endpoints/post_inventory_locations_bulk.json +58 -0
  261. package/dist/catalog-db/endpoints/post_journal_entries.json +101 -0
  262. package/dist/catalog-db/endpoints/post_journal_entries_bulk.json +115 -0
  263. package/dist/catalog-db/endpoints/post_journal_entries_journalentryid_attachments.json +41 -0
  264. package/dist/catalog-db/endpoints/post_late_fee_policies_bulk.json +115 -0
  265. package/dist/catalog-db/endpoints/post_leads.json +204 -0
  266. package/dist/catalog-db/endpoints/post_leads_guestcardid_notes.json +40 -0
  267. package/dist/catalog-db/endpoints/post_occupancies_occupancyid_attachments.json +41 -0
  268. package/dist/catalog-db/endpoints/post_owner_groups.json +96 -0
  269. package/dist/catalog-db/endpoints/post_owners.json +330 -0
  270. package/dist/catalog-db/endpoints/post_owners_bulk.json +203 -0
  271. package/dist/catalog-db/endpoints/post_owners_ownerid_attachments.json +40 -0
  272. package/dist/catalog-db/endpoints/post_owners_ownerid_notes.json +40 -0
  273. package/dist/catalog-db/endpoints/post_properties_bulk.json +245 -0
  274. package/dist/catalog-db/endpoints/post_properties_propertyid_attachments.json +40 -0
  275. package/dist/catalog-db/endpoints/post_properties_propertyid_marketing_photos.json +52 -0
  276. package/dist/catalog-db/endpoints/post_properties_propertyid_notes.json +40 -0
  277. package/dist/catalog-db/endpoints/post_properties_propertyid_photos.json +40 -0
  278. package/dist/catalog-db/endpoints/post_recurring_charges.json +81 -0
  279. package/dist/catalog-db/endpoints/post_recurring_charges_bulk.json +95 -0
  280. package/dist/catalog-db/endpoints/post_rental_applications_rentalapplicationid_attachments.json +41 -0
  281. package/dist/catalog-db/endpoints/post_rental_applications_rentalapplicationid_notes.json +40 -0
  282. package/dist/catalog-db/endpoints/post_showings.json +62 -0
  283. package/dist/catalog-db/endpoints/post_tenants_bulk.json +161 -0
  284. package/dist/catalog-db/endpoints/post_tenants_tenantid_notes.json +40 -0
  285. package/dist/catalog-db/endpoints/post_unit_types_bulk.json +138 -0
  286. package/dist/catalog-db/endpoints/post_units_bulk.json +236 -0
  287. package/dist/catalog-db/endpoints/post_units_unitid_attachments.json +40 -0
  288. package/dist/catalog-db/endpoints/post_units_unitid_notes.json +40 -0
  289. package/dist/catalog-db/endpoints/post_units_unitid_photos.json +40 -0
  290. package/dist/catalog-db/endpoints/post_vendors.json +279 -0
  291. package/dist/catalog-db/endpoints/post_vendors_bulk.json +279 -0
  292. package/dist/catalog-db/endpoints/post_vendors_vendorid_notes.json +40 -0
  293. package/dist/catalog-db/endpoints/post_work_orders.json +251 -0
  294. package/dist/catalog-db/endpoints/post_work_orders_workorderid_attachments.json +41 -0
  295. package/dist/catalog-db/endpoints/post_work_orders_workorderid_notes.json +40 -0
  296. package/dist/catalog-db/endpoints/put_leases_renewal_pricings_bulk.json +58 -0
  297. package/dist/catalog-db/endpoints/put_units_pricing_matrices_bulk.json +58 -0
  298. package/dist/catalog-db/endpoints/put_units_pricing_matrices_bulk_async.json +46 -0
  299. package/dist/catalog-db/endpoints/put_units_unitid_pricing_matrices.json +66 -0
  300. package/dist/catalog-db/index.json +1894 -0
  301. package/dist/clients/appfolio-client.js +131 -0
  302. package/dist/clients/appfolio-db-client.js +186 -0
  303. package/dist/helpers/register-db-tools.js +27 -0
  304. package/dist/helpers/register-report-tools.js +27 -0
  305. package/dist/index.js +10 -0
  306. package/dist/server/appfolio-mcp-server.js +18 -0
  307. package/dist/tools/call-endpoint.js +109 -0
  308. package/dist/tools/describe-endpoint.js +63 -0
  309. package/dist/tools/describe-report.js +55 -0
  310. package/dist/tools/list-endpoints.js +90 -0
  311. package/dist/tools/list-reports.js +58 -0
  312. package/dist/tools/run-report.js +102 -0
  313. package/package.json +42 -0
@@ -0,0 +1,168 @@
1
+ {
2
+ "operationId": "get_unit_types",
3
+ "resource": "unit_types",
4
+ "name": "List All Unit Types",
5
+ "method": "GET",
6
+ "path": "/unit_types",
7
+ "description": "Returns all unit types that meet the filter criteria.",
8
+ "deprecated": false,
9
+ "writeOperation": false,
10
+ "pagination": true,
11
+ "queryFilters": [
12
+ {
13
+ "name": "filters[Id]",
14
+ "type": "string <uuid>",
15
+ "required": false,
16
+ "description": "Filter by unit type Id. All GET requests must include a filter for [Id] (if available), or [LastUpdatedAtFrom]."
17
+ },
18
+ {
19
+ "name": "filters[PropertyId]",
20
+ "type": "string <uuid>",
21
+ "required": false,
22
+ "description": "Filter by the unique identifier of the property associated with the unit type."
23
+ },
24
+ {
25
+ "name": "filters[LastUpdatedAtFrom]",
26
+ "type": "string <date-time>",
27
+ "required": false,
28
+ "description": "Filter unit types last updated at or after this date-time. All GET requests must include a filter for [Id] (if available), or [LastUpdatedAtFrom]."
29
+ },
30
+ {
31
+ "name": "page[number]",
32
+ "type": "integer",
33
+ "required": false,
34
+ "description": "Page number for pagination. Default is 1."
35
+ },
36
+ {
37
+ "name": "page[size]",
38
+ "type": "integer",
39
+ "required": false,
40
+ "description": "Page size for pagination. Default is 1000."
41
+ }
42
+ ],
43
+ "responseFields": [
44
+ {
45
+ "name": "data",
46
+ "type": "array",
47
+ "required": false,
48
+ "description": "Array of unit type objects."
49
+ },
50
+ {
51
+ "name": "data[].Id",
52
+ "type": "string <uuid>",
53
+ "required": false,
54
+ "description": "Unique identifier of the unit type."
55
+ },
56
+ {
57
+ "name": "data[].ApplicationFee",
58
+ "type": "number",
59
+ "required": false,
60
+ "description": "The application fee amount."
61
+ },
62
+ {
63
+ "name": "data[].Amenities",
64
+ "type": "Array of strings",
65
+ "required": false,
66
+ "description": "The amenities associated with the unit type. Amenity names are case-sensitive."
67
+ },
68
+ {
69
+ "name": "data[].Bathrooms",
70
+ "type": "number",
71
+ "required": false,
72
+ "description": "The number of bathrooms for this unit type."
73
+ },
74
+ {
75
+ "name": "data[].Bedrooms",
76
+ "type": "integer",
77
+ "required": false,
78
+ "description": "The number of bedrooms for this unit type."
79
+ },
80
+ {
81
+ "name": "data[].CatsAllowed",
82
+ "type": "string",
83
+ "required": false,
84
+ "description": "The unit type's cat policy. Valid values include \"Yes\", \"No\" or null. A null value indicates that the unit type may not have specified a policy for cats.",
85
+ "enum": ["Yes", "No"]
86
+ },
87
+ {
88
+ "name": "data[].Deposit",
89
+ "type": "number",
90
+ "required": false,
91
+ "description": "The security deposit amount."
92
+ },
93
+ {
94
+ "name": "data[].DogsAllowed",
95
+ "type": "string",
96
+ "required": false,
97
+ "description": "The unit type's dog policy.",
98
+ "enum": ["Large & Small", "Small Only", "No"]
99
+ },
100
+ {
101
+ "name": "data[].FutureMarketRent",
102
+ "type": "number",
103
+ "required": false,
104
+ "description": "The projected future market rent for the unit type."
105
+ },
106
+ {
107
+ "name": "data[].FutureMarketRentEffectiveOn",
108
+ "type": "string <date-time>",
109
+ "required": false,
110
+ "description": "The date when the future market rent becomes effective."
111
+ },
112
+ {
113
+ "name": "data[].MarketRent",
114
+ "type": "number",
115
+ "required": false,
116
+ "description": "The current market rent for the unit type."
117
+ },
118
+ {
119
+ "name": "data[].MarketingTitle",
120
+ "type": "string",
121
+ "required": false,
122
+ "description": "The title of the listing for syndication."
123
+ },
124
+ {
125
+ "name": "data[].MarketingDescription",
126
+ "type": "string",
127
+ "required": false,
128
+ "description": "A description of the listing for syndication."
129
+ },
130
+ {
131
+ "name": "data[].Name",
132
+ "type": "string",
133
+ "required": false,
134
+ "description": "The name of the unit type."
135
+ },
136
+ {
137
+ "name": "data[].SquareFeet",
138
+ "type": "number",
139
+ "required": false,
140
+ "description": "The size of the unit type in square feet."
141
+ },
142
+ {
143
+ "name": "data[].YouTubeURL",
144
+ "type": "string <uri>",
145
+ "required": false,
146
+ "description": "The URL of the YouTube video for the listing(s)."
147
+ },
148
+ {
149
+ "name": "data[].PropertyId",
150
+ "type": "string <uuid>",
151
+ "required": false,
152
+ "description": "Unique identifier of the property associated with the unit type."
153
+ },
154
+ {
155
+ "name": "data[].LastUpdatedAt",
156
+ "type": "string <date-time>",
157
+ "required": false,
158
+ "description": "The date the unit type was last updated."
159
+ },
160
+ {
161
+ "name": "next_page_path",
162
+ "type": "any",
163
+ "required": false,
164
+ "description": "The URL path to the next page of responses."
165
+ }
166
+ ],
167
+ "requestSample": "curl --location -g \\\n --request GET 'https://api.appfolio.com/api/v0/unit_types?filters[Id]=fabcde23-c543-456e-abc9-123456789cba&filters[PropertyId]=12bcde23-c543-456e-abc9-123456789cba&filters[LastUpdatedAtFrom]=2020-12-15T16:30:46Z' \\\n --header 'Authorization: Basic {Auth}' \\\n --header 'X-AppFolio-Developer-ID: a965e7d8-a17d-11ec-b909-0242ac120002'"
168
+ }
@@ -0,0 +1,359 @@
1
+ {
2
+ "operationId": "get_units",
3
+ "resource": "units",
4
+ "name": "List All Units",
5
+ "method": "GET",
6
+ "path": "/units",
7
+ "description": "Returns all units that meet the filter criteria",
8
+ "deprecated": false,
9
+ "writeOperation": false,
10
+ "pagination": true,
11
+ "queryFilters": [
12
+ {
13
+ "name": "filters[Id]",
14
+ "type": "string <uuid>",
15
+ "required": false,
16
+ "description": "Filter by unique identifier of the unit"
17
+ },
18
+ {
19
+ "name": "filters[PropertyId]",
20
+ "type": "string <uuid>",
21
+ "required": false,
22
+ "description": "Filter by unique identifier of the property associated with the unit"
23
+ },
24
+ {
25
+ "name": "filters[UnitGroupId]",
26
+ "type": "string <uuid>",
27
+ "required": false,
28
+ "description": "Filter by unique identifier of the unit group the unit is a part of"
29
+ },
30
+ {
31
+ "name": "filters[LeasingType]",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Filter results based on a single leasing type value. Enum: \"ConventionalUnit\" \"BedUnit\""
35
+ },
36
+ {
37
+ "name": "filters[LastUpdatedAtFrom]",
38
+ "type": "string <date-time>",
39
+ "required": false,
40
+ "description": "Filter units last updated at or after this date-time. All GET requests must include a filter for [Id] (if available) or [LastUpdatedAtFrom]."
41
+ }
42
+ ],
43
+ "responseFields": [
44
+ {
45
+ "name": "data",
46
+ "type": "array",
47
+ "required": false,
48
+ "description": "Array of unit objects"
49
+ },
50
+ {
51
+ "name": "data[].Id",
52
+ "type": "string <uuid>",
53
+ "required": false,
54
+ "description": "Unique identifier of the unit"
55
+ },
56
+ {
57
+ "name": "data[].Name",
58
+ "type": "string",
59
+ "required": false,
60
+ "description": "The unit name as displayed in the AppFolio Property Manager"
61
+ },
62
+ {
63
+ "name": "data[].Bathrooms",
64
+ "type": "string <decimal>",
65
+ "required": false,
66
+ "description": "The number of desired bathrooms"
67
+ },
68
+ {
69
+ "name": "data[].Bedrooms",
70
+ "type": "integer",
71
+ "required": false,
72
+ "description": "The number of desired bedrooms"
73
+ },
74
+ {
75
+ "name": "data[].CustomFields",
76
+ "type": "object",
77
+ "required": false,
78
+ "description": "The custom fields for the associated entity"
79
+ },
80
+ {
81
+ "name": "data[].SquareFeet",
82
+ "type": "string",
83
+ "required": false,
84
+ "description": "The size of the unit in square feet"
85
+ },
86
+ {
87
+ "name": "data[].ListedMarketRent",
88
+ "type": "string <decimal>",
89
+ "required": false,
90
+ "description": "The rent per month as listed on the market",
91
+ "deprecated": true
92
+ },
93
+ {
94
+ "name": "data[].ListedRent",
95
+ "type": "string <decimal>",
96
+ "required": false,
97
+ "description": "The rent per month as listed on the market. This value reflects either the market rent plus amenities fees or the advertised rent, depending on whether \"Use Market Rent On Ads\" is enabled in AppFolio Property Manager."
98
+ },
99
+ {
100
+ "name": "data[].MarketRent",
101
+ "type": "string <decimal>",
102
+ "required": false,
103
+ "description": "The unit's base market rent, representing its estimated fair market value based on current market conditions and comparable properties. This value may differ from ListedRent, as it does not include advertised adjustments or amenity fees."
104
+ },
105
+ {
106
+ "name": "data[].Status",
107
+ "type": "string",
108
+ "required": false,
109
+ "description": "The status of the unit. Enum: \"Occupied\" \"Vacant\" \"Vacant Rented\" \"Notice\" \"Notice Rented\""
110
+ },
111
+ {
112
+ "name": "data[].PropertyId",
113
+ "type": "string <uuid>",
114
+ "required": false,
115
+ "description": "Unique identifier of the property associated with the unit"
116
+ },
117
+ {
118
+ "name": "data[].CurrentOccupancyId",
119
+ "type": "string <uuid>",
120
+ "required": false,
121
+ "description": "Unique identifier of the current occupant of the unit"
122
+ },
123
+ {
124
+ "name": "data[].UnitGroupId",
125
+ "type": "string <uuid>",
126
+ "required": false,
127
+ "description": "Unique identifier of the unit group the unit is a part of"
128
+ },
129
+ {
130
+ "name": "data[].LeasingType",
131
+ "type": "string",
132
+ "required": false,
133
+ "description": "The type of lease for the unit. Enum: \"ConventionalUnit\" \"BedUnit\""
134
+ },
135
+ {
136
+ "name": "data[].Description",
137
+ "type": "string",
138
+ "required": false,
139
+ "description": "A brief, informative description of the unit"
140
+ },
141
+ {
142
+ "name": "data[].Address1",
143
+ "type": "string",
144
+ "required": false,
145
+ "description": "The primary street address of the unit"
146
+ },
147
+ {
148
+ "name": "data[].Address2",
149
+ "type": "string",
150
+ "required": false,
151
+ "description": "Additional street address information pertaining to the unit"
152
+ },
153
+ {
154
+ "name": "data[].City",
155
+ "type": "string",
156
+ "required": false,
157
+ "description": "The city where the unit is located"
158
+ },
159
+ {
160
+ "name": "data[].State",
161
+ "type": "string",
162
+ "required": false,
163
+ "description": "The state where the unit is located"
164
+ },
165
+ {
166
+ "name": "data[].Zip",
167
+ "type": "string",
168
+ "required": false,
169
+ "description": "The zip code where the unit is located"
170
+ },
171
+ {
172
+ "name": "data[].MaintenanceNotes",
173
+ "type": "string",
174
+ "required": false,
175
+ "description": "A brief informative message about the unit's maintenance"
176
+ },
177
+ {
178
+ "name": "data[].MarketingTitle",
179
+ "type": "string",
180
+ "required": false,
181
+ "description": "The title of the listing for syndication"
182
+ },
183
+ {
184
+ "name": "data[].MarketingDescription",
185
+ "type": "string",
186
+ "required": false,
187
+ "description": "A description of the listing for syndication"
188
+ },
189
+ {
190
+ "name": "data[].NonRevenue",
191
+ "type": "boolean",
192
+ "required": false,
193
+ "description": "Indicates whether or not the unit is rentable and is a model unit, office or other non revenue unit"
194
+ },
195
+ {
196
+ "name": "data[].ApplicationURL",
197
+ "type": "string",
198
+ "required": false,
199
+ "description": "The URL link(s) to the application page of the unit(s) accepting online applications"
200
+ },
201
+ {
202
+ "name": "data[].AppliancesIncluded",
203
+ "type": "Array of strings",
204
+ "required": false,
205
+ "description": "User-defined appliances that are included with the unit"
206
+ },
207
+ {
208
+ "name": "data[].AcceptingApplications",
209
+ "type": "boolean",
210
+ "required": false,
211
+ "description": "Indicates whether or not the unit is accepting applications"
212
+ },
213
+ {
214
+ "name": "data[].PostedToInternet",
215
+ "type": "boolean",
216
+ "required": false,
217
+ "description": "Indicates whether the unit has been posted to a third-party listings page."
218
+ },
219
+ {
220
+ "name": "data[].PostedToWebsite",
221
+ "type": "boolean",
222
+ "required": false,
223
+ "description": "Indicates whether a vacant unit was posted to the AppFolio listings page."
224
+ },
225
+ {
226
+ "name": "data[].YouTubeURL",
227
+ "type": "string <uri>",
228
+ "required": false,
229
+ "description": "The URL of the YouTube video for the listing(s)"
230
+ },
231
+ {
232
+ "name": "data[].Link",
233
+ "type": "string <uri>",
234
+ "required": false,
235
+ "description": "A link to the unit page in the AppFolio Property Manager"
236
+ },
237
+ {
238
+ "name": "data[].Deposit",
239
+ "type": "string",
240
+ "required": false,
241
+ "description": "The security deposit amount"
242
+ },
243
+ {
244
+ "name": "data[].CatsAllowed",
245
+ "type": "string",
246
+ "required": false,
247
+ "description": "The unit's cat policy. Enum: \"Yes\" \"No\" or null"
248
+ },
249
+ {
250
+ "name": "data[].DogsAllowed",
251
+ "type": "string",
252
+ "required": false,
253
+ "description": "The unit's dog policy. Enum: \"Large & Small\" \"Small Only\" \"No\" or null"
254
+ },
255
+ {
256
+ "name": "data[].Tags",
257
+ "type": "Array of strings",
258
+ "required": false,
259
+ "description": "User-defined tag(s) that categorize the unit"
260
+ },
261
+ {
262
+ "name": "data[].UnitType",
263
+ "type": "string",
264
+ "required": false,
265
+ "description": "The floor plan of the unit"
266
+ },
267
+ {
268
+ "name": "data[].UnitTypeId",
269
+ "type": "string <uuid>",
270
+ "required": false,
271
+ "description": "Unique identifier of the floor plan associated with the unit"
272
+ },
273
+ {
274
+ "name": "data[].UtilitiesIncluded",
275
+ "type": "Array of strings",
276
+ "required": false,
277
+ "description": "User-defined utilities that are included with the unit"
278
+ },
279
+ {
280
+ "name": "data[].CreatedAt",
281
+ "type": "string",
282
+ "required": false,
283
+ "description": "When the unit was created in the AppFolio Property Manager"
284
+ },
285
+ {
286
+ "name": "data[].RentStatus",
287
+ "type": "null or string",
288
+ "required": false,
289
+ "description": "Status / type of rent control. Enum: null \"RentControlled\" \"RentStabilized\" \"Decontrolled\""
290
+ },
291
+ {
292
+ "name": "data[].ApplicationFee",
293
+ "type": "string",
294
+ "required": false,
295
+ "description": "The application fee amount"
296
+ },
297
+ {
298
+ "name": "data[].Amenities",
299
+ "type": "Array of objects",
300
+ "required": false,
301
+ "description": "Array containing a unit's amenities"
302
+ },
303
+ {
304
+ "name": "data[].HvacFilters",
305
+ "type": "Array of objects",
306
+ "required": false,
307
+ "description": "Array containing a unit's HVAC filters"
308
+ },
309
+ {
310
+ "name": "data[].HvacDetail",
311
+ "type": "object",
312
+ "required": false,
313
+ "description": "The HVAC details of the unit"
314
+ },
315
+ {
316
+ "name": "data[].RentReady",
317
+ "type": "boolean",
318
+ "required": false,
319
+ "description": "Indicates whether or not the unit is ready to be occupied by a tenant"
320
+ },
321
+ {
322
+ "name": "data[].AvailableOn",
323
+ "type": "string <date>",
324
+ "required": false,
325
+ "description": "The date upon which the unit can be leased"
326
+ },
327
+ {
328
+ "name": "data[].LastInspectedDate",
329
+ "type": "string <date>",
330
+ "required": false,
331
+ "description": "The date the unit was last inspected"
332
+ },
333
+ {
334
+ "name": "data[].ReadyForShowingOn",
335
+ "type": "string <date>",
336
+ "required": false,
337
+ "description": "The date upon which the unit is ready for showing"
338
+ },
339
+ {
340
+ "name": "data[].HiddenAt",
341
+ "type": "string <date-time>",
342
+ "required": false,
343
+ "description": "When the property was marked inactive state by an AppFolio Property Manager user"
344
+ },
345
+ {
346
+ "name": "data[].LastUpdatedAt",
347
+ "type": "string <date-time>",
348
+ "required": false,
349
+ "description": "The date the unit's details were last updated"
350
+ },
351
+ {
352
+ "name": "next_page_path",
353
+ "type": "any",
354
+ "required": false,
355
+ "description": "The URL path to the next page of responses"
356
+ }
357
+ ],
358
+ "requestSample": "curl --location -g \\\n --request GET 'https://api.appfolio.com/api/v0/units?filters[Id]=1abcde23-c543-456e-abc9-123456789cba&filters[PropertyId]=1abcde23-c543-456e-abc9-123456789cee,1abcde23-c543-456e-abc9-123456789cbb&filters[UnitGroupId]=abcdef23-c543-456e-abc9-123456789cba&filters[LeasingType]=BedUnit&filters[LastUpdatedAtFrom]=2020-12-15T16:30:46Z' \\\n --header 'Authorization: Basic {Auth}' \\\n --header 'X-AppFolio-Developer-ID: a965e7d8-a17d-11ec-b909-0242ac120002'"
359
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "operationId": "get_units_attachments",
3
+ "resource": "units",
4
+ "name": "List All Unit Attachments",
5
+ "method": "GET",
6
+ "path": "/units/attachments",
7
+ "description": "Returns all attachments associated with a unit",
8
+ "deprecated": false,
9
+ "writeOperation": false,
10
+ "pagination": true,
11
+ "queryFilters": [
12
+ {
13
+ "name": "filters[UnitId]",
14
+ "type": "string <uuid>",
15
+ "required": false,
16
+ "description": "Filter by unit ID. All GET requests must include a filter for [UnitId] or [CreatedAtFrom]."
17
+ },
18
+ {
19
+ "name": "filters[CreatedAtFrom]",
20
+ "type": "string <date-time>",
21
+ "required": false,
22
+ "description": "Filter by creation date from. All GET requests must include a filter for [UnitId] or [CreatedAtFrom]."
23
+ }
24
+ ],
25
+ "responseFields": [
26
+ {
27
+ "name": "data",
28
+ "type": "array",
29
+ "required": false,
30
+ "description": "Array of unit attachment objects"
31
+ },
32
+ {
33
+ "name": "data[].Id",
34
+ "type": "string <uuid>",
35
+ "required": false,
36
+ "description": "Unique identifier of the attachment"
37
+ },
38
+ {
39
+ "name": "data[].Name",
40
+ "type": "string",
41
+ "required": false,
42
+ "description": "The name given to describe the attachment"
43
+ },
44
+ {
45
+ "name": "data[].ContentType",
46
+ "type": "string",
47
+ "required": false,
48
+ "description": "The content type of the unit attachment. An example content type is a photo or a PDF."
49
+ },
50
+ {
51
+ "name": "data[].CreatedAt",
52
+ "type": "string <date-time>",
53
+ "required": false,
54
+ "description": "The date and time the unit attachment was created by an AppFolio Property Manager user"
55
+ },
56
+ {
57
+ "name": "data[].EntityId",
58
+ "type": "string <uuid>",
59
+ "required": false,
60
+ "description": "Unique identifier of the unit associated with the attachment"
61
+ },
62
+ {
63
+ "name": "data[].URL",
64
+ "type": "string",
65
+ "required": false,
66
+ "description": "The link to download the file in the attachment"
67
+ },
68
+ {
69
+ "name": "next_page_path",
70
+ "type": "any",
71
+ "required": false,
72
+ "description": "The URL path to the next page of responses"
73
+ }
74
+ ],
75
+ "requestSample": "curl --location -g \\\n --request GET 'https://api.appfolio.com/api/v0/units/attachments?page[size]=10&page[number]=2&filters[UnitId]=1abcde23-c543-456e-abc9-123456789cba&filters[CreatedAtFrom]=2020-12-14T16:30:46Z' \\\n --header 'Authorization: Basic {Auth}' \\\n --header 'X-AppFolio-Developer-ID: a965e7d8-a17d-11ec-b909-0242ac120002'"
76
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "operationId": "get_units_notes",
3
+ "resource": "units",
4
+ "name": "List All Units Notes",
5
+ "method": "GET",
6
+ "path": "/units/notes",
7
+ "description": "Returns all notes for a unit that meet the filter criteria",
8
+ "deprecated": false,
9
+ "writeOperation": false,
10
+ "pagination": true,
11
+ "queryFilters": [
12
+ {
13
+ "name": "filters[UnitId]",
14
+ "type": "string <uuid>",
15
+ "required": false,
16
+ "description": "Filter by unit ID. All GET requests must include a filter for [UnitId] or [LastUpdatedAtFrom]."
17
+ },
18
+ {
19
+ "name": "filters[LastUpdatedAtFrom]",
20
+ "type": "string <date-time>",
21
+ "required": false,
22
+ "description": "Filter by last updated date from. All GET requests must include a filter for [UnitId] or [LastUpdatedAtFrom]."
23
+ }
24
+ ],
25
+ "responseFields": [
26
+ {
27
+ "name": "data",
28
+ "type": "array",
29
+ "required": false,
30
+ "description": "Array of unit note objects"
31
+ },
32
+ {
33
+ "name": "data[].Body",
34
+ "type": "string",
35
+ "required": false,
36
+ "description": "A brief informative message about the unit note. A unit note cannot exceed 63,535 characters."
37
+ },
38
+ {
39
+ "name": "data[].EntityId",
40
+ "type": "string <uuid>",
41
+ "required": false,
42
+ "description": "The unit to which the note will be attached"
43
+ },
44
+ {
45
+ "name": "data[].LastUpdatedAt",
46
+ "type": "string",
47
+ "required": false,
48
+ "description": "The date the unit note's details were last updated"
49
+ },
50
+ {
51
+ "name": "data[].Id",
52
+ "type": "string <uuid>",
53
+ "required": false,
54
+ "description": "Unique identifier of the note associated with the unit"
55
+ },
56
+ {
57
+ "name": "data[].NoteId",
58
+ "type": "string <uuid>",
59
+ "required": false,
60
+ "description": "Unique identifier of the note associated with the unit. Deprecated in favor of Id.",
61
+ "deprecated": true
62
+ },
63
+ {
64
+ "name": "next_page_path",
65
+ "type": "any",
66
+ "required": false,
67
+ "description": "The URL path to the next page of responses"
68
+ }
69
+ ],
70
+ "requestSample": "curl --location -g \\\n --request GET 'https://api.appfolio.com/api/v0/units/notes?filters[UnitId]=1abcde23-c543-456e-abc9-123456789cba&filters[LastUpdatedAtFrom]=2020-12-15T16:30:46Z' \\\n --header 'Authorization: Basic {Auth}' \\\n --header 'X-AppFolio-Developer-ID: a965e7d8-a17d-11ec-b909-0242ac120002'"
71
+ }