@nightsquawktech/invoiceninja-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 (393) hide show
  1. package/COMMERCIAL.md +35 -0
  2. package/LICENSE +661 -0
  3. package/README.md +128 -0
  4. package/dist/catalog/endpoint-spec.js +36 -0
  5. package/dist/catalog/endpoints/action_invoice.json +41 -0
  6. package/dist/catalog/endpoints/action_payment.json +41 -0
  7. package/dist/catalog/endpoints/action_purchase_order.json +41 -0
  8. package/dist/catalog/endpoints/action_quote.json +41 -0
  9. package/dist/catalog/endpoints/action_recurring_invoice.json +41 -0
  10. package/dist/catalog/endpoints/action_recurring_quote.json +41 -0
  11. package/dist/catalog/endpoints/bulk_bank_integrations.json +26 -0
  12. package/dist/catalog/endpoints/bulk_bank_transaction_rules.json +26 -0
  13. package/dist/catalog/endpoints/bulk_bank_transactions.json +26 -0
  14. package/dist/catalog/endpoints/bulk_clients.json +46 -0
  15. package/dist/catalog/endpoints/bulk_company_gateways.json +27 -0
  16. package/dist/catalog/endpoints/bulk_credits.json +26 -0
  17. package/dist/catalog/endpoints/bulk_designs.json +27 -0
  18. package/dist/catalog/endpoints/bulk_expense_categorys.json +27 -0
  19. package/dist/catalog/endpoints/bulk_expenses.json +27 -0
  20. package/dist/catalog/endpoints/bulk_group_settings.json +26 -0
  21. package/dist/catalog/endpoints/bulk_invoices.json +44 -0
  22. package/dist/catalog/endpoints/bulk_locations.json +40 -0
  23. package/dist/catalog/endpoints/bulk_payment_terms.json +27 -0
  24. package/dist/catalog/endpoints/bulk_payments.json +27 -0
  25. package/dist/catalog/endpoints/bulk_products.json +46 -0
  26. package/dist/catalog/endpoints/bulk_projects.json +27 -0
  27. package/dist/catalog/endpoints/bulk_purchase_orderss.json +26 -0
  28. package/dist/catalog/endpoints/bulk_quotes.json +39 -0
  29. package/dist/catalog/endpoints/bulk_recurring_expenses.json +27 -0
  30. package/dist/catalog/endpoints/bulk_recurring_invoices.json +39 -0
  31. package/dist/catalog/endpoints/bulk_recurring_quotes.json +27 -0
  32. package/dist/catalog/endpoints/bulk_subscriptions.json +27 -0
  33. package/dist/catalog/endpoints/bulk_tags.json +51 -0
  34. package/dist/catalog/endpoints/bulk_task_scheduler_actions.json +27 -0
  35. package/dist/catalog/endpoints/bulk_task_statuss.json +27 -0
  36. package/dist/catalog/endpoints/bulk_tasks.json +27 -0
  37. package/dist/catalog/endpoints/bulk_tax_rates.json +27 -0
  38. package/dist/catalog/endpoints/bulk_tokens.json +27 -0
  39. package/dist/catalog/endpoints/bulk_users.json +27 -0
  40. package/dist/catalog/endpoints/bulk_vendors.json +27 -0
  41. package/dist/catalog/endpoints/bulk_webhooks.json +27 -0
  42. package/dist/catalog/endpoints/client_statement.json +77 -0
  43. package/dist/catalog/endpoints/confirm_apple_purchase.json +23 -0
  44. package/dist/catalog/endpoints/create_task_scheduler.json +81 -0
  45. package/dist/catalog/endpoints/delete_bank_integration.json +32 -0
  46. package/dist/catalog/endpoints/delete_bank_transaction.json +32 -0
  47. package/dist/catalog/endpoints/delete_bank_transaction_rule.json +32 -0
  48. package/dist/catalog/endpoints/delete_client.json +38 -0
  49. package/dist/catalog/endpoints/delete_client_gateway_token.json +32 -0
  50. package/dist/catalog/endpoints/delete_company.json +32 -0
  51. package/dist/catalog/endpoints/delete_company_gateway.json +32 -0
  52. package/dist/catalog/endpoints/delete_credit.json +32 -0
  53. package/dist/catalog/endpoints/delete_design.json +32 -0
  54. package/dist/catalog/endpoints/delete_expense.json +32 -0
  55. package/dist/catalog/endpoints/delete_expense_category.json +24 -0
  56. package/dist/catalog/endpoints/delete_group_setting.json +32 -0
  57. package/dist/catalog/endpoints/delete_invoice.json +32 -0
  58. package/dist/catalog/endpoints/delete_location.json +24 -0
  59. package/dist/catalog/endpoints/delete_payment.json +32 -0
  60. package/dist/catalog/endpoints/delete_payment_term.json +32 -0
  61. package/dist/catalog/endpoints/delete_product.json +32 -0
  62. package/dist/catalog/endpoints/delete_project.json +32 -0
  63. package/dist/catalog/endpoints/delete_purchase_order.json +32 -0
  64. package/dist/catalog/endpoints/delete_quote.json +32 -0
  65. package/dist/catalog/endpoints/delete_recurring_expense.json +32 -0
  66. package/dist/catalog/endpoints/delete_recurring_invoice.json +32 -0
  67. package/dist/catalog/endpoints/delete_recurring_quote.json +32 -0
  68. package/dist/catalog/endpoints/delete_settings_passkey.json +22 -0
  69. package/dist/catalog/endpoints/delete_subscription.json +32 -0
  70. package/dist/catalog/endpoints/delete_tag.json +24 -0
  71. package/dist/catalog/endpoints/delete_task.json +32 -0
  72. package/dist/catalog/endpoints/delete_task_status.json +32 -0
  73. package/dist/catalog/endpoints/delete_tax_rate.json +24 -0
  74. package/dist/catalog/endpoints/delete_token.json +32 -0
  75. package/dist/catalog/endpoints/delete_user.json +40 -0
  76. package/dist/catalog/endpoints/delete_vendor.json +32 -0
  77. package/dist/catalog/endpoints/delete_webhook.json +32 -0
  78. package/dist/catalog/endpoints/destroy_task_scheduler.json +24 -0
  79. package/dist/catalog/endpoints/detach_user.json +32 -0
  80. package/dist/catalog/endpoints/download_credit.json +32 -0
  81. package/dist/catalog/endpoints/download_invoice_by_invitation.json +32 -0
  82. package/dist/catalog/endpoints/download_purchase_order.json +32 -0
  83. package/dist/catalog/endpoints/download_quote.json +32 -0
  84. package/dist/catalog/endpoints/download_recurring_invoice.json +32 -0
  85. package/dist/catalog/endpoints/edit_bank_integration.json +33 -0
  86. package/dist/catalog/endpoints/edit_bank_transaction.json +33 -0
  87. package/dist/catalog/endpoints/edit_bank_transaction_rule.json +33 -0
  88. package/dist/catalog/endpoints/edit_client.json +39 -0
  89. package/dist/catalog/endpoints/edit_client_gateway_token.json +33 -0
  90. package/dist/catalog/endpoints/edit_company.json +33 -0
  91. package/dist/catalog/endpoints/edit_company_gateway.json +33 -0
  92. package/dist/catalog/endpoints/edit_credit.json +33 -0
  93. package/dist/catalog/endpoints/edit_design.json +33 -0
  94. package/dist/catalog/endpoints/edit_expense.json +33 -0
  95. package/dist/catalog/endpoints/edit_expense_category.json +25 -0
  96. package/dist/catalog/endpoints/edit_group_setting.json +33 -0
  97. package/dist/catalog/endpoints/edit_invoice.json +33 -0
  98. package/dist/catalog/endpoints/edit_payment.json +33 -0
  99. package/dist/catalog/endpoints/edit_payment_terms.json +33 -0
  100. package/dist/catalog/endpoints/edit_product.json +33 -0
  101. package/dist/catalog/endpoints/edit_project.json +33 -0
  102. package/dist/catalog/endpoints/edit_purchase_order.json +33 -0
  103. package/dist/catalog/endpoints/edit_quote.json +33 -0
  104. package/dist/catalog/endpoints/edit_recurring_expense.json +33 -0
  105. package/dist/catalog/endpoints/edit_recurring_invoice.json +33 -0
  106. package/dist/catalog/endpoints/edit_recurring_quote.json +33 -0
  107. package/dist/catalog/endpoints/edit_subscription.json +33 -0
  108. package/dist/catalog/endpoints/edit_tag.json +24 -0
  109. package/dist/catalog/endpoints/edit_task.json +33 -0
  110. package/dist/catalog/endpoints/edit_task_statuss.json +33 -0
  111. package/dist/catalog/endpoints/edit_tax_rate.json +25 -0
  112. package/dist/catalog/endpoints/edit_token.json +33 -0
  113. package/dist/catalog/endpoints/edit_user.json +33 -0
  114. package/dist/catalog/endpoints/edit_vendor.json +33 -0
  115. package/dist/catalog/endpoints/edit_webhook.json +33 -0
  116. package/dist/catalog/endpoints/get_account_transactions.json +24 -0
  117. package/dist/catalog/endpoints/get_activities.json +44 -0
  118. package/dist/catalog/endpoints/get_activity_historical_entity_pdf.json +31 -0
  119. package/dist/catalog/endpoints/get_activity_report.json +49 -0
  120. package/dist/catalog/endpoints/get_ardetail_report.json +49 -0
  121. package/dist/catalog/endpoints/get_arsummary_report.json +49 -0
  122. package/dist/catalog/endpoints/get_bank_integrations.json +61 -0
  123. package/dist/catalog/endpoints/get_bank_integrations_create.json +24 -0
  124. package/dist/catalog/endpoints/get_bank_transaction_rules.json +62 -0
  125. package/dist/catalog/endpoints/get_bank_transaction_rules_create.json +24 -0
  126. package/dist/catalog/endpoints/get_bank_transactions.json +63 -0
  127. package/dist/catalog/endpoints/get_bank_transactions_create.json +24 -0
  128. package/dist/catalog/endpoints/get_chart_calculated_fields.json +18 -0
  129. package/dist/catalog/endpoints/get_chart_summary_v2.json +18 -0
  130. package/dist/catalog/endpoints/get_chart_totals.json +38 -0
  131. package/dist/catalog/endpoints/get_chart_totals_v2.json +18 -0
  132. package/dist/catalog/endpoints/get_claim_license.json +32 -0
  133. package/dist/catalog/endpoints/get_client_balance_report.json +49 -0
  134. package/dist/catalog/endpoints/get_client_contact_report.json +49 -0
  135. package/dist/catalog/endpoints/get_client_gateway_tokens.json +45 -0
  136. package/dist/catalog/endpoints/get_client_gateway_tokens_create.json +24 -0
  137. package/dist/catalog/endpoints/get_client_report.json +64 -0
  138. package/dist/catalog/endpoints/get_client_sales_report.json +49 -0
  139. package/dist/catalog/endpoints/get_clients.json +152 -0
  140. package/dist/catalog/endpoints/get_clients_create.json +30 -0
  141. package/dist/catalog/endpoints/get_companies.json +38 -0
  142. package/dist/catalog/endpoints/get_companies_create.json +24 -0
  143. package/dist/catalog/endpoints/get_company_gateways.json +47 -0
  144. package/dist/catalog/endpoints/get_company_gateways_create.json +24 -0
  145. package/dist/catalog/endpoints/get_company_ledger.json +24 -0
  146. package/dist/catalog/endpoints/get_contact_report.json +64 -0
  147. package/dist/catalog/endpoints/get_credit_report.json +49 -0
  148. package/dist/catalog/endpoints/get_credits.json +55 -0
  149. package/dist/catalog/endpoints/get_credits_create.json +24 -0
  150. package/dist/catalog/endpoints/get_designs.json +54 -0
  151. package/dist/catalog/endpoints/get_designs_create.json +24 -0
  152. package/dist/catalog/endpoints/get_document_report.json +64 -0
  153. package/dist/catalog/endpoints/get_documents.json +54 -0
  154. package/dist/catalog/endpoints/get_expense_category_create.json +16 -0
  155. package/dist/catalog/endpoints/get_expense_categorys.json +47 -0
  156. package/dist/catalog/endpoints/get_expense_report.json +49 -0
  157. package/dist/catalog/endpoints/get_expenses.json +55 -0
  158. package/dist/catalog/endpoints/get_expenses_create.json +24 -0
  159. package/dist/catalog/endpoints/get_export.json +15 -0
  160. package/dist/catalog/endpoints/get_export_preview.json +25 -0
  161. package/dist/catalog/endpoints/get_group_settings.json +47 -0
  162. package/dist/catalog/endpoints/get_group_settings_create.json +24 -0
  163. package/dist/catalog/endpoints/get_health_check.json +15 -0
  164. package/dist/catalog/endpoints/get_import_json.json +15 -0
  165. package/dist/catalog/endpoints/get_invoice_create.json +16 -0
  166. package/dist/catalog/endpoints/get_invoice_delivery_note.json +32 -0
  167. package/dist/catalog/endpoints/get_invoice_item_report.json +64 -0
  168. package/dist/catalog/endpoints/get_invoice_report.json +64 -0
  169. package/dist/catalog/endpoints/get_invoices.json +174 -0
  170. package/dist/catalog/endpoints/get_last_error.json +15 -0
  171. package/dist/catalog/endpoints/get_locations.json +54 -0
  172. package/dist/catalog/endpoints/get_locations_create.json +24 -0
  173. package/dist/catalog/endpoints/get_logout.json +30 -0
  174. package/dist/catalog/endpoints/get_payment_report.json +64 -0
  175. package/dist/catalog/endpoints/get_payment_terms.json +54 -0
  176. package/dist/catalog/endpoints/get_payment_terms_create.json +24 -0
  177. package/dist/catalog/endpoints/get_payments.json +118 -0
  178. package/dist/catalog/endpoints/get_payments_create.json +24 -0
  179. package/dist/catalog/endpoints/get_ping.json +15 -0
  180. package/dist/catalog/endpoints/get_preview.json +15 -0
  181. package/dist/catalog/endpoints/get_preview_purchase_order.json +15 -0
  182. package/dist/catalog/endpoints/get_product_report.json +64 -0
  183. package/dist/catalog/endpoints/get_product_sales_report.json +64 -0
  184. package/dist/catalog/endpoints/get_products.json +118 -0
  185. package/dist/catalog/endpoints/get_products_create.json +24 -0
  186. package/dist/catalog/endpoints/get_profit_loss_report.json +64 -0
  187. package/dist/catalog/endpoints/get_project_report.json +49 -0
  188. package/dist/catalog/endpoints/get_projects.json +55 -0
  189. package/dist/catalog/endpoints/get_projects_create.json +24 -0
  190. package/dist/catalog/endpoints/get_purchase_order_create.json +24 -0
  191. package/dist/catalog/endpoints/get_purchase_orders.json +55 -0
  192. package/dist/catalog/endpoints/get_quote_item_report.json +64 -0
  193. package/dist/catalog/endpoints/get_quote_report.json +64 -0
  194. package/dist/catalog/endpoints/get_quotes.json +125 -0
  195. package/dist/catalog/endpoints/get_quotes_create.json +24 -0
  196. package/dist/catalog/endpoints/get_recurring_expenses.json +54 -0
  197. package/dist/catalog/endpoints/get_recurring_expenses_create.json +24 -0
  198. package/dist/catalog/endpoints/get_recurring_invoice_report.json +64 -0
  199. package/dist/catalog/endpoints/get_recurring_invoices.json +139 -0
  200. package/dist/catalog/endpoints/get_recurring_invoices_create.json +24 -0
  201. package/dist/catalog/endpoints/get_recurring_quotes.json +47 -0
  202. package/dist/catalog/endpoints/get_recurring_quotes_create.json +24 -0
  203. package/dist/catalog/endpoints/get_refresh_accounts.json +24 -0
  204. package/dist/catalog/endpoints/get_remove_account.json +24 -0
  205. package/dist/catalog/endpoints/get_report_preview.json +25 -0
  206. package/dist/catalog/endpoints/get_scheduler.json +15 -0
  207. package/dist/catalog/endpoints/get_settings_passkeys.json +15 -0
  208. package/dist/catalog/endpoints/get_show_template.json +47 -0
  209. package/dist/catalog/endpoints/get_statics.json +23 -0
  210. package/dist/catalog/endpoints/get_subscriptions.json +47 -0
  211. package/dist/catalog/endpoints/get_subscriptions_create.json +24 -0
  212. package/dist/catalog/endpoints/get_system_logs.json +47 -0
  213. package/dist/catalog/endpoints/get_tags.json +63 -0
  214. package/dist/catalog/endpoints/get_tags_create.json +16 -0
  215. package/dist/catalog/endpoints/get_task_report.json +64 -0
  216. package/dist/catalog/endpoints/get_task_scheduler.json +38 -0
  217. package/dist/catalog/endpoints/get_task_schedulers.json +15 -0
  218. package/dist/catalog/endpoints/get_task_statuses.json +54 -0
  219. package/dist/catalog/endpoints/get_task_statuss_create.json +24 -0
  220. package/dist/catalog/endpoints/get_tasks.json +55 -0
  221. package/dist/catalog/endpoints/get_tasks_create.json +24 -0
  222. package/dist/catalog/endpoints/get_tax_period_report.json +49 -0
  223. package/dist/catalog/endpoints/get_tax_rate_create.json +16 -0
  224. package/dist/catalog/endpoints/get_tax_rates.json +47 -0
  225. package/dist/catalog/endpoints/get_tax_summary_report.json +49 -0
  226. package/dist/catalog/endpoints/get_template_preview.json +25 -0
  227. package/dist/catalog/endpoints/get_tokens.json +54 -0
  228. package/dist/catalog/endpoints/get_tokens_create.json +24 -0
  229. package/dist/catalog/endpoints/get_user_sales_report.json +49 -0
  230. package/dist/catalog/endpoints/get_users.json +48 -0
  231. package/dist/catalog/endpoints/get_users_create.json +24 -0
  232. package/dist/catalog/endpoints/get_vendors.json +55 -0
  233. package/dist/catalog/endpoints/get_vendors_create.json +24 -0
  234. package/dist/catalog/endpoints/get_webcron.json +15 -0
  235. package/dist/catalog/endpoints/get_webhooks.json +54 -0
  236. package/dist/catalog/endpoints/get_webhooks_create.json +24 -0
  237. package/dist/catalog/endpoints/invite_user.json +32 -0
  238. package/dist/catalog/endpoints/invite_user_reconfirm.json +32 -0
  239. package/dist/catalog/endpoints/match_bank_transactions.json +26 -0
  240. package/dist/catalog/endpoints/merge_client.json +54 -0
  241. package/dist/catalog/endpoints/post_activities_entity.json +18 -0
  242. package/dist/catalog/endpoints/post_activities_notes.json +18 -0
  243. package/dist/catalog/endpoints/post_connected_account.json +38 -0
  244. package/dist/catalog/endpoints/post_import.json +51 -0
  245. package/dist/catalog/endpoints/post_login.json +79 -0
  246. package/dist/catalog/endpoints/post_one_time_token.json +15 -0
  247. package/dist/catalog/endpoints/post_passkey_login_options.json +24 -0
  248. package/dist/catalog/endpoints/post_purge_company.json +24 -0
  249. package/dist/catalog/endpoints/post_purge_company_save_settings.json +24 -0
  250. package/dist/catalog/endpoints/post_refresh.json +46 -0
  251. package/dist/catalog/endpoints/post_search.json +18 -0
  252. package/dist/catalog/endpoints/post_settings_passkeys.json +34 -0
  253. package/dist/catalog/endpoints/post_settings_passkeys_options.json +15 -0
  254. package/dist/catalog/endpoints/post_start_migration.json +31 -0
  255. package/dist/catalog/endpoints/postmark_webhook.json +24 -0
  256. package/dist/catalog/endpoints/preimport.json +69 -0
  257. package/dist/catalog/endpoints/process_apple_webhook.json +23 -0
  258. package/dist/catalog/endpoints/purge_client.json +32 -0
  259. package/dist/catalog/endpoints/reactivate_email.json +38 -0
  260. package/dist/catalog/endpoints/self_update.json +31 -0
  261. package/dist/catalog/endpoints/self_update_check_version.json +15 -0
  262. package/dist/catalog/endpoints/send_email_template.json +73 -0
  263. package/dist/catalog/endpoints/set_default_company.json +33 -0
  264. package/dist/catalog/endpoints/show_bank_integration.json +33 -0
  265. package/dist/catalog/endpoints/show_bank_transaction.json +33 -0
  266. package/dist/catalog/endpoints/show_bank_transaction_rule.json +33 -0
  267. package/dist/catalog/endpoints/show_client.json +39 -0
  268. package/dist/catalog/endpoints/show_client_gateway_token.json +33 -0
  269. package/dist/catalog/endpoints/show_company.json +33 -0
  270. package/dist/catalog/endpoints/show_company_gateway.json +33 -0
  271. package/dist/catalog/endpoints/show_credit.json +33 -0
  272. package/dist/catalog/endpoints/show_current_company.json +24 -0
  273. package/dist/catalog/endpoints/show_design.json +33 -0
  274. package/dist/catalog/endpoints/show_expense.json +33 -0
  275. package/dist/catalog/endpoints/show_expense_category.json +25 -0
  276. package/dist/catalog/endpoints/show_group_setting.json +33 -0
  277. package/dist/catalog/endpoints/show_invoice.json +33 -0
  278. package/dist/catalog/endpoints/show_location.json +33 -0
  279. package/dist/catalog/endpoints/show_payment.json +33 -0
  280. package/dist/catalog/endpoints/show_payment_term.json +33 -0
  281. package/dist/catalog/endpoints/show_product.json +33 -0
  282. package/dist/catalog/endpoints/show_project.json +33 -0
  283. package/dist/catalog/endpoints/show_purchase_order.json +33 -0
  284. package/dist/catalog/endpoints/show_quote.json +33 -0
  285. package/dist/catalog/endpoints/show_recurring_expense.json +33 -0
  286. package/dist/catalog/endpoints/show_recurring_invoice.json +33 -0
  287. package/dist/catalog/endpoints/show_recurring_quote.json +33 -0
  288. package/dist/catalog/endpoints/show_subscription.json +33 -0
  289. package/dist/catalog/endpoints/show_system_logs.json +33 -0
  290. package/dist/catalog/endpoints/show_tag.json +24 -0
  291. package/dist/catalog/endpoints/show_task.json +33 -0
  292. package/dist/catalog/endpoints/show_task_scheduler.json +24 -0
  293. package/dist/catalog/endpoints/show_task_status.json +33 -0
  294. package/dist/catalog/endpoints/show_tax_rate.json +25 -0
  295. package/dist/catalog/endpoints/show_token.json +33 -0
  296. package/dist/catalog/endpoints/show_user.json +33 -0
  297. package/dist/catalog/endpoints/show_vendor.json +33 -0
  298. package/dist/catalog/endpoints/show_webhook.json +33 -0
  299. package/dist/catalog/endpoints/sort_tasks.json +46 -0
  300. package/dist/catalog/endpoints/store_bank_integration.json +24 -0
  301. package/dist/catalog/endpoints/store_bank_transaction.json +24 -0
  302. package/dist/catalog/endpoints/store_bank_transaction_rule.json +24 -0
  303. package/dist/catalog/endpoints/store_client.json +237 -0
  304. package/dist/catalog/endpoints/store_client_gateway_token.json +24 -0
  305. package/dist/catalog/endpoints/store_company.json +24 -0
  306. package/dist/catalog/endpoints/store_company_gateway.json +24 -0
  307. package/dist/catalog/endpoints/store_credit.json +251 -0
  308. package/dist/catalog/endpoints/store_design.json +24 -0
  309. package/dist/catalog/endpoints/store_expense.json +24 -0
  310. package/dist/catalog/endpoints/store_expense_category.json +24 -0
  311. package/dist/catalog/endpoints/store_group_setting.json +24 -0
  312. package/dist/catalog/endpoints/store_invoice.json +257 -0
  313. package/dist/catalog/endpoints/store_location.json +119 -0
  314. package/dist/catalog/endpoints/store_payment.json +140 -0
  315. package/dist/catalog/endpoints/store_payment_term.json +59 -0
  316. package/dist/catalog/endpoints/store_product.json +179 -0
  317. package/dist/catalog/endpoints/store_project.json +113 -0
  318. package/dist/catalog/endpoints/store_purchase_order.json +89 -0
  319. package/dist/catalog/endpoints/store_quote.json +89 -0
  320. package/dist/catalog/endpoints/store_recurring_expense.json +24 -0
  321. package/dist/catalog/endpoints/store_recurring_invoice.json +101 -0
  322. package/dist/catalog/endpoints/store_recurring_quote.json +24 -0
  323. package/dist/catalog/endpoints/store_refund.json +235 -0
  324. package/dist/catalog/endpoints/store_subscription.json +24 -0
  325. package/dist/catalog/endpoints/store_tag.json +43 -0
  326. package/dist/catalog/endpoints/store_task.json +113 -0
  327. package/dist/catalog/endpoints/store_task_status.json +77 -0
  328. package/dist/catalog/endpoints/store_token.json +24 -0
  329. package/dist/catalog/endpoints/store_user.json +24 -0
  330. package/dist/catalog/endpoints/store_vendor.json +131 -0
  331. package/dist/catalog/endpoints/store_webhook.json +24 -0
  332. package/dist/catalog/endpoints/support_message.json +25 -0
  333. package/dist/catalog/endpoints/update_bank_integration.json +33 -0
  334. package/dist/catalog/endpoints/update_bank_transaction.json +33 -0
  335. package/dist/catalog/endpoints/update_bank_transaction_rule.json +33 -0
  336. package/dist/catalog/endpoints/update_client.json +246 -0
  337. package/dist/catalog/endpoints/update_client_gateway_token.json +33 -0
  338. package/dist/catalog/endpoints/update_client_tax_data.json +38 -0
  339. package/dist/catalog/endpoints/update_company.json +33 -0
  340. package/dist/catalog/endpoints/update_company_gateway.json +33 -0
  341. package/dist/catalog/endpoints/update_company_user.json +16 -0
  342. package/dist/catalog/endpoints/update_credit.json +33 -0
  343. package/dist/catalog/endpoints/update_design.json +33 -0
  344. package/dist/catalog/endpoints/update_expense.json +33 -0
  345. package/dist/catalog/endpoints/update_expense_category.json +25 -0
  346. package/dist/catalog/endpoints/update_group_setting.json +33 -0
  347. package/dist/catalog/endpoints/update_invoice.json +33 -0
  348. package/dist/catalog/endpoints/update_location.json +128 -0
  349. package/dist/catalog/endpoints/update_payment.json +33 -0
  350. package/dist/catalog/endpoints/update_payment_term.json +33 -0
  351. package/dist/catalog/endpoints/update_product.json +188 -0
  352. package/dist/catalog/endpoints/update_project.json +122 -0
  353. package/dist/catalog/endpoints/update_purchase_order.json +98 -0
  354. package/dist/catalog/endpoints/update_quote.json +98 -0
  355. package/dist/catalog/endpoints/update_recurring_expense.json +33 -0
  356. package/dist/catalog/endpoints/update_recurring_invoice.json +33 -0
  357. package/dist/catalog/endpoints/update_recurring_quote.json +33 -0
  358. package/dist/catalog/endpoints/update_subscription.json +33 -0
  359. package/dist/catalog/endpoints/update_tag.json +38 -0
  360. package/dist/catalog/endpoints/update_task.json +122 -0
  361. package/dist/catalog/endpoints/update_task_scheduler.json +90 -0
  362. package/dist/catalog/endpoints/update_task_status.json +33 -0
  363. package/dist/catalog/endpoints/update_tax_rate.json +25 -0
  364. package/dist/catalog/endpoints/update_token.json +33 -0
  365. package/dist/catalog/endpoints/update_user.json +33 -0
  366. package/dist/catalog/endpoints/update_vendor.json +140 -0
  367. package/dist/catalog/endpoints/update_webhook.json +33 -0
  368. package/dist/catalog/endpoints/upload_client.json +54 -0
  369. package/dist/catalog/endpoints/upload_companies.json +47 -0
  370. package/dist/catalog/endpoints/upload_credits.json +47 -0
  371. package/dist/catalog/endpoints/upload_expense.json +47 -0
  372. package/dist/catalog/endpoints/upload_group_setting.json +47 -0
  373. package/dist/catalog/endpoints/upload_invoice_document.json +47 -0
  374. package/dist/catalog/endpoints/upload_payment.json +47 -0
  375. package/dist/catalog/endpoints/upload_product.json +46 -0
  376. package/dist/catalog/endpoints/upload_project.json +47 -0
  377. package/dist/catalog/endpoints/upload_purchase_order.json +47 -0
  378. package/dist/catalog/endpoints/upload_quote.json +47 -0
  379. package/dist/catalog/endpoints/upload_recurring_expense.json +47 -0
  380. package/dist/catalog/endpoints/upload_recurring_invoice.json +47 -0
  381. package/dist/catalog/endpoints/upload_task.json +47 -0
  382. package/dist/catalog/endpoints/upload_vendor.json +47 -0
  383. package/dist/catalog/endpoints/yodlee_refresh_webhook.json +16 -0
  384. package/dist/catalog/index.json +4428 -0
  385. package/dist/clients/invoiceninja-client.js +205 -0
  386. package/dist/helpers/register-endpoint-tools.js +27 -0
  387. package/dist/index.js +8 -0
  388. package/dist/server/invoiceninja-mcp-server.js +18 -0
  389. package/dist/tools/call-endpoint.js +153 -0
  390. package/dist/tools/describe-endpoint.js +60 -0
  391. package/dist/tools/list-endpoints.js +77 -0
  392. package/dist/types/tool-response.js +1 -0
  393. package/package.json +52 -0
@@ -0,0 +1,4428 @@
1
+ {
2
+ "generatedFrom": "openapi/api-docs.yaml (invoiceninja v5-stable)",
3
+ "endpointCount": 379,
4
+ "readCount": 186,
5
+ "mutatingCount": 193,
6
+ "enrichedCount": 379,
7
+ "categories": [
8
+ {
9
+ "name": "reports",
10
+ "count": 27
11
+ },
12
+ {
13
+ "name": "clients",
14
+ "count": 14
15
+ },
16
+ {
17
+ "name": "invoices",
18
+ "count": 12
19
+ },
20
+ {
21
+ "name": "quotes",
22
+ "count": 12
23
+ },
24
+ {
25
+ "name": "bank_integrations",
26
+ "count": 11
27
+ },
28
+ {
29
+ "name": "payments",
30
+ "count": 11
31
+ },
32
+ {
33
+ "name": "purchase_orders",
34
+ "count": 11
35
+ },
36
+ {
37
+ "name": "recurring_invoices",
38
+ "count": 11
39
+ },
40
+ {
41
+ "name": "users",
42
+ "count": 11
43
+ },
44
+ {
45
+ "name": "companies",
46
+ "count": 10
47
+ },
48
+ {
49
+ "name": "tasks",
50
+ "count": 10
51
+ },
52
+ {
53
+ "name": "bank_transactions",
54
+ "count": 9
55
+ },
56
+ {
57
+ "name": "credits",
58
+ "count": 9
59
+ },
60
+ {
61
+ "name": "expenses",
62
+ "count": 9
63
+ },
64
+ {
65
+ "name": "group_settings",
66
+ "count": 9
67
+ },
68
+ {
69
+ "name": "products",
70
+ "count": 9
71
+ },
72
+ {
73
+ "name": "projects",
74
+ "count": 9
75
+ },
76
+ {
77
+ "name": "recurring_expenses",
78
+ "count": 9
79
+ },
80
+ {
81
+ "name": "recurring_quotes",
82
+ "count": 9
83
+ },
84
+ {
85
+ "name": "vendors",
86
+ "count": 9
87
+ },
88
+ {
89
+ "name": "bank_transaction_rules",
90
+ "count": 8
91
+ },
92
+ {
93
+ "name": "company_gateways",
94
+ "count": 8
95
+ },
96
+ {
97
+ "name": "designs",
98
+ "count": 8
99
+ },
100
+ {
101
+ "name": "expense_categories",
102
+ "count": 8
103
+ },
104
+ {
105
+ "name": "payment_terms",
106
+ "count": 8
107
+ },
108
+ {
109
+ "name": "subscriptions",
110
+ "count": 8
111
+ },
112
+ {
113
+ "name": "tags",
114
+ "count": 8
115
+ },
116
+ {
117
+ "name": "task_status",
118
+ "count": 8
119
+ },
120
+ {
121
+ "name": "tokens",
122
+ "count": 8
123
+ },
124
+ {
125
+ "name": "webhooks",
126
+ "count": 8
127
+ },
128
+ {
129
+ "name": "client_gateway_tokens",
130
+ "count": 7
131
+ },
132
+ {
133
+ "name": "locations",
134
+ "count": 7
135
+ },
136
+ {
137
+ "name": "task_schedulers",
138
+ "count": 7
139
+ },
140
+ {
141
+ "name": "tax_rates",
142
+ "count": 7
143
+ },
144
+ {
145
+ "name": "auth",
146
+ "count": 6
147
+ },
148
+ {
149
+ "name": "activities",
150
+ "count": 4
151
+ },
152
+ {
153
+ "name": "charts",
154
+ "count": 4
155
+ },
156
+ {
157
+ "name": "imports",
158
+ "count": 3
159
+ },
160
+ {
161
+ "name": "migration",
162
+ "count": 3
163
+ },
164
+ {
165
+ "name": "postmark",
166
+ "count": 3
167
+ },
168
+ {
169
+ "name": "ping",
170
+ "count": 2
171
+ },
172
+ {
173
+ "name": "preview",
174
+ "count": 2
175
+ },
176
+ {
177
+ "name": "system_logs",
178
+ "count": 2
179
+ },
180
+ {
181
+ "name": "templates",
182
+ "count": 2
183
+ },
184
+ {
185
+ "name": "update",
186
+ "count": 2
187
+ },
188
+ {
189
+ "name": "claim_license",
190
+ "count": 1
191
+ },
192
+ {
193
+ "name": "company_ledger",
194
+ "count": 1
195
+ },
196
+ {
197
+ "name": "company_user",
198
+ "count": 1
199
+ },
200
+ {
201
+ "name": "connected_account",
202
+ "count": 1
203
+ },
204
+ {
205
+ "name": "documents",
206
+ "count": 1
207
+ },
208
+ {
209
+ "name": "emails",
210
+ "count": 1
211
+ },
212
+ {
213
+ "name": "export",
214
+ "count": 1
215
+ },
216
+ {
217
+ "name": "health_check",
218
+ "count": 1
219
+ },
220
+ {
221
+ "name": "logout",
222
+ "count": 1
223
+ },
224
+ {
225
+ "name": "one_time_token",
226
+ "count": 1
227
+ },
228
+ {
229
+ "name": "refresh",
230
+ "count": 1
231
+ },
232
+ {
233
+ "name": "scheduler",
234
+ "count": 1
235
+ },
236
+ {
237
+ "name": "search",
238
+ "count": 1
239
+ },
240
+ {
241
+ "name": "statics",
242
+ "count": 1
243
+ },
244
+ {
245
+ "name": "support",
246
+ "count": 1
247
+ },
248
+ {
249
+ "name": "webcron",
250
+ "count": 1
251
+ },
252
+ {
253
+ "name": "yodlee",
254
+ "count": 1
255
+ }
256
+ ],
257
+ "endpoints": [
258
+ {
259
+ "slug": "get_activities",
260
+ "name": "Returns a list of activities",
261
+ "method": "GET",
262
+ "path": "/api/v1/activities",
263
+ "category": "activities",
264
+ "mutating": false,
265
+ "paramCount": 4,
266
+ "hasBody": false,
267
+ "summary": "List and paginate the company's activity/audit log records when you need many activity entries, not a single one's PDF."
268
+ },
269
+ {
270
+ "slug": "get_activity_historical_entity_pdf",
271
+ "name": "Returns a PDF for the given activity",
272
+ "method": "GET",
273
+ "path": "/api/v1/activities/download_entity/{activity_id}",
274
+ "category": "activities",
275
+ "mutating": false,
276
+ "paramCount": 2,
277
+ "hasBody": false,
278
+ "summary": "Download the historical PDF snapshot of the entity tied to one activity, identified by activity_id, when you need that point-in-time document."
279
+ },
280
+ {
281
+ "slug": "post_activities_entity",
282
+ "name": "Entity activity",
283
+ "method": "POST",
284
+ "path": "/api/v1/activities/entity",
285
+ "category": "activities",
286
+ "mutating": true,
287
+ "paramCount": 0,
288
+ "hasBody": false,
289
+ "summary": "Fetch the activity history scoped to a specific entity via POST body when listing all company activities is too broad (mutating)."
290
+ },
291
+ {
292
+ "slug": "post_activities_notes",
293
+ "name": "Activity note",
294
+ "method": "POST",
295
+ "path": "/api/v1/activities/notes",
296
+ "category": "activities",
297
+ "mutating": true,
298
+ "paramCount": 0,
299
+ "hasBody": false,
300
+ "summary": "Create or update a note attached to an activity when you need to annotate the activity log (mutating)."
301
+ },
302
+ {
303
+ "slug": "post_login",
304
+ "name": "Login",
305
+ "method": "POST",
306
+ "path": "/api/v1/login",
307
+ "category": "auth",
308
+ "mutating": true,
309
+ "paramCount": 8,
310
+ "hasBody": true,
311
+ "summary": "Authenticate a user with email plus password, 2FA, or passkey assertion to obtain a CompanyUser session (mutating)."
312
+ },
313
+ {
314
+ "slug": "post_passkey_login_options",
315
+ "name": "Passkey login options",
316
+ "method": "POST",
317
+ "path": "/api/v1/passkeys/login/options",
318
+ "category": "auth",
319
+ "mutating": true,
320
+ "paramCount": 1,
321
+ "hasBody": true,
322
+ "summary": "Request WebAuthn challenge options for an email to begin passwordless passkey sign-in before calling post_login (mutating)."
323
+ },
324
+ {
325
+ "slug": "get_settings_passkeys",
326
+ "name": "List passkeys",
327
+ "method": "GET",
328
+ "path": "/api/v1/settings/passkeys",
329
+ "category": "auth",
330
+ "mutating": false,
331
+ "paramCount": 0,
332
+ "hasBody": false,
333
+ "summary": "List the current authenticated user's registered passkeys when reviewing or managing their saved credentials (read-only)."
334
+ },
335
+ {
336
+ "slug": "post_settings_passkeys",
337
+ "name": "Create passkey",
338
+ "method": "POST",
339
+ "path": "/api/v1/settings/passkeys",
340
+ "category": "auth",
341
+ "mutating": true,
342
+ "paramCount": 3,
343
+ "hasBody": true,
344
+ "summary": "Register a new passkey for the signed-in user by submitting the challenge token and WebAuthn credential (mutating)."
345
+ },
346
+ {
347
+ "slug": "delete_settings_passkey",
348
+ "name": "Delete passkey",
349
+ "method": "DELETE",
350
+ "path": "/api/v1/settings/passkeys/{passkey}",
351
+ "category": "auth",
352
+ "mutating": true,
353
+ "paramCount": 1,
354
+ "hasBody": false,
355
+ "summary": "Remove one registered passkey by its identifier when revoking a credential from the signed-in user's account (mutating)."
356
+ },
357
+ {
358
+ "slug": "post_settings_passkeys_options",
359
+ "name": "Passkey registration options",
360
+ "method": "POST",
361
+ "path": "/api/v1/settings/passkeys/options",
362
+ "category": "auth",
363
+ "mutating": true,
364
+ "paramCount": 0,
365
+ "hasBody": false,
366
+ "summary": "Request WebAuthn registration challenge options to begin enrolling a new passkey before calling post_settings_passkeys (mutating)."
367
+ },
368
+ {
369
+ "slug": "get_bank_integrations",
370
+ "name": "Returns a list of Bank Integrations",
371
+ "method": "GET",
372
+ "path": "/api/v1/bank_integrations",
373
+ "category": "bank_integrations",
374
+ "mutating": false,
375
+ "paramCount": 6,
376
+ "hasBody": false,
377
+ "summary": "List or paginate all bank integrations; use to browse or find connected bank integrations, not to fetch one by id."
378
+ },
379
+ {
380
+ "slug": "store_bank_integration",
381
+ "name": "Adds a bank_integration",
382
+ "method": "POST",
383
+ "path": "/api/v1/bank_integrations",
384
+ "category": "bank_integrations",
385
+ "mutating": true,
386
+ "paramCount": 1,
387
+ "hasBody": false,
388
+ "summary": "Create a new bank integration for the company; use when adding a bank connection that does not exist yet (mutating)."
389
+ },
390
+ {
391
+ "slug": "delete_bank_integration",
392
+ "name": "Deletes a bank_integration",
393
+ "method": "DELETE",
394
+ "path": "/api/v1/bank_integrations/{id}",
395
+ "category": "bank_integrations",
396
+ "mutating": true,
397
+ "paramCount": 2,
398
+ "hasBody": false,
399
+ "summary": "Archive/soft-delete one bank integration by its hashed id; use to remove a bank integration, not to update it (mutating)."
400
+ },
401
+ {
402
+ "slug": "show_bank_integration",
403
+ "name": "Shows a bank_integration",
404
+ "method": "GET",
405
+ "path": "/api/v1/bank_integrations/{id}",
406
+ "category": "bank_integrations",
407
+ "mutating": false,
408
+ "paramCount": 2,
409
+ "hasBody": false,
410
+ "summary": "Fetch one bank integration's record by its hashed id; use when you already know the id, not for listing or editing."
411
+ },
412
+ {
413
+ "slug": "update_bank_integration",
414
+ "name": "Updates a bank_integration",
415
+ "method": "PUT",
416
+ "path": "/api/v1/bank_integrations/{id}",
417
+ "category": "bank_integrations",
418
+ "mutating": true,
419
+ "paramCount": 2,
420
+ "hasBody": false,
421
+ "summary": "Modify an existing bank integration by its hashed id; use to save changes to a known bank integration (mutating)."
422
+ },
423
+ {
424
+ "slug": "edit_bank_integration",
425
+ "name": "Shows a bank_integration for editing",
426
+ "method": "GET",
427
+ "path": "/api/v1/bank_integrations/{id}/edit",
428
+ "category": "bank_integrations",
429
+ "mutating": false,
430
+ "paramCount": 2,
431
+ "hasBody": false,
432
+ "summary": "Fetch one bank integration by id prepared for editing (read-only); use to load form data before calling update_bank_integration."
433
+ },
434
+ {
435
+ "slug": "bulk_bank_integrations",
436
+ "name": "Performs bulk actions on an array of bank_integrations",
437
+ "method": "POST",
438
+ "path": "/api/v1/bank_integrations/bulk",
439
+ "category": "bank_integrations",
440
+ "mutating": true,
441
+ "paramCount": 1,
442
+ "hasBody": false,
443
+ "summary": "Run a batch action over an array of bank integration ids; use for multi-record bank integration operations (mutating)."
444
+ },
445
+ {
446
+ "slug": "get_bank_integrations_create",
447
+ "name": "Gets a new blank bank_integration object",
448
+ "method": "GET",
449
+ "path": "/api/v1/bank_integrations/create",
450
+ "category": "bank_integrations",
451
+ "mutating": false,
452
+ "paramCount": 1,
453
+ "hasBody": false,
454
+ "summary": "Fetch a blank bank integration object with default values (read-only); use to seed a new form before calling store_bank_integration."
455
+ },
456
+ {
457
+ "slug": "get_account_transactions",
458
+ "name": "Retrieve transactions for a account",
459
+ "method": "POST",
460
+ "path": "/api/v1/bank_integrations/get_transactions/account_id",
461
+ "category": "bank_integrations",
462
+ "mutating": true,
463
+ "paramCount": 1,
464
+ "hasBody": false,
465
+ "summary": "Trigger retrieval of transactions for a connected bank account; use to pull transaction data from a linked account (mutating)."
466
+ },
467
+ {
468
+ "slug": "get_refresh_accounts",
469
+ "name": "Gets the list of accounts from the remote server",
470
+ "method": "POST",
471
+ "path": "/api/v1/bank_integrations/refresh_accounts",
472
+ "category": "bank_integrations",
473
+ "mutating": true,
474
+ "paramCount": 1,
475
+ "hasBody": false,
476
+ "summary": "Refresh the list of accounts from the remote bank provider; use to re-sync available bank accounts into integrations (mutating)."
477
+ },
478
+ {
479
+ "slug": "get_remove_account",
480
+ "name": "Removes an account from the integration",
481
+ "method": "POST",
482
+ "path": "/api/v1/bank_integrations/remove_account/account_id",
483
+ "category": "bank_integrations",
484
+ "mutating": true,
485
+ "paramCount": 1,
486
+ "hasBody": false,
487
+ "summary": "Remove a single account from a bank integration; use to detach one linked account, not to delete the whole integration (mutating)."
488
+ },
489
+ {
490
+ "slug": "get_bank_transaction_rules",
491
+ "name": "Gets a list of bank_transaction_rules",
492
+ "method": "GET",
493
+ "path": "/api/v1/bank_transaction_rules",
494
+ "category": "bank_transaction_rules",
495
+ "mutating": false,
496
+ "paramCount": 6,
497
+ "hasBody": false,
498
+ "summary": "List or filter many bank transaction rules with pagination and sorting; reach for it to browse all rules, not one by id."
499
+ },
500
+ {
501
+ "slug": "store_bank_transaction_rule",
502
+ "name": "Adds a bank_transaction rule",
503
+ "method": "POST",
504
+ "path": "/api/v1/bank_transaction_rules",
505
+ "category": "bank_transaction_rules",
506
+ "mutating": true,
507
+ "paramCount": 1,
508
+ "hasBody": false,
509
+ "summary": "Create a new bank transaction rule; reach for it when adding a fresh categorization rule to the company (mutating)."
510
+ },
511
+ {
512
+ "slug": "delete_bank_transaction_rule",
513
+ "name": "Deletes a bank_transaction rule",
514
+ "method": "DELETE",
515
+ "path": "/api/v1/bank_transaction_rules/{id}",
516
+ "category": "bank_transaction_rules",
517
+ "mutating": true,
518
+ "paramCount": 2,
519
+ "hasBody": false,
520
+ "summary": "Archive/soft-delete one bank transaction rule by id; reach for it to remove an existing rule (mutating)."
521
+ },
522
+ {
523
+ "slug": "show_bank_transaction_rule",
524
+ "name": "Shows a bank_transaction",
525
+ "method": "GET",
526
+ "path": "/api/v1/bank_transaction_rules/{id}",
527
+ "category": "bank_transaction_rules",
528
+ "mutating": false,
529
+ "paramCount": 2,
530
+ "hasBody": false,
531
+ "summary": "Fetch one bank transaction rule by its id; reach for it when you already know the rule's id and need its details."
532
+ },
533
+ {
534
+ "slug": "update_bank_transaction_rule",
535
+ "name": "Updates a bank_transaction Rule",
536
+ "method": "PUT",
537
+ "path": "/api/v1/bank_transaction_rules/{id}",
538
+ "category": "bank_transaction_rules",
539
+ "mutating": true,
540
+ "paramCount": 2,
541
+ "hasBody": false,
542
+ "summary": "Modify an existing bank transaction rule by id; reach for it to change a rule's fields after creation (mutating)."
543
+ },
544
+ {
545
+ "slug": "edit_bank_transaction_rule",
546
+ "name": "Shows a bank_transaction for editing",
547
+ "method": "GET",
548
+ "path": "/api/v1/bank_transaction_rules/{id}/edit",
549
+ "category": "bank_transaction_rules",
550
+ "mutating": false,
551
+ "paramCount": 2,
552
+ "hasBody": false,
553
+ "summary": "Fetch one bank transaction rule by id prepared for editing (read-only); reach for it to preload a form, not to save changes."
554
+ },
555
+ {
556
+ "slug": "bulk_bank_transaction_rules",
557
+ "name": "Performs bulk actions on an array of bank_transaction rules",
558
+ "method": "POST",
559
+ "path": "/api/v1/bank_transaction_rules/bulk",
560
+ "category": "bank_transaction_rules",
561
+ "mutating": true,
562
+ "paramCount": 1,
563
+ "hasBody": false,
564
+ "summary": "Apply one action across many bank transaction rule ids at once; reach for it for batch archive/restore operations (mutating)."
565
+ },
566
+ {
567
+ "slug": "get_bank_transaction_rules_create",
568
+ "name": "Gets a new blank bank_transaction rule object",
569
+ "method": "GET",
570
+ "path": "/api/v1/bank_transaction_rules/create",
571
+ "category": "bank_transaction_rules",
572
+ "mutating": false,
573
+ "paramCount": 1,
574
+ "hasBody": false,
575
+ "summary": "Fetch a blank bank transaction rule template with default values (read-only); reach for it to seed a new-rule form before storing."
576
+ },
577
+ {
578
+ "slug": "get_bank_transactions",
579
+ "name": "Gets a list of bank_transactions",
580
+ "method": "GET",
581
+ "path": "/api/v1/bank_transactions",
582
+ "category": "bank_transactions",
583
+ "mutating": false,
584
+ "paramCount": 6,
585
+ "hasBody": false,
586
+ "summary": "List or filter many bank transactions with paging and sorting; use to browse, search, or find transactions when you lack a specific id."
587
+ },
588
+ {
589
+ "slug": "store_bank_transaction",
590
+ "name": "Adds a bank_transaction",
591
+ "method": "POST",
592
+ "path": "/api/v1/bank_transactions",
593
+ "category": "bank_transactions",
594
+ "mutating": true,
595
+ "paramCount": 1,
596
+ "hasBody": false,
597
+ "summary": "Create a new bank transaction record for the company; use when adding a fresh transaction, not matching or editing one (mutating)."
598
+ },
599
+ {
600
+ "slug": "delete_bank_transaction",
601
+ "name": "Deletes a bank_transaction",
602
+ "method": "DELETE",
603
+ "path": "/api/v1/bank_transactions/{id}",
604
+ "category": "bank_transactions",
605
+ "mutating": true,
606
+ "paramCount": 2,
607
+ "hasBody": false,
608
+ "summary": "Archive or soft-delete one bank transaction by its hashed id; use to remove a single transaction you already identified (mutating)."
609
+ },
610
+ {
611
+ "slug": "show_bank_transaction",
612
+ "name": "Shows a bank_transaction",
613
+ "method": "GET",
614
+ "path": "/api/v1/bank_transactions/{id}",
615
+ "category": "bank_transactions",
616
+ "mutating": false,
617
+ "paramCount": 2,
618
+ "hasBody": false,
619
+ "summary": "Fetch one bank transaction by its hashed id; use to view full details of a single known transaction, not to list many."
620
+ },
621
+ {
622
+ "slug": "update_bank_transaction",
623
+ "name": "Updates a bank_transaction",
624
+ "method": "PUT",
625
+ "path": "/api/v1/bank_transactions/{id}",
626
+ "category": "bank_transactions",
627
+ "mutating": true,
628
+ "paramCount": 2,
629
+ "hasBody": false,
630
+ "summary": "Modify an existing bank transaction by its hashed id; use to change fields on one known transaction (mutating)."
631
+ },
632
+ {
633
+ "slug": "edit_bank_transaction",
634
+ "name": "Shows a bank_transaction for editing",
635
+ "method": "GET",
636
+ "path": "/api/v1/bank_transactions/{id}/edit",
637
+ "category": "bank_transactions",
638
+ "mutating": false,
639
+ "paramCount": 2,
640
+ "hasBody": false,
641
+ "summary": "Fetch one bank transaction prepared for editing by hashed id; read-only retrieval to populate a form, not the update itself."
642
+ },
643
+ {
644
+ "slug": "bulk_bank_transactions",
645
+ "name": "Bulk actions",
646
+ "method": "POST",
647
+ "path": "/api/v1/bank_transactions/bulk",
648
+ "category": "bank_transactions",
649
+ "mutating": true,
650
+ "paramCount": 1,
651
+ "hasBody": false,
652
+ "summary": "Run a batch action over an array of bank transaction ids; use for actions across many transactions at once (mutating)."
653
+ },
654
+ {
655
+ "slug": "get_bank_transactions_create",
656
+ "name": "Gets a new blank bank_transaction object",
657
+ "method": "GET",
658
+ "path": "/api/v1/bank_transactions/create",
659
+ "category": "bank_transactions",
660
+ "mutating": false,
661
+ "paramCount": 1,
662
+ "hasBody": false,
663
+ "summary": "Fetch a blank bank transaction template with default values; read-only, use to prefill before storing a new transaction."
664
+ },
665
+ {
666
+ "slug": "match_bank_transactions",
667
+ "name": "Match transactions",
668
+ "method": "POST",
669
+ "path": "/api/v1/bank_transactions/match",
670
+ "category": "bank_transactions",
671
+ "mutating": true,
672
+ "paramCount": 1,
673
+ "hasBody": false,
674
+ "summary": "Link bank transactions to invoices, payments, or expenses by id; use to reconcile imported transactions against records (mutating)."
675
+ },
676
+ {
677
+ "slug": "get_chart_calculated_fields",
678
+ "name": "Get calculated fields",
679
+ "method": "POST",
680
+ "path": "/api/v1/charts/calculated_fields",
681
+ "category": "charts",
682
+ "mutating": false,
683
+ "paramCount": 0,
684
+ "hasBody": false,
685
+ "summary": "Retrieve dashboard chart calculated fields via POST when you need derived/computed chart metrics rather than raw totals or summaries"
686
+ },
687
+ {
688
+ "slug": "get_chart_summary_v2",
689
+ "name": "Get chart summary v2",
690
+ "method": "POST",
691
+ "path": "/api/v1/charts/chart_summary_v2",
692
+ "category": "charts",
693
+ "mutating": false,
694
+ "paramCount": 0,
695
+ "hasBody": false,
696
+ "summary": "Retrieve the v2 dashboard summary aggregates via POST when you want high-level summary figures rather than detailed totals rows"
697
+ },
698
+ {
699
+ "slug": "get_chart_totals",
700
+ "name": "Get chart data",
701
+ "method": "POST",
702
+ "path": "/api/v1/charts/totals",
703
+ "category": "charts",
704
+ "mutating": false,
705
+ "paramCount": 3,
706
+ "hasBody": false,
707
+ "summary": "Retrieve the v1 dashboard chart totals via POST for legacy total figures; prefer totals_v2 for newer reporting"
708
+ },
709
+ {
710
+ "slug": "get_chart_totals_v2",
711
+ "name": "Get chart data v2",
712
+ "method": "POST",
713
+ "path": "/api/v1/charts/totals_v2",
714
+ "category": "charts",
715
+ "mutating": false,
716
+ "paramCount": 0,
717
+ "hasBody": false,
718
+ "summary": "Retrieve the v2 dashboard chart totals via POST for current total figures; use over the v1 totals endpoint"
719
+ },
720
+ {
721
+ "slug": "get_claim_license",
722
+ "name": "Attempts to claim a white label license",
723
+ "method": "GET",
724
+ "path": "/api/v1/claim_license",
725
+ "category": "claim_license",
726
+ "mutating": false,
727
+ "paramCount": 2,
728
+ "hasBody": false,
729
+ "summary": "Claim a white-label license by passing a license_key and product_id; use to activate white labeling, not for general data retrieval."
730
+ },
731
+ {
732
+ "slug": "get_client_gateway_tokens",
733
+ "name": "List of client payment tokens",
734
+ "method": "GET",
735
+ "path": "/api/v1/client_gateway_tokens",
736
+ "category": "client_gateway_tokens",
737
+ "mutating": false,
738
+ "paramCount": 4,
739
+ "hasBody": false,
740
+ "summary": "List or filter many client payment gateway tokens with pagination and includes; use to browse them, not to fetch one by id."
741
+ },
742
+ {
743
+ "slug": "store_client_gateway_token",
744
+ "name": "Adds a client payment token",
745
+ "method": "POST",
746
+ "path": "/api/v1/client_gateway_tokens",
747
+ "category": "client_gateway_tokens",
748
+ "mutating": true,
749
+ "paramCount": 1,
750
+ "hasBody": false,
751
+ "summary": "Create a new client payment gateway token for the company; reach for it to add a saved payment method (mutating)."
752
+ },
753
+ {
754
+ "slug": "delete_client_gateway_token",
755
+ "name": "Deletes a client",
756
+ "method": "DELETE",
757
+ "path": "/api/v1/client_gateway_tokens/{id}",
758
+ "category": "client_gateway_tokens",
759
+ "mutating": true,
760
+ "paramCount": 2,
761
+ "hasBody": false,
762
+ "summary": "Archive or soft-delete one existing client payment gateway token by its hashed id to remove a saved card (mutating)."
763
+ },
764
+ {
765
+ "slug": "show_client_gateway_token",
766
+ "name": "Shows a client payment token",
767
+ "method": "GET",
768
+ "path": "/api/v1/client_gateway_tokens/{id}",
769
+ "category": "client_gateway_tokens",
770
+ "mutating": false,
771
+ "paramCount": 2,
772
+ "hasBody": false,
773
+ "summary": "Fetch one client payment gateway token by its hashed id to read its details; use when you already know the id."
774
+ },
775
+ {
776
+ "slug": "update_client_gateway_token",
777
+ "name": "Updates a client payment token",
778
+ "method": "PUT",
779
+ "path": "/api/v1/client_gateway_tokens/{id}",
780
+ "category": "client_gateway_tokens",
781
+ "mutating": true,
782
+ "paramCount": 2,
783
+ "hasBody": false,
784
+ "summary": "Modify an existing client payment gateway token by its hashed id to change its settings (mutating)."
785
+ },
786
+ {
787
+ "slug": "edit_client_gateway_token",
788
+ "name": "Shows a client payment token for editting",
789
+ "method": "GET",
790
+ "path": "/api/v1/client_gateway_tokens/{id}/edit",
791
+ "category": "client_gateway_tokens",
792
+ "mutating": false,
793
+ "paramCount": 2,
794
+ "hasBody": false,
795
+ "summary": "Fetch one client payment gateway token by id prepared for an edit form; read-only, use before update, not to save changes."
796
+ },
797
+ {
798
+ "slug": "get_client_gateway_tokens_create",
799
+ "name": "Gets a new blank client payment token object",
800
+ "method": "GET",
801
+ "path": "/api/v1/client_gateway_tokens/create",
802
+ "category": "client_gateway_tokens",
803
+ "mutating": false,
804
+ "paramCount": 1,
805
+ "hasBody": false,
806
+ "summary": "Get a blank client payment gateway token template with default values to prefill a create form; read-only, saves nothing."
807
+ },
808
+ {
809
+ "slug": "client_statement",
810
+ "name": "Client statement PDF",
811
+ "method": "POST",
812
+ "path": "/api/v1/client_statement",
813
+ "category": "clients",
814
+ "mutating": true,
815
+ "paramCount": 9,
816
+ "hasBody": true,
817
+ "summary": "Generate a client's statement PDF for a date range, optionally emailing it; use over reports when you need one client's statement (mutating)."
818
+ },
819
+ {
820
+ "slug": "get_clients",
821
+ "name": "List clients",
822
+ "method": "GET",
823
+ "path": "/api/v1/clients",
824
+ "category": "clients",
825
+ "mutating": false,
826
+ "paramCount": 19,
827
+ "hasBody": false,
828
+ "summary": "Fetch and filter many clients by name, balance, email, status, or group with pagination; use to search or list, not to read one by id."
829
+ },
830
+ {
831
+ "slug": "store_client",
832
+ "name": "Create client",
833
+ "method": "POST",
834
+ "path": "/api/v1/clients",
835
+ "category": "clients",
836
+ "mutating": true,
837
+ "paramCount": 36,
838
+ "hasBody": true,
839
+ "summary": "Create a new client record (contacts array required); use to add a client that does not yet exist, not to edit one (mutating)."
840
+ },
841
+ {
842
+ "slug": "update_client_tax_data",
843
+ "name": "Update tax data",
844
+ "method": "POST",
845
+ "path": "/api/v1/clients/{client}/updateTaxData",
846
+ "category": "clients",
847
+ "mutating": true,
848
+ "paramCount": 3,
849
+ "hasBody": false,
850
+ "summary": "Recalculate and refresh one client's tax data after their address changed; narrower than update_client which edits arbitrary fields (mutating)."
851
+ },
852
+ {
853
+ "slug": "delete_client",
854
+ "name": "Delete client",
855
+ "method": "DELETE",
856
+ "path": "/api/v1/clients/{id}",
857
+ "category": "clients",
858
+ "mutating": true,
859
+ "paramCount": 3,
860
+ "hasBody": false,
861
+ "summary": "Archive/soft-delete one client by id, keeping data restorable; use this over purge_client when removal need not be permanent (mutating)."
862
+ },
863
+ {
864
+ "slug": "show_client",
865
+ "name": "Show client",
866
+ "method": "GET",
867
+ "path": "/api/v1/clients/{id}",
868
+ "category": "clients",
869
+ "mutating": false,
870
+ "paramCount": 3,
871
+ "hasBody": false,
872
+ "summary": "Fetch one client by id with optional includes; use when you already have the hashed id, not get_clients for searching."
873
+ },
874
+ {
875
+ "slug": "update_client",
876
+ "name": "Update client",
877
+ "method": "PUT",
878
+ "path": "/api/v1/clients/{id}",
879
+ "category": "clients",
880
+ "mutating": true,
881
+ "paramCount": 37,
882
+ "hasBody": true,
883
+ "summary": "Modify an existing client by id, sending full contacts array; use to change fields, not store_client which creates new (mutating)."
884
+ },
885
+ {
886
+ "slug": "merge_client",
887
+ "name": "Merge client",
888
+ "method": "POST",
889
+ "path": "/api/v1/clients/{id}/{mergeable_client_hashed_id}/merge",
890
+ "category": "clients",
891
+ "mutating": true,
892
+ "paramCount": 4,
893
+ "hasBody": false,
894
+ "summary": "Merge a secondary client into a primary by their two ids (needs X-API-PASSWORD); use to consolidate duplicate client records (mutating)."
895
+ },
896
+ {
897
+ "slug": "edit_client",
898
+ "name": "Edit Client",
899
+ "method": "GET",
900
+ "path": "/api/v1/clients/{id}/edit",
901
+ "category": "clients",
902
+ "mutating": false,
903
+ "paramCount": 3,
904
+ "hasBody": false,
905
+ "summary": "GET one client by id prepared for editing (alias of show); read-only, use before update_client, not the update itself."
906
+ },
907
+ {
908
+ "slug": "purge_client",
909
+ "name": "Purge client",
910
+ "method": "POST",
911
+ "path": "/api/v1/clients/{id}/purge",
912
+ "category": "clients",
913
+ "mutating": true,
914
+ "paramCount": 1,
915
+ "hasBody": false,
916
+ "summary": "Permanently and irreversibly wipe one client and all their records (needs X-API-PASSWORD); use over delete_client only when destruction is intended (mutating)."
917
+ },
918
+ {
919
+ "slug": "upload_client",
920
+ "name": "Add client document",
921
+ "method": "POST",
922
+ "path": "/api/v1/clients/{id}/upload",
923
+ "category": "clients",
924
+ "mutating": true,
925
+ "paramCount": 5,
926
+ "hasBody": true,
927
+ "summary": "Attach document files to one client via multipart upload; use to add files to a client, not update_client for field edits (mutating)."
928
+ },
929
+ {
930
+ "slug": "bulk_clients",
931
+ "name": "Bulk client actions",
932
+ "method": "POST",
933
+ "path": "/api/v1/clients/bulk",
934
+ "category": "clients",
935
+ "mutating": true,
936
+ "paramCount": 4,
937
+ "hasBody": true,
938
+ "summary": "Run a batch action (archive, restore, delete, assign_group, bulk_update, template) over an array of client ids in one request (mutating)."
939
+ },
940
+ {
941
+ "slug": "get_clients_create",
942
+ "name": "Blank Client",
943
+ "method": "GET",
944
+ "path": "/api/v1/clients/create",
945
+ "category": "clients",
946
+ "mutating": false,
947
+ "paramCount": 2,
948
+ "hasBody": false,
949
+ "summary": "GET a blank client object with default values to seed a new-client form; read-only, use before store_client."
950
+ },
951
+ {
952
+ "slug": "reactivate_email",
953
+ "name": "Removes email suppression of a user in the system",
954
+ "method": "POST",
955
+ "path": "/api/v1/reactivate_email/{bounce_id}",
956
+ "category": "clients",
957
+ "mutating": true,
958
+ "paramCount": 3,
959
+ "hasBody": false,
960
+ "summary": "Remove a Postmark email suppression by bounce_id so a hard-bounced or complained address can receive mail again (mutating)."
961
+ },
962
+ {
963
+ "slug": "get_companies",
964
+ "name": "Gets a list of companies",
965
+ "method": "GET",
966
+ "path": "/api/v1/companies",
967
+ "category": "companies",
968
+ "mutating": false,
969
+ "paramCount": 3,
970
+ "hasBody": false,
971
+ "summary": "List or filter many companies with pagination and includes; use when you need a set of company records, not one by id."
972
+ },
973
+ {
974
+ "slug": "store_company",
975
+ "name": "Adds a company",
976
+ "method": "POST",
977
+ "path": "/api/v1/companies",
978
+ "category": "companies",
979
+ "mutating": true,
980
+ "paramCount": 1,
981
+ "hasBody": false,
982
+ "summary": "Create a brand-new company record in the system; use when adding a company that does not yet exist (mutating)."
983
+ },
984
+ {
985
+ "slug": "set_default_company",
986
+ "name": "Sets the company as the default company.",
987
+ "method": "POST",
988
+ "path": "/api/v1/companies/{company}/default",
989
+ "category": "companies",
990
+ "mutating": true,
991
+ "paramCount": 2,
992
+ "hasBody": false,
993
+ "summary": "Mark an existing company (by hashed id) as the account's default company; use to switch the default, not to edit fields (mutating)."
994
+ },
995
+ {
996
+ "slug": "delete_company",
997
+ "name": "Deletes a company",
998
+ "method": "DELETE",
999
+ "path": "/api/v1/companies/{id}",
1000
+ "category": "companies",
1001
+ "mutating": true,
1002
+ "paramCount": 2,
1003
+ "hasBody": false,
1004
+ "summary": "Archive/soft-delete one company by id; use to remove a company while keeping its record recoverable (mutating)."
1005
+ },
1006
+ {
1007
+ "slug": "show_company",
1008
+ "name": "Shows an company",
1009
+ "method": "GET",
1010
+ "path": "/api/v1/companies/{id}",
1011
+ "category": "companies",
1012
+ "mutating": false,
1013
+ "paramCount": 2,
1014
+ "hasBody": false,
1015
+ "summary": "Fetch one company by its hashed id; use when you already know the id and need that single record's details."
1016
+ },
1017
+ {
1018
+ "slug": "update_company",
1019
+ "name": "Updates an company",
1020
+ "method": "PUT",
1021
+ "path": "/api/v1/companies/{id}",
1022
+ "category": "companies",
1023
+ "mutating": true,
1024
+ "paramCount": 2,
1025
+ "hasBody": false,
1026
+ "summary": "Modify fields on an existing company identified by id; use to change an already-created company (mutating)."
1027
+ },
1028
+ {
1029
+ "slug": "edit_company",
1030
+ "name": "Shows an company for editting",
1031
+ "method": "GET",
1032
+ "path": "/api/v1/companies/{id}/edit",
1033
+ "category": "companies",
1034
+ "mutating": false,
1035
+ "paramCount": 2,
1036
+ "hasBody": false,
1037
+ "summary": "GET one company by id prepared for editing (read-only); use to load current values before calling update_company, not to save changes."
1038
+ },
1039
+ {
1040
+ "slug": "upload_companies",
1041
+ "name": "Uploads a document to a company",
1042
+ "method": "POST",
1043
+ "path": "/api/v1/companies/{id}/upload",
1044
+ "category": "companies",
1045
+ "mutating": true,
1046
+ "paramCount": 4,
1047
+ "hasBody": true,
1048
+ "summary": "Attach a document/file to an existing company by id via multipart upload; use to add attachments, not to edit company fields (mutating)."
1049
+ },
1050
+ {
1051
+ "slug": "get_companies_create",
1052
+ "name": "Gets a new blank company object",
1053
+ "method": "GET",
1054
+ "path": "/api/v1/companies/create",
1055
+ "category": "companies",
1056
+ "mutating": false,
1057
+ "paramCount": 1,
1058
+ "hasBody": false,
1059
+ "summary": "GET a blank company object with default values (read-only); use to pre-populate a create form before calling store_company."
1060
+ },
1061
+ {
1062
+ "slug": "show_current_company",
1063
+ "name": "Returns the current comapny",
1064
+ "method": "POST",
1065
+ "path": "/api/v1/companies/current",
1066
+ "category": "companies",
1067
+ "mutating": true,
1068
+ "paramCount": 1,
1069
+ "hasBody": false,
1070
+ "summary": "Return the company tied to the current API token; use when you need the authenticated context's company without knowing its id."
1071
+ },
1072
+ {
1073
+ "slug": "get_company_gateways",
1074
+ "name": "Gets a list of company_gateways",
1075
+ "method": "GET",
1076
+ "path": "/api/v1/company_gateways",
1077
+ "category": "company_gateways",
1078
+ "mutating": false,
1079
+ "paramCount": 4,
1080
+ "hasBody": false,
1081
+ "summary": "List or filter many configured company payment gateways with pagination and sorting; reach for it to browse all gateways, not one by id."
1082
+ },
1083
+ {
1084
+ "slug": "store_company_gateway",
1085
+ "name": "Adds a CompanyGateway",
1086
+ "method": "POST",
1087
+ "path": "/api/v1/company_gateways",
1088
+ "category": "company_gateways",
1089
+ "mutating": true,
1090
+ "paramCount": 1,
1091
+ "hasBody": false,
1092
+ "summary": "Create a new company payment gateway; reach for it when connecting a fresh payment provider to the company (mutating)."
1093
+ },
1094
+ {
1095
+ "slug": "delete_company_gateway",
1096
+ "name": "Deletes a CompanyGateway",
1097
+ "method": "DELETE",
1098
+ "path": "/api/v1/company_gateways/{id}",
1099
+ "category": "company_gateways",
1100
+ "mutating": true,
1101
+ "paramCount": 2,
1102
+ "hasBody": false,
1103
+ "summary": "Archive/soft-delete one company gateway by id; reach for it to remove an existing payment gateway (mutating)."
1104
+ },
1105
+ {
1106
+ "slug": "show_company_gateway",
1107
+ "name": "Shows an CompanyGateway",
1108
+ "method": "GET",
1109
+ "path": "/api/v1/company_gateways/{id}",
1110
+ "category": "company_gateways",
1111
+ "mutating": false,
1112
+ "paramCount": 2,
1113
+ "hasBody": false,
1114
+ "summary": "Fetch one company gateway by its id; reach for it when you already know the gateway's id and need its configuration."
1115
+ },
1116
+ {
1117
+ "slug": "update_company_gateway",
1118
+ "name": "Updates an CompanyGateway",
1119
+ "method": "PUT",
1120
+ "path": "/api/v1/company_gateways/{id}",
1121
+ "category": "company_gateways",
1122
+ "mutating": true,
1123
+ "paramCount": 2,
1124
+ "hasBody": false,
1125
+ "summary": "Modify an existing company gateway by id; reach for it to change a gateway's settings after creation (mutating)."
1126
+ },
1127
+ {
1128
+ "slug": "edit_company_gateway",
1129
+ "name": "Shows an CompanyGateway for editting",
1130
+ "method": "GET",
1131
+ "path": "/api/v1/company_gateways/{id}/edit",
1132
+ "category": "company_gateways",
1133
+ "mutating": false,
1134
+ "paramCount": 2,
1135
+ "hasBody": false,
1136
+ "summary": "Fetch one company gateway by id prepared for editing (read-only); reach for it to preload a form, not to save changes."
1137
+ },
1138
+ {
1139
+ "slug": "bulk_company_gateways",
1140
+ "name": "Performs bulk actions on an array of company_gateways",
1141
+ "method": "POST",
1142
+ "path": "/api/v1/company_gateways/bulk",
1143
+ "category": "company_gateways",
1144
+ "mutating": true,
1145
+ "paramCount": 1,
1146
+ "hasBody": false,
1147
+ "summary": "Apply one action across many company gateway ids at once; reach for it for batch archive/restore operations (mutating)."
1148
+ },
1149
+ {
1150
+ "slug": "get_company_gateways_create",
1151
+ "name": "Gets a new blank CompanyGateway object",
1152
+ "method": "GET",
1153
+ "path": "/api/v1/company_gateways/create",
1154
+ "category": "company_gateways",
1155
+ "mutating": false,
1156
+ "paramCount": 1,
1157
+ "hasBody": false,
1158
+ "summary": "Fetch a blank company gateway template with default values (read-only); reach for it to seed a new-gateway form before storing."
1159
+ },
1160
+ {
1161
+ "slug": "get_company_ledger",
1162
+ "name": "Gets a list of company_ledger",
1163
+ "method": "GET",
1164
+ "path": "/api/v1/company_ledger",
1165
+ "category": "company_ledger",
1166
+ "mutating": false,
1167
+ "paramCount": 1,
1168
+ "hasBody": false,
1169
+ "summary": "List the company ledger entries to review the chronological financial transaction record for the company; use for ledger reporting, not single records."
1170
+ },
1171
+ {
1172
+ "slug": "update_company_user",
1173
+ "name": "Update a company user record",
1174
+ "method": "POST",
1175
+ "path": "/api/v1/company_users",
1176
+ "category": "company_user",
1177
+ "mutating": true,
1178
+ "paramCount": 0,
1179
+ "hasBody": false,
1180
+ "summary": "Modify a company-user record's settings (full access for admins, own settings otherwise); use to change user/company preferences (mutating)."
1181
+ },
1182
+ {
1183
+ "slug": "post_connected_account",
1184
+ "name": "Connect an oauth user to an existing user",
1185
+ "method": "POST",
1186
+ "path": "/api/v1/connected_account",
1187
+ "category": "connected_account",
1188
+ "mutating": true,
1189
+ "paramCount": 3,
1190
+ "hasBody": false,
1191
+ "summary": "Link an OAuth identity to an existing user account and refresh the dataset; use for connecting Google/Microsoft sign-in, not creating users (mutating)."
1192
+ },
1193
+ {
1194
+ "slug": "get_credits",
1195
+ "name": "List credits",
1196
+ "method": "GET",
1197
+ "path": "/api/v1/credits",
1198
+ "category": "credits",
1199
+ "mutating": false,
1200
+ "paramCount": 5,
1201
+ "hasBody": false,
1202
+ "summary": "List or filter many credits by client, number, or balance with pagination; reach for it to browse credits, not one by id."
1203
+ },
1204
+ {
1205
+ "slug": "store_credit",
1206
+ "name": "Create credit",
1207
+ "method": "POST",
1208
+ "path": "/api/v1/credits",
1209
+ "category": "credits",
1210
+ "mutating": true,
1211
+ "paramCount": 38,
1212
+ "hasBody": true,
1213
+ "summary": "Create a new credit with client and line items; reach for it when issuing a fresh credit to a client (mutating)."
1214
+ },
1215
+ {
1216
+ "slug": "delete_credit",
1217
+ "name": "Delete credit",
1218
+ "method": "DELETE",
1219
+ "path": "/api/v1/credits/{id}",
1220
+ "category": "credits",
1221
+ "mutating": true,
1222
+ "paramCount": 2,
1223
+ "hasBody": false,
1224
+ "summary": "Archive/soft-delete one credit by id; reach for it to remove an existing credit (mutating)."
1225
+ },
1226
+ {
1227
+ "slug": "show_credit",
1228
+ "name": "Show credit",
1229
+ "method": "GET",
1230
+ "path": "/api/v1/credits/{id}",
1231
+ "category": "credits",
1232
+ "mutating": false,
1233
+ "paramCount": 2,
1234
+ "hasBody": false,
1235
+ "summary": "Fetch one credit by its id; reach for it when you already know the credit's id and need its full details."
1236
+ },
1237
+ {
1238
+ "slug": "update_credit",
1239
+ "name": "Update credit",
1240
+ "method": "PUT",
1241
+ "path": "/api/v1/credits/{id}",
1242
+ "category": "credits",
1243
+ "mutating": true,
1244
+ "paramCount": 2,
1245
+ "hasBody": false,
1246
+ "summary": "Modify an existing credit by its hashed id; use to edit a specific credit record's fields rather than create or list credits (mutating)."
1247
+ },
1248
+ {
1249
+ "slug": "edit_credit",
1250
+ "name": "Edit credit",
1251
+ "method": "GET",
1252
+ "path": "/api/v1/credits/{id}/edit",
1253
+ "category": "credits",
1254
+ "mutating": false,
1255
+ "paramCount": 2,
1256
+ "hasBody": false,
1257
+ "summary": "Fetch one credit by id prepared for editing (read-only); reach for it to preload a credit form, not to save changes."
1258
+ },
1259
+ {
1260
+ "slug": "upload_credits",
1261
+ "name": "Upload a credit document",
1262
+ "method": "POST",
1263
+ "path": "/api/v1/credits/{id}/upload",
1264
+ "category": "credits",
1265
+ "mutating": true,
1266
+ "paramCount": 4,
1267
+ "hasBody": true,
1268
+ "summary": "Attach a document/file to one credit by id via multipart upload; reach for it to add supporting attachments (mutating)."
1269
+ },
1270
+ {
1271
+ "slug": "bulk_credits",
1272
+ "name": "Bulk credit actions",
1273
+ "method": "POST",
1274
+ "path": "/api/v1/credits/bulk",
1275
+ "category": "credits",
1276
+ "mutating": true,
1277
+ "paramCount": 1,
1278
+ "hasBody": false,
1279
+ "summary": "Apply one action like email or mark_sent across many credit ids at once; reach for it for batch credit operations (mutating)."
1280
+ },
1281
+ {
1282
+ "slug": "get_credits_create",
1283
+ "name": "Blank credit",
1284
+ "method": "GET",
1285
+ "path": "/api/v1/credits/create",
1286
+ "category": "credits",
1287
+ "mutating": false,
1288
+ "paramCount": 1,
1289
+ "hasBody": false,
1290
+ "summary": "Fetch a blank credit template with default values (read-only); reach for it to seed a new-credit form before storing."
1291
+ },
1292
+ {
1293
+ "slug": "get_designs",
1294
+ "name": "Gets a list of designs",
1295
+ "method": "GET",
1296
+ "path": "/api/v1/designs",
1297
+ "category": "designs",
1298
+ "mutating": false,
1299
+ "paramCount": 5,
1300
+ "hasBody": false,
1301
+ "summary": "List or filter many invoice/quote templates with paging and sorting when you need to browse designs or find a design's id."
1302
+ },
1303
+ {
1304
+ "slug": "store_design",
1305
+ "name": "Adds a design",
1306
+ "method": "POST",
1307
+ "path": "/api/v1/designs",
1308
+ "category": "designs",
1309
+ "mutating": true,
1310
+ "paramCount": 1,
1311
+ "hasBody": false,
1312
+ "summary": "Create a brand-new design template from scratch when adding a custom layout to the company (mutating)."
1313
+ },
1314
+ {
1315
+ "slug": "delete_design",
1316
+ "name": "Deletes a design",
1317
+ "method": "DELETE",
1318
+ "path": "/api/v1/designs/{id}",
1319
+ "category": "designs",
1320
+ "mutating": true,
1321
+ "paramCount": 2,
1322
+ "hasBody": false,
1323
+ "summary": "Archive/soft-delete one design by id when retiring a template you no longer want available (mutating)."
1324
+ },
1325
+ {
1326
+ "slug": "show_design",
1327
+ "name": "Shows a design",
1328
+ "method": "GET",
1329
+ "path": "/api/v1/designs/{id}",
1330
+ "category": "designs",
1331
+ "mutating": false,
1332
+ "paramCount": 2,
1333
+ "hasBody": false,
1334
+ "summary": "Fetch one design by id to read its full template details when you already know the design's id."
1335
+ },
1336
+ {
1337
+ "slug": "update_design",
1338
+ "name": "Updates a design",
1339
+ "method": "PUT",
1340
+ "path": "/api/v1/designs/{id}",
1341
+ "category": "designs",
1342
+ "mutating": true,
1343
+ "paramCount": 2,
1344
+ "hasBody": false,
1345
+ "summary": "Modify an existing design by id to change its layout or settings after you have its id (mutating)."
1346
+ },
1347
+ {
1348
+ "slug": "edit_design",
1349
+ "name": "Shows a design for editting",
1350
+ "method": "GET",
1351
+ "path": "/api/v1/designs/{id}/edit",
1352
+ "category": "designs",
1353
+ "mutating": false,
1354
+ "paramCount": 2,
1355
+ "hasBody": false,
1356
+ "summary": "Fetch one design by id prepared for editing in a form; read-only, use update_design to actually save changes."
1357
+ },
1358
+ {
1359
+ "slug": "bulk_designs",
1360
+ "name": "Performs bulk actions on an array of designs",
1361
+ "method": "POST",
1362
+ "path": "/api/v1/designs/bulk",
1363
+ "category": "designs",
1364
+ "mutating": true,
1365
+ "paramCount": 1,
1366
+ "hasBody": false,
1367
+ "summary": "Apply one action across an array of design ids in a single batch instead of per-record calls (mutating)."
1368
+ },
1369
+ {
1370
+ "slug": "get_designs_create",
1371
+ "name": "Gets a new blank design object",
1372
+ "method": "GET",
1373
+ "path": "/api/v1/designs/create",
1374
+ "category": "designs",
1375
+ "mutating": false,
1376
+ "paramCount": 1,
1377
+ "hasBody": false,
1378
+ "summary": "Fetch a blank design object with default values to prefill a new-design form before calling store_design."
1379
+ },
1380
+ {
1381
+ "slug": "get_documents",
1382
+ "name": "Gets a list of documents",
1383
+ "method": "GET",
1384
+ "path": "/api/v1/documents",
1385
+ "category": "documents",
1386
+ "mutating": false,
1387
+ "paramCount": 5,
1388
+ "hasBody": false,
1389
+ "summary": "List and filter many uploaded document records with pagination and sorting; use to browse or search attachments across entities, not fetch one."
1390
+ },
1391
+ {
1392
+ "slug": "send_email_template",
1393
+ "name": "Sends an email for an entity",
1394
+ "method": "POST",
1395
+ "path": "/api/v1/emails",
1396
+ "category": "emails",
1397
+ "mutating": true,
1398
+ "paramCount": 6,
1399
+ "hasBody": true,
1400
+ "summary": "Email an entity (invoice, quote, credit, payment, reminder, PO) using a named template by entity and entity_id; use to dispatch templated client emails (mutating)."
1401
+ },
1402
+ {
1403
+ "slug": "get_expense_categorys",
1404
+ "name": "Gets a list of expense_categories",
1405
+ "method": "GET",
1406
+ "path": "/api/v1/expense_categories",
1407
+ "category": "expense_categories",
1408
+ "mutating": false,
1409
+ "paramCount": 4,
1410
+ "hasBody": false,
1411
+ "summary": "List or filter many expense categories with paging and sorting when browsing categories or finding a category id."
1412
+ },
1413
+ {
1414
+ "slug": "store_expense_category",
1415
+ "name": "Adds a expense category",
1416
+ "method": "POST",
1417
+ "path": "/api/v1/expense_categories",
1418
+ "category": "expense_categories",
1419
+ "mutating": true,
1420
+ "paramCount": 1,
1421
+ "hasBody": false,
1422
+ "summary": "Create a new expense category when adding a classification bucket for expenses (mutating)."
1423
+ },
1424
+ {
1425
+ "slug": "delete_expense_category",
1426
+ "name": "Deletes a ExpenseCategory",
1427
+ "method": "DELETE",
1428
+ "path": "/api/v1/expense_categories/{id}",
1429
+ "category": "expense_categories",
1430
+ "mutating": true,
1431
+ "paramCount": 1,
1432
+ "hasBody": false,
1433
+ "summary": "Archive/soft-delete one expense category by id when retiring a classification you no longer use (mutating)."
1434
+ },
1435
+ {
1436
+ "slug": "show_expense_category",
1437
+ "name": "Shows a Expens Category",
1438
+ "method": "GET",
1439
+ "path": "/api/v1/expense_categories/{id}",
1440
+ "category": "expense_categories",
1441
+ "mutating": false,
1442
+ "paramCount": 1,
1443
+ "hasBody": false,
1444
+ "summary": "Fetch one expense category by id to read its details when you already know the category's id."
1445
+ },
1446
+ {
1447
+ "slug": "update_expense_category",
1448
+ "name": "Updates a tax rate",
1449
+ "method": "PUT",
1450
+ "path": "/api/v1/expense_categories/{id}",
1451
+ "category": "expense_categories",
1452
+ "mutating": true,
1453
+ "paramCount": 1,
1454
+ "hasBody": false,
1455
+ "summary": "Modify an existing expense category by id to rename or adjust it after you have its id (mutating)."
1456
+ },
1457
+ {
1458
+ "slug": "edit_expense_category",
1459
+ "name": "Shows a Expens Category for editting",
1460
+ "method": "GET",
1461
+ "path": "/api/v1/expense_categories/{id}/edit",
1462
+ "category": "expense_categories",
1463
+ "mutating": false,
1464
+ "paramCount": 1,
1465
+ "hasBody": false,
1466
+ "summary": "Fetch one expense category by id prepared for editing in a form; read-only, use update_expense_category to save."
1467
+ },
1468
+ {
1469
+ "slug": "bulk_expense_categorys",
1470
+ "name": "Performs bulk actions on an array of ExpenseCategorys",
1471
+ "method": "POST",
1472
+ "path": "/api/v1/expense_categories/bulk",
1473
+ "category": "expense_categories",
1474
+ "mutating": true,
1475
+ "paramCount": 1,
1476
+ "hasBody": false,
1477
+ "summary": "Apply one action across an array of expense category ids in a single batch instead of per-record calls (mutating)."
1478
+ },
1479
+ {
1480
+ "slug": "get_expense_category_create",
1481
+ "name": "Gets a new blank Expens Category object",
1482
+ "method": "GET",
1483
+ "path": "/api/v1/expense_categories/create",
1484
+ "category": "expense_categories",
1485
+ "mutating": false,
1486
+ "paramCount": 0,
1487
+ "hasBody": false,
1488
+ "summary": "Fetch a blank expense category object with defaults to prefill a new-category form before calling store_expense_category."
1489
+ },
1490
+ {
1491
+ "slug": "get_expenses",
1492
+ "name": "Gets a list of expenses",
1493
+ "method": "GET",
1494
+ "path": "/api/v1/expenses",
1495
+ "category": "expenses",
1496
+ "mutating": false,
1497
+ "paramCount": 5,
1498
+ "hasBody": false,
1499
+ "summary": "List or filter many expenses with paging, sorting, and filters when browsing spending or finding an expense's id."
1500
+ },
1501
+ {
1502
+ "slug": "store_expense",
1503
+ "name": "Adds an expense",
1504
+ "method": "POST",
1505
+ "path": "/api/v1/expenses",
1506
+ "category": "expenses",
1507
+ "mutating": true,
1508
+ "paramCount": 1,
1509
+ "hasBody": false,
1510
+ "summary": "Create a new expense record when logging a company purchase or cost (mutating)."
1511
+ },
1512
+ {
1513
+ "slug": "delete_expense",
1514
+ "name": "Deletes a expense",
1515
+ "method": "DELETE",
1516
+ "path": "/api/v1/expenses/{id}",
1517
+ "category": "expenses",
1518
+ "mutating": true,
1519
+ "paramCount": 2,
1520
+ "hasBody": false,
1521
+ "summary": "Archive/soft-delete one expense by id when removing a logged cost (mutating)."
1522
+ },
1523
+ {
1524
+ "slug": "show_expense",
1525
+ "name": "Shows a expense",
1526
+ "method": "GET",
1527
+ "path": "/api/v1/expenses/{id}",
1528
+ "category": "expenses",
1529
+ "mutating": false,
1530
+ "paramCount": 2,
1531
+ "hasBody": false,
1532
+ "summary": "Fetch one expense by id to read its full details when you already know the expense's id."
1533
+ },
1534
+ {
1535
+ "slug": "update_expense",
1536
+ "name": "Updates a expense",
1537
+ "method": "PUT",
1538
+ "path": "/api/v1/expenses/{id}",
1539
+ "category": "expenses",
1540
+ "mutating": true,
1541
+ "paramCount": 2,
1542
+ "hasBody": false,
1543
+ "summary": "Modify an existing expense by id to correct its amount, date, or details after you have its id (mutating)."
1544
+ },
1545
+ {
1546
+ "slug": "edit_expense",
1547
+ "name": "Shows a expense for editing",
1548
+ "method": "GET",
1549
+ "path": "/api/v1/expenses/{id}/edit",
1550
+ "category": "expenses",
1551
+ "mutating": false,
1552
+ "paramCount": 2,
1553
+ "hasBody": false,
1554
+ "summary": "Fetch one expense by id prepared for editing in a form; read-only, use update_expense to actually save changes."
1555
+ },
1556
+ {
1557
+ "slug": "upload_expense",
1558
+ "name": "Uploads a document to a expense",
1559
+ "method": "POST",
1560
+ "path": "/api/v1/expenses/{id}/upload",
1561
+ "category": "expenses",
1562
+ "mutating": true,
1563
+ "paramCount": 4,
1564
+ "hasBody": true,
1565
+ "summary": "Attach one or more document files to an existing expense by its hashed id; use to add receipts to an expense record (mutating)."
1566
+ },
1567
+ {
1568
+ "slug": "bulk_expenses",
1569
+ "name": "Performs bulk actions on an array of expenses",
1570
+ "method": "POST",
1571
+ "path": "/api/v1/expenses/bulk",
1572
+ "category": "expenses",
1573
+ "mutating": true,
1574
+ "paramCount": 1,
1575
+ "hasBody": false,
1576
+ "summary": "Apply one action across an array of expense ids in a single batch instead of per-record calls (mutating)."
1577
+ },
1578
+ {
1579
+ "slug": "get_expenses_create",
1580
+ "name": "Gets a new blank expense object",
1581
+ "method": "GET",
1582
+ "path": "/api/v1/expenses/create",
1583
+ "category": "expenses",
1584
+ "mutating": false,
1585
+ "paramCount": 1,
1586
+ "hasBody": false,
1587
+ "summary": "Fetch a blank expense object with default values to prefill a new-expense form before calling store_expense."
1588
+ },
1589
+ {
1590
+ "slug": "get_export",
1591
+ "name": "Export data from the system",
1592
+ "method": "POST",
1593
+ "path": "/api/v1/export",
1594
+ "category": "export",
1595
+ "mutating": true,
1596
+ "paramCount": 0,
1597
+ "hasBody": false,
1598
+ "summary": "Export system data out of Invoice Ninja for backup or migration; use to bulk-extract records rather than read individual entities (mutating)."
1599
+ },
1600
+ {
1601
+ "slug": "get_group_settings",
1602
+ "name": "Gets a list of group_settings",
1603
+ "method": "GET",
1604
+ "path": "/api/v1/group_settings",
1605
+ "category": "group_settings",
1606
+ "mutating": false,
1607
+ "paramCount": 4,
1608
+ "hasBody": false,
1609
+ "summary": "List or filter many group settings with paging and sorting; use to browse or search groups when you lack a specific id."
1610
+ },
1611
+ {
1612
+ "slug": "store_group_setting",
1613
+ "name": "Adds a GroupSetting",
1614
+ "method": "POST",
1615
+ "path": "/api/v1/group_settings",
1616
+ "category": "group_settings",
1617
+ "mutating": true,
1618
+ "paramCount": 1,
1619
+ "hasBody": false,
1620
+ "summary": "Create a new group setting record in the system; use when adding a fresh client group, not editing one (mutating)."
1621
+ },
1622
+ {
1623
+ "slug": "delete_group_setting",
1624
+ "name": "Deletes a GroupSetting",
1625
+ "method": "DELETE",
1626
+ "path": "/api/v1/group_settings/{id}",
1627
+ "category": "group_settings",
1628
+ "mutating": true,
1629
+ "paramCount": 2,
1630
+ "hasBody": false,
1631
+ "summary": "Archive or soft-delete one group setting by its hashed id; use to remove a single known group (mutating)."
1632
+ },
1633
+ {
1634
+ "slug": "show_group_setting",
1635
+ "name": "Shows an GroupSetting",
1636
+ "method": "GET",
1637
+ "path": "/api/v1/group_settings/{id}",
1638
+ "category": "group_settings",
1639
+ "mutating": false,
1640
+ "paramCount": 2,
1641
+ "hasBody": false,
1642
+ "summary": "Fetch one group setting by its hashed id; use to view full details of a single known group, not to list many."
1643
+ },
1644
+ {
1645
+ "slug": "update_group_setting",
1646
+ "name": "Updates an GroupSetting",
1647
+ "method": "PUT",
1648
+ "path": "/api/v1/group_settings/{id}",
1649
+ "category": "group_settings",
1650
+ "mutating": true,
1651
+ "paramCount": 2,
1652
+ "hasBody": false,
1653
+ "summary": "Modify an existing group setting by its hashed id; use to change fields on one known group (mutating)."
1654
+ },
1655
+ {
1656
+ "slug": "edit_group_setting",
1657
+ "name": "Shows an GroupSetting for editting",
1658
+ "method": "GET",
1659
+ "path": "/api/v1/group_settings/{id}/edit",
1660
+ "category": "group_settings",
1661
+ "mutating": false,
1662
+ "paramCount": 2,
1663
+ "hasBody": false,
1664
+ "summary": "Fetch one group setting prepared for editing by hashed id; read-only retrieval to populate a form, not the update itself."
1665
+ },
1666
+ {
1667
+ "slug": "upload_group_setting",
1668
+ "name": "Uploads a document to a group setting",
1669
+ "method": "POST",
1670
+ "path": "/api/v1/group_settings/{id}/upload",
1671
+ "category": "group_settings",
1672
+ "mutating": true,
1673
+ "paramCount": 4,
1674
+ "hasBody": true,
1675
+ "summary": "Attach a document or file to one group setting by hashed id; use to add supporting documents to a group (mutating)."
1676
+ },
1677
+ {
1678
+ "slug": "bulk_group_settings",
1679
+ "name": "Performs bulk actions on an array of group_settings",
1680
+ "method": "POST",
1681
+ "path": "/api/v1/group_settings/bulk",
1682
+ "category": "group_settings",
1683
+ "mutating": true,
1684
+ "paramCount": 1,
1685
+ "hasBody": false,
1686
+ "summary": "Run a batch action over an array of group setting ids; use for actions across many groups at once (mutating)."
1687
+ },
1688
+ {
1689
+ "slug": "get_group_settings_create",
1690
+ "name": "Gets a new blank GroupSetting object",
1691
+ "method": "GET",
1692
+ "path": "/api/v1/group_settings/create",
1693
+ "category": "group_settings",
1694
+ "mutating": false,
1695
+ "paramCount": 1,
1696
+ "hasBody": false,
1697
+ "summary": "Fetch a blank group setting template with default values; read-only, use to prefill before storing a new group."
1698
+ },
1699
+ {
1700
+ "slug": "get_health_check",
1701
+ "name": "Attempts to get a health check from the API",
1702
+ "method": "GET",
1703
+ "path": "/api/v1/health_check",
1704
+ "category": "health_check",
1705
+ "mutating": false,
1706
+ "paramCount": 0,
1707
+ "hasBody": false,
1708
+ "summary": "Ping the API health check to verify the instance is up and responding; use for liveness/diagnostics, not for any business data."
1709
+ },
1710
+ {
1711
+ "slug": "post_import",
1712
+ "name": "Import CSV data",
1713
+ "method": "POST",
1714
+ "path": "/api/v1/import",
1715
+ "category": "imports",
1716
+ "mutating": true,
1717
+ "paramCount": 5,
1718
+ "hasBody": true,
1719
+ "summary": "Execute the actual CSV import using the hash and column_map from preimport; call only after preimport returns headers (mutating)."
1720
+ },
1721
+ {
1722
+ "slug": "get_import_json",
1723
+ "name": "Import data from the system",
1724
+ "method": "POST",
1725
+ "path": "/api/v1/import_json",
1726
+ "category": "imports",
1727
+ "mutating": true,
1728
+ "paramCount": 0,
1729
+ "hasBody": false,
1730
+ "summary": "Call to bulk-import a previously exported Invoice Ninja JSON dataset into the company, restoring or migrating records (mutating)."
1731
+ },
1732
+ {
1733
+ "slug": "preimport",
1734
+ "name": "Pre Import CSV data",
1735
+ "method": "POST",
1736
+ "path": "/api/v1/preimport",
1737
+ "category": "imports",
1738
+ "mutating": true,
1739
+ "paramCount": 8,
1740
+ "hasBody": true,
1741
+ "summary": "Upload CSV file(s) first to validate them and get column headers for mapping, before calling the import endpoint that runs the import (mutating)."
1742
+ },
1743
+ {
1744
+ "slug": "download_invoice_by_invitation",
1745
+ "name": "Download invoice PDF",
1746
+ "method": "GET",
1747
+ "path": "/api/v1/invoice/{invitation_key}/download",
1748
+ "category": "invoices",
1749
+ "mutating": false,
1750
+ "paramCount": 2,
1751
+ "hasBody": false,
1752
+ "summary": "Download one invoice's PDF using its invitation_key (recipient link); use this client-facing route, not get_invoice_delivery_note or action download."
1753
+ },
1754
+ {
1755
+ "slug": "get_invoices",
1756
+ "name": "List invoices",
1757
+ "method": "GET",
1758
+ "path": "/api/v1/invoices",
1759
+ "category": "invoices",
1760
+ "mutating": false,
1761
+ "paramCount": 22,
1762
+ "hasBody": false,
1763
+ "summary": "Fetch and filter many invoices by client, status, number, date, or overdue with pagination; use to search or list, not to read one by id."
1764
+ },
1765
+ {
1766
+ "slug": "store_invoice",
1767
+ "name": "Create invoice",
1768
+ "method": "POST",
1769
+ "path": "/api/v1/invoices",
1770
+ "category": "invoices",
1771
+ "mutating": true,
1772
+ "paramCount": 39,
1773
+ "hasBody": true,
1774
+ "summary": "Create a new invoice for a client (client_id required), optionally chaining send/mark actions; use to make a new invoice, not update_invoice (mutating)."
1775
+ },
1776
+ {
1777
+ "slug": "delete_invoice",
1778
+ "name": "Delete invoice",
1779
+ "method": "DELETE",
1780
+ "path": "/api/v1/invoices/{id}",
1781
+ "category": "invoices",
1782
+ "mutating": true,
1783
+ "paramCount": 2,
1784
+ "hasBody": false,
1785
+ "summary": "Archive/soft-delete one invoice by id; use this over bulk_invoices when removing a single invoice (mutating)."
1786
+ },
1787
+ {
1788
+ "slug": "show_invoice",
1789
+ "name": "Show invoice",
1790
+ "method": "GET",
1791
+ "path": "/api/v1/invoices/{id}",
1792
+ "category": "invoices",
1793
+ "mutating": false,
1794
+ "paramCount": 2,
1795
+ "hasBody": false,
1796
+ "summary": "Fetch one invoice by id with optional includes; use when you have the hashed id, not get_invoices for searching."
1797
+ },
1798
+ {
1799
+ "slug": "update_invoice",
1800
+ "name": "Update invoice",
1801
+ "method": "PUT",
1802
+ "path": "/api/v1/invoices/{id}",
1803
+ "category": "invoices",
1804
+ "mutating": true,
1805
+ "paramCount": 2,
1806
+ "hasBody": false,
1807
+ "summary": "Modify an existing invoice by id, optionally chaining ?send_email/?mark_sent/?paid actions; use to edit, not store_invoice which creates new (mutating)."
1808
+ },
1809
+ {
1810
+ "slug": "action_invoice",
1811
+ "name": "Custom invoice action",
1812
+ "method": "GET",
1813
+ "path": "/api/v1/invoices/{id}/{action}",
1814
+ "category": "invoices",
1815
+ "mutating": true,
1816
+ "paramCount": 3,
1817
+ "hasBody": false,
1818
+ "summary": "Perform a named action on one invoice by id (clone_to_quote, mark_paid, email, archive, history); use for these verbs, not update_invoice (mutating)."
1819
+ },
1820
+ {
1821
+ "slug": "get_invoice_delivery_note",
1822
+ "name": "Download delivery note",
1823
+ "method": "GET",
1824
+ "path": "/api/v1/invoices/{id}/delivery_note",
1825
+ "category": "invoices",
1826
+ "mutating": false,
1827
+ "paramCount": 2,
1828
+ "hasBody": false,
1829
+ "summary": "Download one invoice's delivery-note PDF by id; use for the delivery note specifically, not download_invoice_by_invitation for the invoice PDF."
1830
+ },
1831
+ {
1832
+ "slug": "edit_invoice",
1833
+ "name": "Edit invoice",
1834
+ "method": "GET",
1835
+ "path": "/api/v1/invoices/{id}/edit",
1836
+ "category": "invoices",
1837
+ "mutating": false,
1838
+ "paramCount": 2,
1839
+ "hasBody": false,
1840
+ "summary": "GET one invoice by id prepared for editing; read-only, use before update_invoice, not the update itself."
1841
+ },
1842
+ {
1843
+ "slug": "upload_invoice_document",
1844
+ "name": "Add invoice document",
1845
+ "method": "POST",
1846
+ "path": "/api/v1/invoices/{id}/upload",
1847
+ "category": "invoices",
1848
+ "mutating": true,
1849
+ "paramCount": 4,
1850
+ "hasBody": true,
1851
+ "summary": "Attach document files to one invoice via multipart upload; use to add files, not update_invoice for field edits (mutating)."
1852
+ },
1853
+ {
1854
+ "slug": "bulk_invoices",
1855
+ "name": "Bulk invoice actions",
1856
+ "method": "POST",
1857
+ "path": "/api/v1/invoices/bulk",
1858
+ "category": "invoices",
1859
+ "mutating": true,
1860
+ "paramCount": 4,
1861
+ "hasBody": true,
1862
+ "summary": "Run a batch action (email, bulk_download/print, archive, delete) over an array of invoice ids in one request (mutating)."
1863
+ },
1864
+ {
1865
+ "slug": "get_invoice_create",
1866
+ "name": "Blank invoice",
1867
+ "method": "GET",
1868
+ "path": "/api/v1/invoices/create",
1869
+ "category": "invoices",
1870
+ "mutating": false,
1871
+ "paramCount": 0,
1872
+ "hasBody": false,
1873
+ "summary": "GET a blank invoice object with default values to seed a new-invoice form; read-only, use before store_invoice."
1874
+ },
1875
+ {
1876
+ "slug": "get_locations",
1877
+ "name": "List locations",
1878
+ "method": "GET",
1879
+ "path": "/api/v1/locations",
1880
+ "category": "locations",
1881
+ "mutating": false,
1882
+ "paramCount": 5,
1883
+ "hasBody": false,
1884
+ "summary": "List or filter many client/vendor address locations by name with sorting and pagination; use to find locations or browse the set."
1885
+ },
1886
+ {
1887
+ "slug": "store_location",
1888
+ "name": "Create location",
1889
+ "method": "POST",
1890
+ "path": "/api/v1/locations",
1891
+ "category": "locations",
1892
+ "mutating": true,
1893
+ "paramCount": 16,
1894
+ "hasBody": true,
1895
+ "summary": "Create a new client or vendor address location with name, address, and country fields (mutating)."
1896
+ },
1897
+ {
1898
+ "slug": "delete_location",
1899
+ "name": "Delete location",
1900
+ "method": "DELETE",
1901
+ "path": "/api/v1/locations/{id}",
1902
+ "category": "locations",
1903
+ "mutating": true,
1904
+ "paramCount": 1,
1905
+ "hasBody": false,
1906
+ "summary": "Archive/soft-delete one location by its hashed id (mutating); use update_location to modify or bulk_locations for many."
1907
+ },
1908
+ {
1909
+ "slug": "show_location",
1910
+ "name": "Show location",
1911
+ "method": "GET",
1912
+ "path": "/api/v1/locations/{id}",
1913
+ "category": "locations",
1914
+ "mutating": false,
1915
+ "paramCount": 2,
1916
+ "hasBody": false,
1917
+ "summary": "Fetch one location's full details by its hashed id; use get_locations to search across many instead."
1918
+ },
1919
+ {
1920
+ "slug": "update_location",
1921
+ "name": "Update location",
1922
+ "method": "PUT",
1923
+ "path": "/api/v1/locations/{id}",
1924
+ "category": "locations",
1925
+ "mutating": true,
1926
+ "paramCount": 17,
1927
+ "hasBody": true,
1928
+ "summary": "Modify an existing location by hashed id, changing address, name, or shipping flag (mutating)."
1929
+ },
1930
+ {
1931
+ "slug": "bulk_locations",
1932
+ "name": "Bulk location actions",
1933
+ "method": "POST",
1934
+ "path": "/api/v1/locations/bulk",
1935
+ "category": "locations",
1936
+ "mutating": true,
1937
+ "paramCount": 3,
1938
+ "hasBody": true,
1939
+ "summary": "Archive, restore, or delete many locations at once by passing an array of ids plus an action (mutating)."
1940
+ },
1941
+ {
1942
+ "slug": "get_locations_create",
1943
+ "name": "Blank Location",
1944
+ "method": "GET",
1945
+ "path": "/api/v1/locations/create",
1946
+ "category": "locations",
1947
+ "mutating": false,
1948
+ "paramCount": 1,
1949
+ "hasBody": false,
1950
+ "summary": "Fetch a blank location object with default values to prefill a new-location form before calling store_location."
1951
+ },
1952
+ {
1953
+ "slug": "get_logout",
1954
+ "name": "Logs the user out of their current session",
1955
+ "method": "POST",
1956
+ "path": "/api/v1/logout",
1957
+ "category": "logout",
1958
+ "mutating": true,
1959
+ "paramCount": 2,
1960
+ "hasBody": false,
1961
+ "summary": "Call to log out the current user and invalidate their active session token when ending an authenticated session (mutating)."
1962
+ },
1963
+ {
1964
+ "slug": "post_purge_company_save_settings",
1965
+ "name": "Attempts to purge a companies child records but save the company record and its settings",
1966
+ "method": "POST",
1967
+ "path": "/api/v1/migration/purge_save_settings/{company}",
1968
+ "category": "migration",
1969
+ "mutating": true,
1970
+ "paramCount": 1,
1971
+ "hasBody": false,
1972
+ "summary": "Purge a company's child records by company id while preserving the company and its settings, when wiping data but keeping the account (mutating)."
1973
+ },
1974
+ {
1975
+ "slug": "post_purge_company",
1976
+ "name": "Attempts to purge a company record and all its child records",
1977
+ "method": "POST",
1978
+ "path": "/api/v1/migration/purge/{company}",
1979
+ "category": "migration",
1980
+ "mutating": true,
1981
+ "paramCount": 1,
1982
+ "hasBody": false,
1983
+ "summary": "Permanently purge a company and ALL its child records by company id; use only for full deletion, not the settings-preserving purge (mutating)."
1984
+ },
1985
+ {
1986
+ "slug": "post_start_migration",
1987
+ "name": "Starts the migration from previous version of Invoice Ninja",
1988
+ "method": "POST",
1989
+ "path": "/api/v1/migration/start",
1990
+ "category": "migration",
1991
+ "mutating": true,
1992
+ "paramCount": 1,
1993
+ "hasBody": false,
1994
+ "summary": "Start importing a v4 Invoice Ninja migration file (requires X-API-PASSWORD) when migrating a whole prior install, not mapping a CSV (mutating)."
1995
+ },
1996
+ {
1997
+ "slug": "post_one_time_token",
1998
+ "name": "Attempts to create a one time token",
1999
+ "method": "POST",
2000
+ "path": "/api/v1/one_time_token",
2001
+ "category": "one_time_token",
2002
+ "mutating": true,
2003
+ "paramCount": 0,
2004
+ "hasBody": false,
2005
+ "summary": "Call to mint a short-lived one-time token for a single privileged action like a redirect or hosted-page handoff (mutating)."
2006
+ },
2007
+ {
2008
+ "slug": "get_payment_terms",
2009
+ "name": "Gets a list of payment terms",
2010
+ "method": "GET",
2011
+ "path": "/api/v1/payment_terms",
2012
+ "category": "payment_terms",
2013
+ "mutating": false,
2014
+ "paramCount": 5,
2015
+ "hasBody": false,
2016
+ "summary": "List or filter many payment terms with sorting and pagination; use to browse or find available net-day terms."
2017
+ },
2018
+ {
2019
+ "slug": "store_payment_term",
2020
+ "name": "Adds a Payment",
2021
+ "method": "POST",
2022
+ "path": "/api/v1/payment_terms",
2023
+ "category": "payment_terms",
2024
+ "mutating": true,
2025
+ "paramCount": 6,
2026
+ "hasBody": true,
2027
+ "summary": "Create a new payment term defining a length in days and a display name (mutating)."
2028
+ },
2029
+ {
2030
+ "slug": "delete_payment_term",
2031
+ "name": "Deletes a Payment Term",
2032
+ "method": "DELETE",
2033
+ "path": "/api/v1/payment_terms/{id}",
2034
+ "category": "payment_terms",
2035
+ "mutating": true,
2036
+ "paramCount": 2,
2037
+ "hasBody": false,
2038
+ "summary": "Call to archive/soft-delete one existing payment term by its hashed id; use list/show endpoints to read terms instead (mutating)."
2039
+ },
2040
+ {
2041
+ "slug": "show_payment_term",
2042
+ "name": "Shows a Payment Term",
2043
+ "method": "GET",
2044
+ "path": "/api/v1/payment_terms/{id}",
2045
+ "category": "payment_terms",
2046
+ "mutating": false,
2047
+ "paramCount": 2,
2048
+ "hasBody": false,
2049
+ "summary": "Fetch one payment term's details by its hashed id; use get_payment_terms to search across many instead."
2050
+ },
2051
+ {
2052
+ "slug": "update_payment_term",
2053
+ "name": "Updates a Payment Term",
2054
+ "method": "PUT",
2055
+ "path": "/api/v1/payment_terms/{id}",
2056
+ "category": "payment_terms",
2057
+ "mutating": true,
2058
+ "paramCount": 2,
2059
+ "hasBody": false,
2060
+ "summary": "Modify an existing payment term by its hashed id (mutating); use edit_payment_terms to GET it prepared for editing."
2061
+ },
2062
+ {
2063
+ "slug": "edit_payment_terms",
2064
+ "name": "Shows an Payment Term for editting",
2065
+ "method": "GET",
2066
+ "path": "/api/v1/payment_terms/{id}/edit",
2067
+ "category": "payment_terms",
2068
+ "mutating": false,
2069
+ "paramCount": 2,
2070
+ "hasBody": false,
2071
+ "summary": "GET a single payment term by hashed id prepared for editing (read-only); use update_payment_term to actually save changes."
2072
+ },
2073
+ {
2074
+ "slug": "bulk_payment_terms",
2075
+ "name": "Performs bulk actions on an array of payment terms",
2076
+ "method": "POST",
2077
+ "path": "/api/v1/payment_terms/bulk",
2078
+ "category": "payment_terms",
2079
+ "mutating": true,
2080
+ "paramCount": 1,
2081
+ "hasBody": false,
2082
+ "summary": "Archive, restore, or delete many payment terms at once over an array of ids (mutating)."
2083
+ },
2084
+ {
2085
+ "slug": "get_payment_terms_create",
2086
+ "name": "Gets a new blank PaymentTerm object",
2087
+ "method": "GET",
2088
+ "path": "/api/v1/payment_terms/create",
2089
+ "category": "payment_terms",
2090
+ "mutating": false,
2091
+ "paramCount": 1,
2092
+ "hasBody": false,
2093
+ "summary": "Fetch a blank payment-term object with default values to prefill a new term before calling store_payment_term."
2094
+ },
2095
+ {
2096
+ "slug": "get_payments",
2097
+ "name": "List payments",
2098
+ "method": "GET",
2099
+ "path": "/api/v1/payments",
2100
+ "category": "payments",
2101
+ "mutating": false,
2102
+ "paramCount": 14,
2103
+ "hasBody": false,
2104
+ "summary": "List and filter many payments by client, status, number, or date range when you need a set of records, not one by id."
2105
+ },
2106
+ {
2107
+ "slug": "store_payment",
2108
+ "name": "Create payment",
2109
+ "method": "POST",
2110
+ "path": "/api/v1/payments",
2111
+ "category": "payments",
2112
+ "mutating": true,
2113
+ "paramCount": 14,
2114
+ "hasBody": true,
2115
+ "summary": "Create a new payment, optionally applying it to invoices/credits and emailing a receipt, when recording a fresh payment (mutating)."
2116
+ },
2117
+ {
2118
+ "slug": "delete_payment",
2119
+ "name": "Delete payment",
2120
+ "method": "DELETE",
2121
+ "path": "/api/v1/payments/{id}",
2122
+ "category": "payments",
2123
+ "mutating": true,
2124
+ "paramCount": 2,
2125
+ "hasBody": false,
2126
+ "summary": "Archive/soft-delete a single existing payment by its hashed id when removing it from active lists (mutating)."
2127
+ },
2128
+ {
2129
+ "slug": "show_payment",
2130
+ "name": "Show payment",
2131
+ "method": "GET",
2132
+ "path": "/api/v1/payments/{id}",
2133
+ "category": "payments",
2134
+ "mutating": false,
2135
+ "paramCount": 2,
2136
+ "hasBody": false,
2137
+ "summary": "Fetch one payment's full details by its hashed id when you already know the specific payment you need."
2138
+ },
2139
+ {
2140
+ "slug": "update_payment",
2141
+ "name": "Update payment",
2142
+ "method": "PUT",
2143
+ "path": "/api/v1/payments/{id}",
2144
+ "category": "payments",
2145
+ "mutating": true,
2146
+ "paramCount": 2,
2147
+ "hasBody": false,
2148
+ "summary": "Modify an existing payment by its hashed id when changing fields on a record that already exists (mutating)."
2149
+ },
2150
+ {
2151
+ "slug": "action_payment",
2152
+ "name": "Custom payment actions",
2153
+ "method": "GET",
2154
+ "path": "/api/v1/payments/{id}/{action}",
2155
+ "category": "payments",
2156
+ "mutating": true,
2157
+ "paramCount": 3,
2158
+ "hasBody": false,
2159
+ "summary": "Run a named action (mark_paid, email, download, clone, archive) on one payment by id and action string (mutating)."
2160
+ },
2161
+ {
2162
+ "slug": "edit_payment",
2163
+ "name": "Edit payment",
2164
+ "method": "GET",
2165
+ "path": "/api/v1/payments/{id}/edit",
2166
+ "category": "payments",
2167
+ "mutating": false,
2168
+ "paramCount": 2,
2169
+ "hasBody": false,
2170
+ "summary": "Fetch one payment by id prepared for editing in a form; read-only, use update_payment to actually save changes."
2171
+ },
2172
+ {
2173
+ "slug": "upload_payment",
2174
+ "name": "Upload a payment document",
2175
+ "method": "POST",
2176
+ "path": "/api/v1/payments/{id}/upload",
2177
+ "category": "payments",
2178
+ "mutating": true,
2179
+ "paramCount": 4,
2180
+ "hasBody": true,
2181
+ "summary": "Attach a document/file to an existing payment by its hashed id via multipart upload (mutating)."
2182
+ },
2183
+ {
2184
+ "slug": "bulk_payments",
2185
+ "name": "Bulk payment actions",
2186
+ "method": "POST",
2187
+ "path": "/api/v1/payments/bulk",
2188
+ "category": "payments",
2189
+ "mutating": true,
2190
+ "paramCount": 1,
2191
+ "hasBody": false,
2192
+ "summary": "Apply one batch action across many payment ids at once instead of acting on a single payment (mutating)."
2193
+ },
2194
+ {
2195
+ "slug": "get_payments_create",
2196
+ "name": "Blank payment",
2197
+ "method": "GET",
2198
+ "path": "/api/v1/payments/create",
2199
+ "category": "payments",
2200
+ "mutating": false,
2201
+ "paramCount": 1,
2202
+ "hasBody": false,
2203
+ "summary": "Fetch a blank payment object with default values to seed a new-payment form; read-only, does not create anything."
2204
+ },
2205
+ {
2206
+ "slug": "store_refund",
2207
+ "name": "Refund payment",
2208
+ "method": "POST",
2209
+ "path": "/api/v1/payments/refund",
2210
+ "category": "payments",
2211
+ "mutating": true,
2212
+ "paramCount": 30,
2213
+ "hasBody": true,
2214
+ "summary": "Refund an existing payment, specifying amount and target invoices, when reversing funds rather than recording a new payment (mutating)."
2215
+ },
2216
+ {
2217
+ "slug": "get_last_error",
2218
+ "name": "Returns the last error",
2219
+ "method": "GET",
2220
+ "path": "/api/v1/last_error",
2221
+ "category": "ping",
2222
+ "mutating": false,
2223
+ "paramCount": 0,
2224
+ "hasBody": false,
2225
+ "summary": "Fetch the API's most recent error message when diagnosing a prior failed request, rather than checking liveness."
2226
+ },
2227
+ {
2228
+ "slug": "get_ping",
2229
+ "name": "Attempts to ping the API",
2230
+ "method": "GET",
2231
+ "path": "/api/v1/ping",
2232
+ "category": "ping",
2233
+ "mutating": false,
2234
+ "paramCount": 0,
2235
+ "hasBody": false,
2236
+ "summary": "Ping the API to verify connectivity and credentials with a lightweight health check, not to read error details."
2237
+ },
2238
+ {
2239
+ "slug": "confirm_apple_purchase",
2240
+ "name": "Processing webhooks from Apple for in app purchases",
2241
+ "method": "POST",
2242
+ "path": "/api/v1/apple/confirm_purchase",
2243
+ "category": "postmark",
2244
+ "mutating": true,
2245
+ "paramCount": 1,
2246
+ "hasBody": false,
2247
+ "summary": "Confirm an Apple in-app purchase and credit the account when handling a one-time Apple purchase confirmation, not a subscription event (mutating)."
2248
+ },
2249
+ {
2250
+ "slug": "process_apple_webhook",
2251
+ "name": "Processing event webhooks from Apple for in purchase / subscription status update",
2252
+ "method": "POST",
2253
+ "path": "/api/v1/apple/process_webhook",
2254
+ "category": "postmark",
2255
+ "mutating": true,
2256
+ "paramCount": 1,
2257
+ "hasBody": false,
2258
+ "summary": "Process Apple subscription/purchase-status event webhooks for ongoing updates, distinct from confirming a single purchase (mutating)."
2259
+ },
2260
+ {
2261
+ "slug": "postmark_webhook",
2262
+ "name": "Processing webhooks from PostMark",
2263
+ "method": "POST",
2264
+ "path": "/api/v1/postmark_webhook",
2265
+ "category": "postmark",
2266
+ "mutating": true,
2267
+ "paramCount": 1,
2268
+ "hasBody": false,
2269
+ "summary": "Receive Postmark email event webhooks (delivery/bounce) for inbound email processing, not Apple purchase events (mutating)."
2270
+ },
2271
+ {
2272
+ "slug": "get_preview",
2273
+ "name": "Returns a pdf preview",
2274
+ "method": "POST",
2275
+ "path": "/api/v1/preview",
2276
+ "category": "preview",
2277
+ "mutating": false,
2278
+ "paramCount": 0,
2279
+ "hasBody": false,
2280
+ "summary": "Generate an on-the-fly PDF preview of an invoice/quote/credit from posted entity data without saving it; use for general entities, not purchase orders"
2281
+ },
2282
+ {
2283
+ "slug": "get_preview_purchase_order",
2284
+ "name": "Returns a pdf preview for purchase order",
2285
+ "method": "POST",
2286
+ "path": "/api/v1/preview/purchase_order",
2287
+ "category": "preview",
2288
+ "mutating": false,
2289
+ "paramCount": 0,
2290
+ "hasBody": false,
2291
+ "summary": "Generate an on-the-fly PDF preview specifically for a purchase order from posted data; use this instead of get_preview when the entity is a purchase order"
2292
+ },
2293
+ {
2294
+ "slug": "get_products",
2295
+ "name": "List products",
2296
+ "method": "GET",
2297
+ "path": "/api/v1/products",
2298
+ "category": "products",
2299
+ "mutating": false,
2300
+ "paramCount": 14,
2301
+ "hasBody": false,
2302
+ "summary": "List and filter many products in your company, with search, sorting, and pagination; reach for it to browse or find products by criteria."
2303
+ },
2304
+ {
2305
+ "slug": "store_product",
2306
+ "name": "Create Product",
2307
+ "method": "POST",
2308
+ "path": "/api/v1/products",
2309
+ "category": "products",
2310
+ "mutating": true,
2311
+ "paramCount": 26,
2312
+ "hasBody": true,
2313
+ "summary": "Create a brand-new product record with its details and pricing; use when adding a product that does not yet exist (mutating)."
2314
+ },
2315
+ {
2316
+ "slug": "delete_product",
2317
+ "name": "Delete product",
2318
+ "method": "DELETE",
2319
+ "path": "/api/v1/products/{id}",
2320
+ "category": "products",
2321
+ "mutating": true,
2322
+ "paramCount": 2,
2323
+ "hasBody": false,
2324
+ "summary": "Archive/soft-delete a single product by id; use to remove or retire one product without permanently purging it (mutating)."
2325
+ },
2326
+ {
2327
+ "slug": "show_product",
2328
+ "name": "Show product",
2329
+ "method": "GET",
2330
+ "path": "/api/v1/products/{id}",
2331
+ "category": "products",
2332
+ "mutating": false,
2333
+ "paramCount": 2,
2334
+ "hasBody": false,
2335
+ "summary": "Fetch one specific product by its id when you already know the id and need its full details, not a filtered list."
2336
+ },
2337
+ {
2338
+ "slug": "update_product",
2339
+ "name": "Update product",
2340
+ "method": "PUT",
2341
+ "path": "/api/v1/products/{id}",
2342
+ "category": "products",
2343
+ "mutating": true,
2344
+ "paramCount": 27,
2345
+ "hasBody": true,
2346
+ "summary": "Modify an existing product's fields by id; use to change price, notes, or other attributes of a known product (mutating)."
2347
+ },
2348
+ {
2349
+ "slug": "edit_product",
2350
+ "name": "Edit product",
2351
+ "method": "GET",
2352
+ "path": "/api/v1/products/{id}/edit",
2353
+ "category": "products",
2354
+ "mutating": false,
2355
+ "paramCount": 2,
2356
+ "hasBody": false,
2357
+ "summary": "Fetch one product by id prepared for editing (read-only); use to load current values before calling update_product, not to save changes."
2358
+ },
2359
+ {
2360
+ "slug": "upload_product",
2361
+ "name": "Add product document",
2362
+ "method": "POST",
2363
+ "path": "/api/v1/products/{id}/upload",
2364
+ "category": "products",
2365
+ "mutating": true,
2366
+ "paramCount": 4,
2367
+ "hasBody": true,
2368
+ "summary": "Attach a document or file to an existing product by id; use to add supporting attachments to one product (mutating)."
2369
+ },
2370
+ {
2371
+ "slug": "bulk_products",
2372
+ "name": "Bulk product actions",
2373
+ "method": "POST",
2374
+ "path": "/api/v1/products/bulk",
2375
+ "category": "products",
2376
+ "mutating": true,
2377
+ "paramCount": 4,
2378
+ "hasBody": true,
2379
+ "summary": "Run a named action over many product ids at once (archive, restore, delete, set tax); use for batch operations, not single edits (mutating)."
2380
+ },
2381
+ {
2382
+ "slug": "get_products_create",
2383
+ "name": "Blank product",
2384
+ "method": "GET",
2385
+ "path": "/api/v1/products/create",
2386
+ "category": "products",
2387
+ "mutating": false,
2388
+ "paramCount": 1,
2389
+ "hasBody": false,
2390
+ "summary": "Fetch a blank product template with default values (read-only); use to prefill a new-product form before calling store_product."
2391
+ },
2392
+ {
2393
+ "slug": "get_projects",
2394
+ "name": "List projects",
2395
+ "method": "GET",
2396
+ "path": "/api/v1/projects",
2397
+ "category": "projects",
2398
+ "mutating": false,
2399
+ "paramCount": 5,
2400
+ "hasBody": false,
2401
+ "summary": "List and filter many projects in your company, with search, sorting, and pagination; reach for it to browse or find projects by criteria."
2402
+ },
2403
+ {
2404
+ "slug": "store_project",
2405
+ "name": "Create project",
2406
+ "method": "POST",
2407
+ "path": "/api/v1/projects",
2408
+ "category": "projects",
2409
+ "mutating": true,
2410
+ "paramCount": 15,
2411
+ "hasBody": true,
2412
+ "summary": "Create a brand-new project record with its details; use when adding a project that does not yet exist (mutating)."
2413
+ },
2414
+ {
2415
+ "slug": "delete_project",
2416
+ "name": "Delete project",
2417
+ "method": "DELETE",
2418
+ "path": "/api/v1/projects/{id}",
2419
+ "category": "projects",
2420
+ "mutating": true,
2421
+ "paramCount": 2,
2422
+ "hasBody": false,
2423
+ "summary": "Archive/soft-delete a single project by id; use to remove or retire one project without permanently purging it (mutating)."
2424
+ },
2425
+ {
2426
+ "slug": "show_project",
2427
+ "name": "Show project",
2428
+ "method": "GET",
2429
+ "path": "/api/v1/projects/{id}",
2430
+ "category": "projects",
2431
+ "mutating": false,
2432
+ "paramCount": 2,
2433
+ "hasBody": false,
2434
+ "summary": "Fetch one specific project by its id when you already know the id and need its full details, not a filtered list."
2435
+ },
2436
+ {
2437
+ "slug": "update_project",
2438
+ "name": "Update project",
2439
+ "method": "PUT",
2440
+ "path": "/api/v1/projects/{id}",
2441
+ "category": "projects",
2442
+ "mutating": true,
2443
+ "paramCount": 16,
2444
+ "hasBody": true,
2445
+ "summary": "Modify an existing project's fields by id; use to change name, client, budget, or other attributes of a known project (mutating)."
2446
+ },
2447
+ {
2448
+ "slug": "edit_project",
2449
+ "name": "Edit project",
2450
+ "method": "GET",
2451
+ "path": "/api/v1/projects/{id}/edit",
2452
+ "category": "projects",
2453
+ "mutating": false,
2454
+ "paramCount": 2,
2455
+ "hasBody": false,
2456
+ "summary": "Fetch one project by id prepared for editing (read-only); use to load current values before calling update_project, not to save changes."
2457
+ },
2458
+ {
2459
+ "slug": "upload_project",
2460
+ "name": "Uploads a project document",
2461
+ "method": "POST",
2462
+ "path": "/api/v1/projects/{id}/upload",
2463
+ "category": "projects",
2464
+ "mutating": true,
2465
+ "paramCount": 4,
2466
+ "hasBody": true,
2467
+ "summary": "Attach a document or file to an existing project by id; use to add supporting attachments to one project (mutating)."
2468
+ },
2469
+ {
2470
+ "slug": "bulk_projects",
2471
+ "name": "Bulk project actions",
2472
+ "method": "POST",
2473
+ "path": "/api/v1/projects/bulk",
2474
+ "category": "projects",
2475
+ "mutating": true,
2476
+ "paramCount": 1,
2477
+ "hasBody": false,
2478
+ "summary": "Run a named action over many project ids at once (archive, restore, delete); use for batch operations, not single edits (mutating)."
2479
+ },
2480
+ {
2481
+ "slug": "get_projects_create",
2482
+ "name": "Blank project",
2483
+ "method": "GET",
2484
+ "path": "/api/v1/projects/create",
2485
+ "category": "projects",
2486
+ "mutating": false,
2487
+ "paramCount": 1,
2488
+ "hasBody": false,
2489
+ "summary": "Fetch a blank project template with default values (read-only); use to prefill a new-project form before calling store_project."
2490
+ },
2491
+ {
2492
+ "slug": "download_purchase_order",
2493
+ "name": "Download a purchase order PDF",
2494
+ "method": "GET",
2495
+ "path": "/api/v1/purchase_order/{invitation_key}/download",
2496
+ "category": "purchase_orders",
2497
+ "mutating": false,
2498
+ "paramCount": 2,
2499
+ "hasBody": false,
2500
+ "summary": "Download a purchase order's PDF by its invitation key when you need the rendered document file rather than JSON data."
2501
+ },
2502
+ {
2503
+ "slug": "get_purchase_orders",
2504
+ "name": "List purchase orders",
2505
+ "method": "GET",
2506
+ "path": "/api/v1/purchase_orders",
2507
+ "category": "purchase_orders",
2508
+ "mutating": false,
2509
+ "paramCount": 5,
2510
+ "hasBody": false,
2511
+ "summary": "List and filter many purchase orders with sorting/pagination when you need a set of records, not one by id."
2512
+ },
2513
+ {
2514
+ "slug": "store_purchase_order",
2515
+ "name": "Create purchase order",
2516
+ "method": "POST",
2517
+ "path": "/api/v1/purchase_orders",
2518
+ "category": "purchase_orders",
2519
+ "mutating": true,
2520
+ "paramCount": 11,
2521
+ "hasBody": true,
2522
+ "summary": "Create a new purchase order for a vendor with dates and line items when recording a fresh PO (mutating)."
2523
+ },
2524
+ {
2525
+ "slug": "delete_purchase_order",
2526
+ "name": "Delete purchase order",
2527
+ "method": "DELETE",
2528
+ "path": "/api/v1/purchase_orders/{id}",
2529
+ "category": "purchase_orders",
2530
+ "mutating": true,
2531
+ "paramCount": 2,
2532
+ "hasBody": false,
2533
+ "summary": "Archive/soft-delete a single existing purchase order by its hashed id when removing it from active lists (mutating)."
2534
+ },
2535
+ {
2536
+ "slug": "show_purchase_order",
2537
+ "name": "Show purchase order",
2538
+ "method": "GET",
2539
+ "path": "/api/v1/purchase_orders/{id}",
2540
+ "category": "purchase_orders",
2541
+ "mutating": false,
2542
+ "paramCount": 2,
2543
+ "hasBody": false,
2544
+ "summary": "Fetch one purchase order's full details by its hashed id when you already know the specific PO you need."
2545
+ },
2546
+ {
2547
+ "slug": "update_purchase_order",
2548
+ "name": "Update purchase order",
2549
+ "method": "PUT",
2550
+ "path": "/api/v1/purchase_orders/{id}",
2551
+ "category": "purchase_orders",
2552
+ "mutating": true,
2553
+ "paramCount": 12,
2554
+ "hasBody": true,
2555
+ "summary": "Modify an existing purchase order by its hashed id, updating vendor, dates, or line items on a record that already exists (mutating)."
2556
+ },
2557
+ {
2558
+ "slug": "action_purchase_order",
2559
+ "name": "Custom purchase order actions",
2560
+ "method": "GET",
2561
+ "path": "/api/v1/purchase_orders/{id}/{action}",
2562
+ "category": "purchase_orders",
2563
+ "mutating": true,
2564
+ "paramCount": 3,
2565
+ "hasBody": false,
2566
+ "summary": "Run a named action (mark_paid, email, download, archive, delete) on one purchase order by id and action string (mutating)."
2567
+ },
2568
+ {
2569
+ "slug": "edit_purchase_order",
2570
+ "name": "Edit purchase order",
2571
+ "method": "GET",
2572
+ "path": "/api/v1/purchase_orders/{id}/edit",
2573
+ "category": "purchase_orders",
2574
+ "mutating": false,
2575
+ "paramCount": 2,
2576
+ "hasBody": false,
2577
+ "summary": "Fetch one purchase order by id prepared for editing in a form; read-only, use update_purchase_order to actually save changes."
2578
+ },
2579
+ {
2580
+ "slug": "upload_purchase_order",
2581
+ "name": "Uploads a purchase order document",
2582
+ "method": "POST",
2583
+ "path": "/api/v1/purchase_orders/{id}/upload",
2584
+ "category": "purchase_orders",
2585
+ "mutating": true,
2586
+ "paramCount": 4,
2587
+ "hasBody": true,
2588
+ "summary": "Attach a document/file to an existing purchase order by its hashed id via multipart upload (mutating)."
2589
+ },
2590
+ {
2591
+ "slug": "bulk_purchase_orderss",
2592
+ "name": "Bulk purchase order action",
2593
+ "method": "POST",
2594
+ "path": "/api/v1/purchase_orders/bulk",
2595
+ "category": "purchase_orders",
2596
+ "mutating": true,
2597
+ "paramCount": 1,
2598
+ "hasBody": false,
2599
+ "summary": "Apply one batch action across many purchase order ids at once instead of acting on a single PO (mutating)."
2600
+ },
2601
+ {
2602
+ "slug": "get_purchase_order_create",
2603
+ "name": "Blank purchase order",
2604
+ "method": "GET",
2605
+ "path": "/api/v1/purchase_orders/create",
2606
+ "category": "purchase_orders",
2607
+ "mutating": false,
2608
+ "paramCount": 1,
2609
+ "hasBody": false,
2610
+ "summary": "Fetch a blank purchase order object with default values to seed a new-PO form; read-only, does not create anything."
2611
+ },
2612
+ {
2613
+ "slug": "download_credit",
2614
+ "name": "Download quote PDF",
2615
+ "method": "GET",
2616
+ "path": "/api/v1/credit/{invitation_key}/download",
2617
+ "category": "quotes",
2618
+ "mutating": false,
2619
+ "paramCount": 2,
2620
+ "hasBody": false,
2621
+ "summary": "Download a credit's PDF by its credit invitation key; use for credits, not the quote or invoice download endpoints."
2622
+ },
2623
+ {
2624
+ "slug": "download_quote",
2625
+ "name": "Download quote PDF",
2626
+ "method": "GET",
2627
+ "path": "/api/v1/quote/{invitation_key}/download",
2628
+ "category": "quotes",
2629
+ "mutating": false,
2630
+ "paramCount": 2,
2631
+ "hasBody": false,
2632
+ "summary": "Download a quote's PDF by its quote invitation key; use for quotes specifically, not credits or invoices."
2633
+ },
2634
+ {
2635
+ "slug": "get_quotes",
2636
+ "name": "List quotes",
2637
+ "method": "GET",
2638
+ "path": "/api/v1/quotes",
2639
+ "category": "quotes",
2640
+ "mutating": false,
2641
+ "paramCount": 15,
2642
+ "hasBody": false,
2643
+ "summary": "List or filter many quotes by client, status, number, or date; use to find or browse quotes, not to fetch one by id."
2644
+ },
2645
+ {
2646
+ "slug": "store_quote",
2647
+ "name": "Create quote",
2648
+ "method": "POST",
2649
+ "path": "/api/v1/quotes",
2650
+ "category": "quotes",
2651
+ "mutating": true,
2652
+ "paramCount": 11,
2653
+ "hasBody": true,
2654
+ "summary": "Create a new quote for a client with line items; use when adding a quote that does not exist yet (mutating)."
2655
+ },
2656
+ {
2657
+ "slug": "delete_quote",
2658
+ "name": "Delete quote",
2659
+ "method": "DELETE",
2660
+ "path": "/api/v1/quotes/{id}",
2661
+ "category": "quotes",
2662
+ "mutating": true,
2663
+ "paramCount": 2,
2664
+ "hasBody": false,
2665
+ "summary": "Archive/soft-delete one quote by its hashed id; use to remove a quote, not to update it (mutating)."
2666
+ },
2667
+ {
2668
+ "slug": "show_quote",
2669
+ "name": "Show quote",
2670
+ "method": "GET",
2671
+ "path": "/api/v1/quotes/{id}",
2672
+ "category": "quotes",
2673
+ "mutating": false,
2674
+ "paramCount": 2,
2675
+ "hasBody": false,
2676
+ "summary": "Fetch one quote's full record by its hashed id; use when you already know the id, not for listing or editing."
2677
+ },
2678
+ {
2679
+ "slug": "update_quote",
2680
+ "name": "Update quote",
2681
+ "method": "PUT",
2682
+ "path": "/api/v1/quotes/{id}",
2683
+ "category": "quotes",
2684
+ "mutating": true,
2685
+ "paramCount": 12,
2686
+ "hasBody": true,
2687
+ "summary": "Modify an existing quote by id, changing client, dates, notes, or line items; use to save edits to a known quote (mutating)."
2688
+ },
2689
+ {
2690
+ "slug": "action_quote",
2691
+ "name": "Performs a custom action on an Quote",
2692
+ "method": "GET",
2693
+ "path": "/api/v1/quotes/{id}/{action}",
2694
+ "category": "quotes",
2695
+ "mutating": true,
2696
+ "paramCount": 3,
2697
+ "hasBody": false,
2698
+ "summary": "Run a named action (clone, convert, mark_paid, email, archive) on one quote by id; use for quote workflow operations (mutating)."
2699
+ },
2700
+ {
2701
+ "slug": "edit_quote",
2702
+ "name": "Edit quote",
2703
+ "method": "GET",
2704
+ "path": "/api/v1/quotes/{id}/edit",
2705
+ "category": "quotes",
2706
+ "mutating": false,
2707
+ "paramCount": 2,
2708
+ "hasBody": false,
2709
+ "summary": "Fetch one quote by id prepared for editing (read-only); use to load form data before calling update_quote, not to save changes."
2710
+ },
2711
+ {
2712
+ "slug": "upload_quote",
2713
+ "name": "Upload a quote document",
2714
+ "method": "POST",
2715
+ "path": "/api/v1/quotes/{id}/upload",
2716
+ "category": "quotes",
2717
+ "mutating": true,
2718
+ "paramCount": 4,
2719
+ "hasBody": true,
2720
+ "summary": "Attach a document/file to an existing quote by id via multipart upload; use to add supporting files to a quote (mutating)."
2721
+ },
2722
+ {
2723
+ "slug": "bulk_quotes",
2724
+ "name": "Bulk quote actions",
2725
+ "method": "POST",
2726
+ "path": "/api/v1/quotes/bulk",
2727
+ "category": "quotes",
2728
+ "mutating": true,
2729
+ "paramCount": 3,
2730
+ "hasBody": true,
2731
+ "summary": "Run a batch action (approve, convert, send_email, mark_sent) over an array of quote ids; use for multi-quote operations (mutating)."
2732
+ },
2733
+ {
2734
+ "slug": "get_quotes_create",
2735
+ "name": "Blank quote",
2736
+ "method": "GET",
2737
+ "path": "/api/v1/quotes/create",
2738
+ "category": "quotes",
2739
+ "mutating": false,
2740
+ "paramCount": 1,
2741
+ "hasBody": false,
2742
+ "summary": "Fetch a blank quote object with default values (read-only); use to seed a new quote form before calling store_quote."
2743
+ },
2744
+ {
2745
+ "slug": "get_recurring_expenses",
2746
+ "name": "Gets a list of recurring_expenses",
2747
+ "method": "GET",
2748
+ "path": "/api/v1/recurring_expenses",
2749
+ "category": "recurring_expenses",
2750
+ "mutating": false,
2751
+ "paramCount": 5,
2752
+ "hasBody": false,
2753
+ "summary": "List or filter many recurring expense templates, with pagination and sorting; use to browse, not to fetch one by id."
2754
+ },
2755
+ {
2756
+ "slug": "store_recurring_expense",
2757
+ "name": "Adds a recurring expense",
2758
+ "method": "POST",
2759
+ "path": "/api/v1/recurring_expenses",
2760
+ "category": "recurring_expenses",
2761
+ "mutating": true,
2762
+ "paramCount": 1,
2763
+ "hasBody": false,
2764
+ "summary": "Create a new recurring expense template for the company when adding a repeating cost (mutating)."
2765
+ },
2766
+ {
2767
+ "slug": "delete_recurring_expense",
2768
+ "name": "Deletes a recurring expense",
2769
+ "method": "DELETE",
2770
+ "path": "/api/v1/recurring_expenses/{id}",
2771
+ "category": "recurring_expenses",
2772
+ "mutating": true,
2773
+ "paramCount": 2,
2774
+ "hasBody": false,
2775
+ "summary": "Archive/soft-delete one recurring expense by its hashed id when retiring a repeating cost (mutating)."
2776
+ },
2777
+ {
2778
+ "slug": "show_recurring_expense",
2779
+ "name": "Shows a recurring expense",
2780
+ "method": "GET",
2781
+ "path": "/api/v1/recurring_expenses/{id}",
2782
+ "category": "recurring_expenses",
2783
+ "mutating": false,
2784
+ "paramCount": 2,
2785
+ "hasBody": false,
2786
+ "summary": "Fetch one recurring expense by its hashed id to read its full details; use when you already know the id."
2787
+ },
2788
+ {
2789
+ "slug": "update_recurring_expense",
2790
+ "name": "Updates a recurring expense",
2791
+ "method": "PUT",
2792
+ "path": "/api/v1/recurring_expenses/{id}",
2793
+ "category": "recurring_expenses",
2794
+ "mutating": true,
2795
+ "paramCount": 2,
2796
+ "hasBody": false,
2797
+ "summary": "Modify an existing recurring expense by its hashed id to change amount, schedule, or other fields (mutating)."
2798
+ },
2799
+ {
2800
+ "slug": "edit_recurring_expense",
2801
+ "name": "Shows a recurring expense for editting",
2802
+ "method": "GET",
2803
+ "path": "/api/v1/recurring_expenses/{id}/edit",
2804
+ "category": "recurring_expenses",
2805
+ "mutating": false,
2806
+ "paramCount": 2,
2807
+ "hasBody": false,
2808
+ "summary": "Fetch one recurring expense by id prepared for editing (read-only); use to preload a form, not to save changes."
2809
+ },
2810
+ {
2811
+ "slug": "upload_recurring_expense",
2812
+ "name": "Uploads a document to a recurring_expense",
2813
+ "method": "POST",
2814
+ "path": "/api/v1/recurring_expenses/{id}/upload",
2815
+ "category": "recurring_expenses",
2816
+ "mutating": true,
2817
+ "paramCount": 4,
2818
+ "hasBody": true,
2819
+ "summary": "Call to attach a document file to one existing recurring expense by id via multipart upload, not to create or edit it (mutating)."
2820
+ },
2821
+ {
2822
+ "slug": "bulk_recurring_expenses",
2823
+ "name": "Performs bulk actions on an array of recurring_expenses",
2824
+ "method": "POST",
2825
+ "path": "/api/v1/recurring_expenses/bulk",
2826
+ "category": "recurring_expenses",
2827
+ "mutating": true,
2828
+ "paramCount": 1,
2829
+ "hasBody": false,
2830
+ "summary": "Perform a batch action over many recurring expenses by passing an array of ids in one request (mutating)."
2831
+ },
2832
+ {
2833
+ "slug": "get_recurring_expenses_create",
2834
+ "name": "Gets a new blank recurring expense object",
2835
+ "method": "GET",
2836
+ "path": "/api/v1/recurring_expenses/create",
2837
+ "category": "recurring_expenses",
2838
+ "mutating": false,
2839
+ "paramCount": 1,
2840
+ "hasBody": false,
2841
+ "summary": "Fetch a blank recurring expense object with default values (read-only) to seed a new-record form before storing."
2842
+ },
2843
+ {
2844
+ "slug": "download_recurring_invoice",
2845
+ "name": "Download recurring invoice PDF",
2846
+ "method": "GET",
2847
+ "path": "/api/v1/recurring_invoice/{invitation_key}/download",
2848
+ "category": "recurring_invoices",
2849
+ "mutating": false,
2850
+ "paramCount": 2,
2851
+ "hasBody": false,
2852
+ "summary": "Download a recurring invoice's PDF by its invitation_key; use when you need the rendered file, not JSON record data."
2853
+ },
2854
+ {
2855
+ "slug": "get_recurring_invoices",
2856
+ "name": "List recurring invoices",
2857
+ "method": "GET",
2858
+ "path": "/api/v1/recurring_invoices",
2859
+ "category": "recurring_invoices",
2860
+ "mutating": false,
2861
+ "paramCount": 17,
2862
+ "hasBody": false,
2863
+ "summary": "List or filter many recurring invoices by client, status, frequency, or next-send date; use to browse or search, not to fetch one."
2864
+ },
2865
+ {
2866
+ "slug": "store_recurring_invoice",
2867
+ "name": "Create recurring invoice",
2868
+ "method": "POST",
2869
+ "path": "/api/v1/recurring_invoices",
2870
+ "category": "recurring_invoices",
2871
+ "mutating": true,
2872
+ "paramCount": 13,
2873
+ "hasBody": true,
2874
+ "summary": "Create a new recurring invoice from client, dates, frequency, and line items; use to set up recurring billing (mutating)."
2875
+ },
2876
+ {
2877
+ "slug": "delete_recurring_invoice",
2878
+ "name": "Delete recurring invoice",
2879
+ "method": "DELETE",
2880
+ "path": "/api/v1/recurring_invoices/{id}",
2881
+ "category": "recurring_invoices",
2882
+ "mutating": true,
2883
+ "paramCount": 2,
2884
+ "hasBody": false,
2885
+ "summary": "Archive/soft-delete one recurring invoice by id; use to remove a recurring schedule rather than edit or stop it (mutating)."
2886
+ },
2887
+ {
2888
+ "slug": "show_recurring_invoice",
2889
+ "name": "Show recurring invoice",
2890
+ "method": "GET",
2891
+ "path": "/api/v1/recurring_invoices/{id}",
2892
+ "category": "recurring_invoices",
2893
+ "mutating": false,
2894
+ "paramCount": 2,
2895
+ "hasBody": false,
2896
+ "summary": "Fetch one recurring invoice's full record by id; use when you already know the id and need its current details."
2897
+ },
2898
+ {
2899
+ "slug": "update_recurring_invoice",
2900
+ "name": "Update recurring invoice",
2901
+ "method": "PUT",
2902
+ "path": "/api/v1/recurring_invoices/{id}",
2903
+ "category": "recurring_invoices",
2904
+ "mutating": true,
2905
+ "paramCount": 2,
2906
+ "hasBody": false,
2907
+ "summary": "Modify an existing recurring invoice by id (dates, frequency, line items); use to change an established schedule (mutating)."
2908
+ },
2909
+ {
2910
+ "slug": "action_recurring_invoice",
2911
+ "name": "Custom recurring invoice action",
2912
+ "method": "GET",
2913
+ "path": "/api/v1/recurring_invoices/{id}/{action}",
2914
+ "category": "recurring_invoices",
2915
+ "mutating": true,
2916
+ "paramCount": 3,
2917
+ "hasBody": false,
2918
+ "summary": "Run a named action (start, mark_paid, email, clone, download) on one recurring invoice by id; use for single-record operations (mutating)."
2919
+ },
2920
+ {
2921
+ "slug": "edit_recurring_invoice",
2922
+ "name": "Edit recurring invoice",
2923
+ "method": "GET",
2924
+ "path": "/api/v1/recurring_invoices/{id}/edit",
2925
+ "category": "recurring_invoices",
2926
+ "mutating": false,
2927
+ "paramCount": 2,
2928
+ "hasBody": false,
2929
+ "summary": "Fetch one recurring invoice prepared for editing by id; use to preload a form's values, not to save changes."
2930
+ },
2931
+ {
2932
+ "slug": "upload_recurring_invoice",
2933
+ "name": "Add recurring invoice document",
2934
+ "method": "POST",
2935
+ "path": "/api/v1/recurring_invoices/{id}/upload",
2936
+ "category": "recurring_invoices",
2937
+ "mutating": true,
2938
+ "paramCount": 4,
2939
+ "hasBody": true,
2940
+ "summary": "Attach document files to a recurring invoice by id via multipart upload; use to add supporting documents to it (mutating)."
2941
+ },
2942
+ {
2943
+ "slug": "bulk_recurring_invoices",
2944
+ "name": "Bulk recurring invoice actions",
2945
+ "method": "POST",
2946
+ "path": "/api/v1/recurring_invoices/bulk",
2947
+ "category": "recurring_invoices",
2948
+ "mutating": true,
2949
+ "paramCount": 3,
2950
+ "hasBody": true,
2951
+ "summary": "Apply a batch action (start, archive, delete) across many recurring invoice ids at once; use for multi-record operations (mutating)."
2952
+ },
2953
+ {
2954
+ "slug": "get_recurring_invoices_create",
2955
+ "name": "Blank recurring invoice",
2956
+ "method": "GET",
2957
+ "path": "/api/v1/recurring_invoices/create",
2958
+ "category": "recurring_invoices",
2959
+ "mutating": false,
2960
+ "paramCount": 1,
2961
+ "hasBody": false,
2962
+ "summary": "Fetch a blank recurring invoice with default values; use to pre-populate a new-record form before calling store."
2963
+ },
2964
+ {
2965
+ "slug": "get_recurring_quotes",
2966
+ "name": "Gets a list of recurring_quotes",
2967
+ "method": "GET",
2968
+ "path": "/api/v1/recurring_quotes",
2969
+ "category": "recurring_quotes",
2970
+ "mutating": false,
2971
+ "paramCount": 4,
2972
+ "hasBody": false,
2973
+ "summary": "List or filter many recurring quotes with search, sort, and pagination; use when browsing or finding recurring quotes rather than fetching one by id."
2974
+ },
2975
+ {
2976
+ "slug": "store_recurring_quote",
2977
+ "name": "Adds a RecurringQuote",
2978
+ "method": "POST",
2979
+ "path": "/api/v1/recurring_quotes",
2980
+ "category": "recurring_quotes",
2981
+ "mutating": true,
2982
+ "paramCount": 1,
2983
+ "hasBody": false,
2984
+ "summary": "Create a new recurring quote from scratch; use when adding a recurring quote, not when editing an existing one (mutating)."
2985
+ },
2986
+ {
2987
+ "slug": "delete_recurring_quote",
2988
+ "name": "Deletes a RecurringQuote",
2989
+ "method": "DELETE",
2990
+ "path": "/api/v1/recurring_quotes/{id}",
2991
+ "category": "recurring_quotes",
2992
+ "mutating": true,
2993
+ "paramCount": 2,
2994
+ "hasBody": false,
2995
+ "summary": "Archive/soft-delete one recurring quote by id; use to remove a single recurring quote rather than batch-deleting many (mutating)."
2996
+ },
2997
+ {
2998
+ "slug": "show_recurring_quote",
2999
+ "name": "Shows an RecurringQuote",
3000
+ "method": "GET",
3001
+ "path": "/api/v1/recurring_quotes/{id}",
3002
+ "category": "recurring_quotes",
3003
+ "mutating": false,
3004
+ "paramCount": 2,
3005
+ "hasBody": false,
3006
+ "summary": "Fetch one recurring quote by its hashed id; use when you already know the id and need that single record's details."
3007
+ },
3008
+ {
3009
+ "slug": "update_recurring_quote",
3010
+ "name": "Updates an RecurringQuote",
3011
+ "method": "PUT",
3012
+ "path": "/api/v1/recurring_quotes/{id}",
3013
+ "category": "recurring_quotes",
3014
+ "mutating": true,
3015
+ "paramCount": 2,
3016
+ "hasBody": false,
3017
+ "summary": "Modify an existing recurring quote by id with new field values; use to change a recurring quote you already have, not to create one (mutating)."
3018
+ },
3019
+ {
3020
+ "slug": "action_recurring_quote",
3021
+ "name": "Performs a custom action on an RecurringQuote",
3022
+ "method": "GET",
3023
+ "path": "/api/v1/recurring_quotes/{id}/{action}",
3024
+ "category": "recurring_quotes",
3025
+ "mutating": true,
3026
+ "paramCount": 3,
3027
+ "hasBody": false,
3028
+ "summary": "Run a named action (email, mark_paid, clone, download, history) on one recurring quote by id; use for operations beyond plain CRUD (mutating)."
3029
+ },
3030
+ {
3031
+ "slug": "edit_recurring_quote",
3032
+ "name": "Shows an RecurringQuote for editting",
3033
+ "method": "GET",
3034
+ "path": "/api/v1/recurring_quotes/{id}/edit",
3035
+ "category": "recurring_quotes",
3036
+ "mutating": false,
3037
+ "paramCount": 2,
3038
+ "hasBody": false,
3039
+ "summary": "Fetch one recurring quote by id prepared for editing; use to load current values before an update, not to perform the update itself."
3040
+ },
3041
+ {
3042
+ "slug": "bulk_recurring_quotes",
3043
+ "name": "Performs bulk actions on an array of recurring_quotes",
3044
+ "method": "POST",
3045
+ "path": "/api/v1/recurring_quotes/bulk",
3046
+ "category": "recurring_quotes",
3047
+ "mutating": true,
3048
+ "paramCount": 1,
3049
+ "hasBody": false,
3050
+ "summary": "Apply a batch action across many recurring quote ids in one call; use for mass archive/delete/email instead of acting on one record (mutating)."
3051
+ },
3052
+ {
3053
+ "slug": "get_recurring_quotes_create",
3054
+ "name": "Gets a new blank RecurringQuote object",
3055
+ "method": "GET",
3056
+ "path": "/api/v1/recurring_quotes/create",
3057
+ "category": "recurring_quotes",
3058
+ "mutating": false,
3059
+ "paramCount": 1,
3060
+ "hasBody": false,
3061
+ "summary": "Fetch a blank recurring quote with default values; use to prefill a new-record form before calling store_recurring_quote."
3062
+ },
3063
+ {
3064
+ "slug": "post_refresh",
3065
+ "name": "Refresh data by timestamp",
3066
+ "method": "POST",
3067
+ "path": "/api/v1/refresh",
3068
+ "category": "refresh",
3069
+ "mutating": true,
3070
+ "paramCount": 4,
3071
+ "hasBody": false,
3072
+ "summary": "Call to fetch only records changed since a given updated_at unix timestamp for incremental sync rather than re-pulling all data (mutating)."
3073
+ },
3074
+ {
3075
+ "slug": "get_export_preview",
3076
+ "name": "Export preview",
3077
+ "method": "POST",
3078
+ "path": "/api/v1/exports/preview/{hash}",
3079
+ "category": "reports",
3080
+ "mutating": false,
3081
+ "paramCount": 1,
3082
+ "hasBody": false,
3083
+ "summary": "Preview the contents of a generated data export by its export hash before downloading or finalizing it"
3084
+ },
3085
+ {
3086
+ "slug": "get_activity_report",
3087
+ "name": "Activity reports",
3088
+ "method": "POST",
3089
+ "path": "/api/v1/reports/activities",
3090
+ "category": "reports",
3091
+ "mutating": false,
3092
+ "paramCount": 5,
3093
+ "hasBody": true,
3094
+ "summary": "Export an audit-style activity log report of user/entity actions over a date range; use for tracking who did what, not financials"
3095
+ },
3096
+ {
3097
+ "slug": "get_ardetail_report",
3098
+ "name": "AR detail report",
3099
+ "method": "POST",
3100
+ "path": "/api/v1/reports/ar_detail_report",
3101
+ "category": "reports",
3102
+ "mutating": false,
3103
+ "paramCount": 5,
3104
+ "hasBody": true,
3105
+ "summary": "Export a line-by-line accounts-receivable detail report of outstanding invoices per client over a date range; use for granular AR aging"
3106
+ },
3107
+ {
3108
+ "slug": "get_arsummary_report",
3109
+ "name": "AR summary report",
3110
+ "method": "POST",
3111
+ "path": "/api/v1/reports/ar_summary_report",
3112
+ "category": "reports",
3113
+ "mutating": false,
3114
+ "paramCount": 5,
3115
+ "hasBody": true,
3116
+ "summary": "Export a summarized accounts-receivable report of total balances owed per client over a date range; use for high-level AR totals, not line detail"
3117
+ },
3118
+ {
3119
+ "slug": "get_client_balance_report",
3120
+ "name": "Client balance report",
3121
+ "method": "POST",
3122
+ "path": "/api/v1/reports/client_balance_report",
3123
+ "category": "reports",
3124
+ "mutating": false,
3125
+ "paramCount": 5,
3126
+ "hasBody": true,
3127
+ "summary": "Export a report of each client's current outstanding balance over a date range; use to see what clients owe, not their sales or contacts"
3128
+ },
3129
+ {
3130
+ "slug": "get_client_contact_report",
3131
+ "name": "Client contact reports",
3132
+ "method": "POST",
3133
+ "path": "/api/v1/reports/client_contacts",
3134
+ "category": "reports",
3135
+ "mutating": false,
3136
+ "paramCount": 5,
3137
+ "hasBody": true,
3138
+ "summary": "Export a report of client contact people (names, emails) tied to clients over a date range; use for contact rosters, not balances or sales"
3139
+ },
3140
+ {
3141
+ "slug": "get_client_sales_report",
3142
+ "name": "Client sales report",
3143
+ "method": "POST",
3144
+ "path": "/api/v1/reports/client_sales_report",
3145
+ "category": "reports",
3146
+ "mutating": false,
3147
+ "paramCount": 5,
3148
+ "hasBody": true,
3149
+ "summary": "Export a report of total sales/revenue grouped by client over a date range; use to rank clients by sales, not their balances owed"
3150
+ },
3151
+ {
3152
+ "slug": "get_client_report",
3153
+ "name": "Client reports",
3154
+ "method": "POST",
3155
+ "path": "/api/v1/reports/clients",
3156
+ "category": "reports",
3157
+ "mutating": false,
3158
+ "paramCount": 7,
3159
+ "hasBody": true,
3160
+ "summary": "Export a paginated report of client records and their attributes over a date range; use for a general client list, not sales or balances"
3161
+ },
3162
+ {
3163
+ "slug": "get_contact_report",
3164
+ "name": "Contact reports",
3165
+ "method": "POST",
3166
+ "path": "/api/v1/reports/contacts",
3167
+ "category": "reports",
3168
+ "mutating": false,
3169
+ "paramCount": 7,
3170
+ "hasBody": true,
3171
+ "summary": "Export a paginated report of all contact records over a date range; use for a full contact list across clients, not client-grouped contacts"
3172
+ },
3173
+ {
3174
+ "slug": "get_credit_report",
3175
+ "name": "Credit reports",
3176
+ "method": "POST",
3177
+ "path": "/api/v1/reports/credits",
3178
+ "category": "reports",
3179
+ "mutating": false,
3180
+ "paramCount": 5,
3181
+ "hasBody": true,
3182
+ "summary": "Export a report of credit (credit note) records over a date range; use for credits issued, not invoices, payments, or quotes"
3183
+ },
3184
+ {
3185
+ "slug": "get_document_report",
3186
+ "name": "Document reports",
3187
+ "method": "POST",
3188
+ "path": "/api/v1/reports/documents",
3189
+ "category": "reports",
3190
+ "mutating": false,
3191
+ "paramCount": 7,
3192
+ "hasBody": true,
3193
+ "summary": "Export a paginated report of uploaded document/attachment records over a date range; use to inventory files, not the entities they attach to"
3194
+ },
3195
+ {
3196
+ "slug": "get_expense_report",
3197
+ "name": "Expense reports",
3198
+ "method": "POST",
3199
+ "path": "/api/v1/reports/expenses",
3200
+ "category": "reports",
3201
+ "mutating": false,
3202
+ "paramCount": 5,
3203
+ "hasBody": true,
3204
+ "summary": "Export a report of expense records over a date range; use for money spent/costs, not revenue, invoices, or payments"
3205
+ },
3206
+ {
3207
+ "slug": "get_invoice_item_report",
3208
+ "name": "Invoice item reports",
3209
+ "method": "POST",
3210
+ "path": "/api/v1/reports/invoice_items",
3211
+ "category": "reports",
3212
+ "mutating": false,
3213
+ "paramCount": 7,
3214
+ "hasBody": true,
3215
+ "summary": "Export a paginated report of individual invoice line items over a date range; use for per-line-item detail, not whole-invoice totals"
3216
+ },
3217
+ {
3218
+ "slug": "get_invoice_report",
3219
+ "name": "Invoice reports",
3220
+ "method": "POST",
3221
+ "path": "/api/v1/reports/invoices",
3222
+ "category": "reports",
3223
+ "mutating": false,
3224
+ "paramCount": 7,
3225
+ "hasBody": true,
3226
+ "summary": "Export a paginated report of invoice records and totals over a date range; use for invoice-level summaries, not their individual line items"
3227
+ },
3228
+ {
3229
+ "slug": "get_payment_report",
3230
+ "name": "Payment reports",
3231
+ "method": "POST",
3232
+ "path": "/api/v1/reports/payments",
3233
+ "category": "reports",
3234
+ "mutating": false,
3235
+ "paramCount": 7,
3236
+ "hasBody": true,
3237
+ "summary": "Export a paginated report of payment records received over a date range; use for cash collected, not invoices billed or balances owed"
3238
+ },
3239
+ {
3240
+ "slug": "get_report_preview",
3241
+ "name": "Report preview",
3242
+ "method": "POST",
3243
+ "path": "/api/v1/reports/preview/{hash}",
3244
+ "category": "reports",
3245
+ "mutating": false,
3246
+ "paramCount": 1,
3247
+ "hasBody": false,
3248
+ "summary": "Preview a generated report by its report hash before exporting or downloading it; use after queuing a report to inspect results"
3249
+ },
3250
+ {
3251
+ "slug": "get_product_sales_report",
3252
+ "name": "Product Salesreports",
3253
+ "method": "POST",
3254
+ "path": "/api/v1/reports/product_sales",
3255
+ "category": "reports",
3256
+ "mutating": false,
3257
+ "paramCount": 7,
3258
+ "hasBody": true,
3259
+ "summary": "Export a paginated report of sales volume and revenue per product over a date range; use to see which products sold, not the product catalog"
3260
+ },
3261
+ {
3262
+ "slug": "get_product_report",
3263
+ "name": "Product reports",
3264
+ "method": "POST",
3265
+ "path": "/api/v1/reports/products",
3266
+ "category": "reports",
3267
+ "mutating": false,
3268
+ "paramCount": 7,
3269
+ "hasBody": true,
3270
+ "summary": "Export a paginated report of product catalog records and attributes over a date range; use for the product list, not their sales performance"
3271
+ },
3272
+ {
3273
+ "slug": "get_profit_loss_report",
3274
+ "name": "Profit loss reports",
3275
+ "method": "POST",
3276
+ "path": "/api/v1/reports/profitloss",
3277
+ "category": "reports",
3278
+ "mutating": false,
3279
+ "paramCount": 7,
3280
+ "hasBody": true,
3281
+ "summary": "Export a paginated profit-and-loss report netting revenue against expenses over a date range; use for overall P&L, not single-entity reports"
3282
+ },
3283
+ {
3284
+ "slug": "get_project_report",
3285
+ "name": "Project reports",
3286
+ "method": "POST",
3287
+ "path": "/api/v1/reports/projects",
3288
+ "category": "reports",
3289
+ "mutating": false,
3290
+ "paramCount": 5,
3291
+ "hasBody": true,
3292
+ "summary": "Export a report of project records over a date range; use for projects and their attributes, not the tasks logged within them"
3293
+ },
3294
+ {
3295
+ "slug": "get_quote_item_report",
3296
+ "name": "Quote item reports",
3297
+ "method": "POST",
3298
+ "path": "/api/v1/reports/quote_items",
3299
+ "category": "reports",
3300
+ "mutating": false,
3301
+ "paramCount": 7,
3302
+ "hasBody": true,
3303
+ "summary": "Export a paginated report of individual quote line items over a date range; use for per-line quote detail, not whole-quote totals"
3304
+ },
3305
+ {
3306
+ "slug": "get_quote_report",
3307
+ "name": "Quote reports",
3308
+ "method": "POST",
3309
+ "path": "/api/v1/reports/quotes",
3310
+ "category": "reports",
3311
+ "mutating": false,
3312
+ "paramCount": 7,
3313
+ "hasBody": true,
3314
+ "summary": "Export a paginated report of quote records and totals over a date range; use for quote-level summaries, not their individual line items"
3315
+ },
3316
+ {
3317
+ "slug": "get_recurring_invoice_report",
3318
+ "name": "Recurring Invoice reports",
3319
+ "method": "POST",
3320
+ "path": "/api/v1/reports/recurring_invoices",
3321
+ "category": "reports",
3322
+ "mutating": false,
3323
+ "paramCount": 7,
3324
+ "hasBody": true,
3325
+ "summary": "Export a paginated report of recurring-invoice templates/schedules over a date range; use for subscriptions, not one-off invoices issued"
3326
+ },
3327
+ {
3328
+ "slug": "get_task_report",
3329
+ "name": "Task reports",
3330
+ "method": "POST",
3331
+ "path": "/api/v1/reports/tasks",
3332
+ "category": "reports",
3333
+ "mutating": false,
3334
+ "paramCount": 7,
3335
+ "hasBody": true,
3336
+ "summary": "Export a paginated report of task and time-tracking records over a date range; use for logged work/billable time, not the projects above them"
3337
+ },
3338
+ {
3339
+ "slug": "get_tax_period_report",
3340
+ "name": "Tax period report",
3341
+ "method": "POST",
3342
+ "path": "/api/v1/reports/tax_period_report",
3343
+ "category": "reports",
3344
+ "mutating": false,
3345
+ "paramCount": 5,
3346
+ "hasBody": true,
3347
+ "summary": "Export a tax report broken out by reporting period over a date range; use for period-by-period tax filing, not a single rolled-up summary"
3348
+ },
3349
+ {
3350
+ "slug": "get_tax_summary_report",
3351
+ "name": "Tax summary report",
3352
+ "method": "POST",
3353
+ "path": "/api/v1/reports/tax_summary_report",
3354
+ "category": "reports",
3355
+ "mutating": false,
3356
+ "paramCount": 5,
3357
+ "hasBody": true,
3358
+ "summary": "Export a rolled-up tax summary report of collected taxes over a date range; use for total tax owed, not a period-by-period breakdown"
3359
+ },
3360
+ {
3361
+ "slug": "get_user_sales_report",
3362
+ "name": "User sales report",
3363
+ "method": "POST",
3364
+ "path": "/api/v1/reports/user_sales_report",
3365
+ "category": "reports",
3366
+ "mutating": false,
3367
+ "paramCount": 5,
3368
+ "hasBody": true,
3369
+ "summary": "Export a report of sales/revenue attributed to each user (staff) over a date range; use to compare salesperson performance, not client sales"
3370
+ },
3371
+ {
3372
+ "slug": "get_scheduler",
3373
+ "name": "Get scheduler status",
3374
+ "method": "GET",
3375
+ "path": "/api/v1/scheduler",
3376
+ "category": "scheduler",
3377
+ "mutating": false,
3378
+ "paramCount": 0,
3379
+ "hasBody": false,
3380
+ "summary": "Call to read the task scheduler status and its current job list; read-only, does not trigger or run any jobs."
3381
+ },
3382
+ {
3383
+ "slug": "post_search",
3384
+ "name": "Search",
3385
+ "method": "POST",
3386
+ "path": "/api/v1/search",
3387
+ "category": "search",
3388
+ "mutating": false,
3389
+ "paramCount": 0,
3390
+ "hasBody": false,
3391
+ "summary": "Call to run a global keyword search spanning multiple entity types when you need cross-resource matches, not single-resource list filters"
3392
+ },
3393
+ {
3394
+ "slug": "get_statics",
3395
+ "name": "Gets a list of statics",
3396
+ "method": "GET",
3397
+ "path": "/api/v1/statics",
3398
+ "category": "statics",
3399
+ "mutating": false,
3400
+ "paramCount": 1,
3401
+ "hasBody": false,
3402
+ "summary": "Call to fetch the app's static reference data (currencies, countries, languages, payment types, industries) for populating selectors; read-only."
3403
+ },
3404
+ {
3405
+ "slug": "get_subscriptions",
3406
+ "name": "Gets a list of subscriptions",
3407
+ "method": "GET",
3408
+ "path": "/api/v1/subscriptions",
3409
+ "category": "subscriptions",
3410
+ "mutating": false,
3411
+ "paramCount": 4,
3412
+ "hasBody": false,
3413
+ "summary": "List or paginate many subscription products, sorted by column; use to browse, not to fetch one by id."
3414
+ },
3415
+ {
3416
+ "slug": "store_subscription",
3417
+ "name": "Adds a subscriptions",
3418
+ "method": "POST",
3419
+ "path": "/api/v1/subscriptions",
3420
+ "category": "subscriptions",
3421
+ "mutating": true,
3422
+ "paramCount": 1,
3423
+ "hasBody": false,
3424
+ "summary": "Create a new subscription product/plan in the system when setting up a recurring offering (mutating)."
3425
+ },
3426
+ {
3427
+ "slug": "delete_subscription",
3428
+ "name": "Deletes a subscriptions",
3429
+ "method": "DELETE",
3430
+ "path": "/api/v1/subscriptions/{id}",
3431
+ "category": "subscriptions",
3432
+ "mutating": true,
3433
+ "paramCount": 2,
3434
+ "hasBody": false,
3435
+ "summary": "Archive/soft-delete one subscription by its hashed id when retiring a plan (mutating)."
3436
+ },
3437
+ {
3438
+ "slug": "show_subscription",
3439
+ "name": "Shows an subscriptions",
3440
+ "method": "GET",
3441
+ "path": "/api/v1/subscriptions/{id}",
3442
+ "category": "subscriptions",
3443
+ "mutating": false,
3444
+ "paramCount": 2,
3445
+ "hasBody": false,
3446
+ "summary": "Fetch one subscription by its hashed id to read its full details; use when you already know the id."
3447
+ },
3448
+ {
3449
+ "slug": "update_subscription",
3450
+ "name": "Updates an subscriptions",
3451
+ "method": "PUT",
3452
+ "path": "/api/v1/subscriptions/{id}",
3453
+ "category": "subscriptions",
3454
+ "mutating": true,
3455
+ "paramCount": 2,
3456
+ "hasBody": false,
3457
+ "summary": "Modify an existing subscription by its hashed id to change its plan settings or fields (mutating)."
3458
+ },
3459
+ {
3460
+ "slug": "edit_subscription",
3461
+ "name": "Shows an subscriptions for editting",
3462
+ "method": "GET",
3463
+ "path": "/api/v1/subscriptions/{id}/edit",
3464
+ "category": "subscriptions",
3465
+ "mutating": false,
3466
+ "paramCount": 2,
3467
+ "hasBody": false,
3468
+ "summary": "Fetch one subscription by id prepared for editing (read-only); use to preload a form, not to save changes."
3469
+ },
3470
+ {
3471
+ "slug": "bulk_subscriptions",
3472
+ "name": "Performs bulk actions on an array of subscriptions",
3473
+ "method": "POST",
3474
+ "path": "/api/v1/subscriptions/bulk",
3475
+ "category": "subscriptions",
3476
+ "mutating": true,
3477
+ "paramCount": 1,
3478
+ "hasBody": false,
3479
+ "summary": "Perform a batch action over many subscriptions by passing an array of ids in one request (mutating)."
3480
+ },
3481
+ {
3482
+ "slug": "get_subscriptions_create",
3483
+ "name": "Gets a new blank subscriptions object",
3484
+ "method": "GET",
3485
+ "path": "/api/v1/subscriptions/create",
3486
+ "category": "subscriptions",
3487
+ "mutating": false,
3488
+ "paramCount": 1,
3489
+ "hasBody": false,
3490
+ "summary": "Fetch a blank subscription object with default values (read-only) to seed a new-record form before storing."
3491
+ },
3492
+ {
3493
+ "slug": "support_message",
3494
+ "name": "Sends a support message to Invoice Ninja team",
3495
+ "method": "POST",
3496
+ "path": "/api/v1/support/messages/send",
3497
+ "category": "support",
3498
+ "mutating": true,
3499
+ "paramCount": 1,
3500
+ "hasBody": true,
3501
+ "summary": "Call to send a free-text support message to the Invoice Ninja team on the user's behalf (mutating)."
3502
+ },
3503
+ {
3504
+ "slug": "get_system_logs",
3505
+ "name": "Gets a list of system logs",
3506
+ "method": "GET",
3507
+ "path": "/api/v1/system_logs",
3508
+ "category": "system_logs",
3509
+ "mutating": false,
3510
+ "paramCount": 4,
3511
+ "hasBody": false,
3512
+ "summary": "List and filter many system log records with pagination and sorting; reach for it to audit events or search logs broadly rather than fetch one by id."
3513
+ },
3514
+ {
3515
+ "slug": "show_system_logs",
3516
+ "name": "Shows a system_logs",
3517
+ "method": "GET",
3518
+ "path": "/api/v1/system_logs/{id}",
3519
+ "category": "system_logs",
3520
+ "mutating": false,
3521
+ "paramCount": 2,
3522
+ "hasBody": false,
3523
+ "summary": "Fetch one system log record by its hashed id; use when you already know the specific log entry rather than listing many."
3524
+ },
3525
+ {
3526
+ "slug": "get_tags",
3527
+ "name": "List tags",
3528
+ "method": "GET",
3529
+ "path": "/api/v1/tags",
3530
+ "category": "tags",
3531
+ "mutating": false,
3532
+ "paramCount": 6,
3533
+ "hasBody": false,
3534
+ "summary": "List company tags for one required entity_type (task or project), with name filter and sort; use to browse tag pickers."
3535
+ },
3536
+ {
3537
+ "slug": "store_tag",
3538
+ "name": "Create tag",
3539
+ "method": "POST",
3540
+ "path": "/api/v1/tags",
3541
+ "category": "tags",
3542
+ "mutating": true,
3543
+ "paramCount": 3,
3544
+ "hasBody": true,
3545
+ "summary": "Create a new tag catalog entry with name, color, and immutable entity_type for a supported entity (mutating)."
3546
+ },
3547
+ {
3548
+ "slug": "delete_tag",
3549
+ "name": "Delete tag",
3550
+ "method": "DELETE",
3551
+ "path": "/api/v1/tags/{id}",
3552
+ "category": "tags",
3553
+ "mutating": true,
3554
+ "paramCount": 1,
3555
+ "hasBody": false,
3556
+ "summary": "Soft-delete one tag by its hashed id, cascading its pivot assignments, when removing it from the catalog (mutating)."
3557
+ },
3558
+ {
3559
+ "slug": "show_tag",
3560
+ "name": "Show tag",
3561
+ "method": "GET",
3562
+ "path": "/api/v1/tags/{id}",
3563
+ "category": "tags",
3564
+ "mutating": false,
3565
+ "paramCount": 1,
3566
+ "hasBody": false,
3567
+ "summary": "Fetch one tag by its hashed id to read its details; use when you already know the id."
3568
+ },
3569
+ {
3570
+ "slug": "update_tag",
3571
+ "name": "Update tag",
3572
+ "method": "PUT",
3573
+ "path": "/api/v1/tags/{id}",
3574
+ "category": "tags",
3575
+ "mutating": true,
3576
+ "paramCount": 3,
3577
+ "hasBody": true,
3578
+ "summary": "Modify an existing tag's name or color by its hashed id; entity_type is immutable and not sent (mutating)."
3579
+ },
3580
+ {
3581
+ "slug": "edit_tag",
3582
+ "name": "Edit tag",
3583
+ "method": "GET",
3584
+ "path": "/api/v1/tags/{id}/edit",
3585
+ "category": "tags",
3586
+ "mutating": false,
3587
+ "paramCount": 1,
3588
+ "hasBody": false,
3589
+ "summary": "Fetch one tag by id prepared for editing (read-only); use to preload a form, not to save changes."
3590
+ },
3591
+ {
3592
+ "slug": "bulk_tags",
3593
+ "name": "Bulk tag actions",
3594
+ "method": "POST",
3595
+ "path": "/api/v1/tags/bulk",
3596
+ "category": "tags",
3597
+ "mutating": true,
3598
+ "paramCount": 3,
3599
+ "hasBody": true,
3600
+ "summary": "Archive, restore, or delete many tags at once by passing an action plus an array of ids (mutating)."
3601
+ },
3602
+ {
3603
+ "slug": "get_tags_create",
3604
+ "name": "Blank tag",
3605
+ "method": "GET",
3606
+ "path": "/api/v1/tags/create",
3607
+ "category": "tags",
3608
+ "mutating": false,
3609
+ "paramCount": 0,
3610
+ "hasBody": false,
3611
+ "summary": "Fetch a blank tag object with default values (read-only) to seed a new-tag form before storing."
3612
+ },
3613
+ {
3614
+ "slug": "get_task_schedulers",
3615
+ "name": "Task Scheduler Index",
3616
+ "method": "GET",
3617
+ "path": "/api/v1/task_schedulers",
3618
+ "category": "task_schedulers",
3619
+ "mutating": false,
3620
+ "paramCount": 0,
3621
+ "hasBody": false,
3622
+ "summary": "List all task schedulers with their associated jobs; use to browse or find scheduled recurring jobs."
3623
+ },
3624
+ {
3625
+ "slug": "create_task_scheduler",
3626
+ "name": "Create task scheduler with job",
3627
+ "method": "POST",
3628
+ "path": "/api/v1/task_schedulers",
3629
+ "category": "task_schedulers",
3630
+ "mutating": true,
3631
+ "paramCount": 9,
3632
+ "hasBody": true,
3633
+ "summary": "Create a new scheduler that runs a recurring job (e.g. report) on a repeat interval and start date (mutating)."
3634
+ },
3635
+ {
3636
+ "slug": "destroy_task_scheduler",
3637
+ "name": "Destroy Task Scheduler",
3638
+ "method": "DELETE",
3639
+ "path": "/api/v1/task_schedulers/{id}",
3640
+ "category": "task_schedulers",
3641
+ "mutating": true,
3642
+ "paramCount": 1,
3643
+ "hasBody": false,
3644
+ "summary": "Delete one task scheduler and its associated job by hashed id (mutating); use bulk for many."
3645
+ },
3646
+ {
3647
+ "slug": "show_task_scheduler",
3648
+ "name": "Show given scheduler",
3649
+ "method": "GET",
3650
+ "path": "/api/v1/task_schedulers/{id}",
3651
+ "category": "task_schedulers",
3652
+ "mutating": false,
3653
+ "paramCount": 1,
3654
+ "hasBody": false,
3655
+ "summary": "Fetch one task scheduler with its job by hashed id; use get_task_schedulers to list across many instead."
3656
+ },
3657
+ {
3658
+ "slug": "update_task_scheduler",
3659
+ "name": "Update task scheduler",
3660
+ "method": "PUT",
3661
+ "path": "/api/v1/task_schedulers/{id}",
3662
+ "category": "task_schedulers",
3663
+ "mutating": true,
3664
+ "paramCount": 10,
3665
+ "hasBody": true,
3666
+ "summary": "Modify an existing task scheduler by hashed id, changing pause state, interval, job, or dates (mutating)."
3667
+ },
3668
+ {
3669
+ "slug": "bulk_task_scheduler_actions",
3670
+ "name": "Performs bulk actions on an array of task_schedulers",
3671
+ "method": "POST",
3672
+ "path": "/api/v1/task_schedulers/bulk",
3673
+ "category": "task_schedulers",
3674
+ "mutating": true,
3675
+ "paramCount": 1,
3676
+ "hasBody": false,
3677
+ "summary": "Perform a bulk action (archive/restore/delete) over an array of task scheduler ids in one request (mutating)."
3678
+ },
3679
+ {
3680
+ "slug": "get_task_scheduler",
3681
+ "name": "Gets a new blank scheduler object",
3682
+ "method": "GET",
3683
+ "path": "/api/v1/task_schedulers/create",
3684
+ "category": "task_schedulers",
3685
+ "mutating": false,
3686
+ "paramCount": 3,
3687
+ "hasBody": false,
3688
+ "summary": "Fetch a blank scheduler object with default values to prefill a new scheduler before calling create_task_scheduler."
3689
+ },
3690
+ {
3691
+ "slug": "get_task_statuses",
3692
+ "name": "Gets a list of task statuses",
3693
+ "method": "GET",
3694
+ "path": "/api/v1/task_statuses",
3695
+ "category": "task_status",
3696
+ "mutating": false,
3697
+ "paramCount": 5,
3698
+ "hasBody": false,
3699
+ "summary": "List or filter many task statuses with pagination, sorting, and includes; use to browse all statuses, not to fetch one by id."
3700
+ },
3701
+ {
3702
+ "slug": "store_task_status",
3703
+ "name": "Adds a TaskStatus",
3704
+ "method": "POST",
3705
+ "path": "/api/v1/task_statuses",
3706
+ "category": "task_status",
3707
+ "mutating": true,
3708
+ "paramCount": 9,
3709
+ "hasBody": true,
3710
+ "summary": "Create a new task status with name, color, and order; reach for it to add a status that does not yet exist (mutating)."
3711
+ },
3712
+ {
3713
+ "slug": "delete_task_status",
3714
+ "name": "Deletes a TaskStatus Term",
3715
+ "method": "DELETE",
3716
+ "path": "/api/v1/task_statuses/{id}",
3717
+ "category": "task_status",
3718
+ "mutating": true,
3719
+ "paramCount": 2,
3720
+ "hasBody": false,
3721
+ "summary": "Archive or soft-delete one existing task status by its hashed id when removing it from use (mutating)."
3722
+ },
3723
+ {
3724
+ "slug": "show_task_status",
3725
+ "name": "Shows a TaskStatus Term",
3726
+ "method": "GET",
3727
+ "path": "/api/v1/task_statuses/{id}",
3728
+ "category": "task_status",
3729
+ "mutating": false,
3730
+ "paramCount": 2,
3731
+ "hasBody": false,
3732
+ "summary": "Fetch one task status by its hashed id to read its details; use instead of the list when you already know the id."
3733
+ },
3734
+ {
3735
+ "slug": "update_task_status",
3736
+ "name": "Updates a TaskStatus Term",
3737
+ "method": "PUT",
3738
+ "path": "/api/v1/task_statuses/{id}",
3739
+ "category": "task_status",
3740
+ "mutating": true,
3741
+ "paramCount": 2,
3742
+ "hasBody": false,
3743
+ "summary": "Modify an existing task status by its hashed id to change its name, color, or order (mutating)."
3744
+ },
3745
+ {
3746
+ "slug": "edit_task_statuss",
3747
+ "name": "Shows an TaskStatusfor editting",
3748
+ "method": "GET",
3749
+ "path": "/api/v1/task_statuses/{id}/edit",
3750
+ "category": "task_status",
3751
+ "mutating": false,
3752
+ "paramCount": 2,
3753
+ "hasBody": false,
3754
+ "summary": "Fetch one task status by id prepared for an edit form; read-only, use before update_task_status, not to save changes."
3755
+ },
3756
+ {
3757
+ "slug": "bulk_task_statuss",
3758
+ "name": "Performs bulk actions on an array of task statuses",
3759
+ "method": "POST",
3760
+ "path": "/api/v1/task_statuses/bulk",
3761
+ "category": "task_status",
3762
+ "mutating": true,
3763
+ "paramCount": 1,
3764
+ "hasBody": false,
3765
+ "summary": "Apply one batch action across an array of task status ids at once; use for multi-record archive or restore (mutating)."
3766
+ },
3767
+ {
3768
+ "slug": "get_task_statuss_create",
3769
+ "name": "Gets a new blank TaskStatus object",
3770
+ "method": "GET",
3771
+ "path": "/api/v1/task_statuses/create",
3772
+ "category": "task_status",
3773
+ "mutating": false,
3774
+ "paramCount": 1,
3775
+ "hasBody": false,
3776
+ "summary": "Get a blank task status template with default values to prefill a create form; read-only, does not save anything."
3777
+ },
3778
+ {
3779
+ "slug": "get_tasks",
3780
+ "name": "List tasks",
3781
+ "method": "GET",
3782
+ "path": "/api/v1/tasks",
3783
+ "category": "tasks",
3784
+ "mutating": false,
3785
+ "paramCount": 5,
3786
+ "hasBody": false,
3787
+ "summary": "List or filter many tasks with pagination, includes, and sort; use when you need a set of task records, not one by id."
3788
+ },
3789
+ {
3790
+ "slug": "store_task",
3791
+ "name": "Create task",
3792
+ "method": "POST",
3793
+ "path": "/api/v1/tasks",
3794
+ "category": "tasks",
3795
+ "mutating": true,
3796
+ "paramCount": 15,
3797
+ "hasBody": true,
3798
+ "summary": "Create a new task with a description and optional client/project/time fields; use when adding a task that does not yet exist (mutating)."
3799
+ },
3800
+ {
3801
+ "slug": "delete_task",
3802
+ "name": "Delete task",
3803
+ "method": "DELETE",
3804
+ "path": "/api/v1/tasks/{id}",
3805
+ "category": "tasks",
3806
+ "mutating": true,
3807
+ "paramCount": 2,
3808
+ "hasBody": false,
3809
+ "summary": "Archive/soft-delete one task by id; use to remove a single task while keeping it recoverable (mutating)."
3810
+ },
3811
+ {
3812
+ "slug": "show_task",
3813
+ "name": "Show task",
3814
+ "method": "GET",
3815
+ "path": "/api/v1/tasks/{id}",
3816
+ "category": "tasks",
3817
+ "mutating": false,
3818
+ "paramCount": 2,
3819
+ "hasBody": false,
3820
+ "summary": "Fetch one task by its hashed id; use when you already know the id and need that single task's details."
3821
+ },
3822
+ {
3823
+ "slug": "update_task",
3824
+ "name": "Update task",
3825
+ "method": "PUT",
3826
+ "path": "/api/v1/tasks/{id}",
3827
+ "category": "tasks",
3828
+ "mutating": true,
3829
+ "paramCount": 16,
3830
+ "hasBody": true,
3831
+ "summary": "Modify fields on an existing task identified by id; use to change an already-created task such as status or time log (mutating)."
3832
+ },
3833
+ {
3834
+ "slug": "edit_task",
3835
+ "name": "Edit task",
3836
+ "method": "GET",
3837
+ "path": "/api/v1/tasks/{id}/edit",
3838
+ "category": "tasks",
3839
+ "mutating": false,
3840
+ "paramCount": 2,
3841
+ "hasBody": false,
3842
+ "summary": "GET one task by id prepared for editing (read-only); use to load current values before calling update_task, not to save changes."
3843
+ },
3844
+ {
3845
+ "slug": "upload_task",
3846
+ "name": "Uploads a task document",
3847
+ "method": "POST",
3848
+ "path": "/api/v1/tasks/{id}/upload",
3849
+ "category": "tasks",
3850
+ "mutating": true,
3851
+ "paramCount": 4,
3852
+ "hasBody": true,
3853
+ "summary": "Attach a document/file to an existing task by id via multipart upload; use to add attachments, not to edit task fields (mutating)."
3854
+ },
3855
+ {
3856
+ "slug": "bulk_tasks",
3857
+ "name": "Bulk task actions",
3858
+ "method": "POST",
3859
+ "path": "/api/v1/tasks/bulk",
3860
+ "category": "tasks",
3861
+ "mutating": true,
3862
+ "paramCount": 1,
3863
+ "hasBody": false,
3864
+ "summary": "Apply a batch action over many task ids at once; use to archive, restore, or delete multiple tasks in one call (mutating)."
3865
+ },
3866
+ {
3867
+ "slug": "get_tasks_create",
3868
+ "name": "Blank task",
3869
+ "method": "GET",
3870
+ "path": "/api/v1/tasks/create",
3871
+ "category": "tasks",
3872
+ "mutating": false,
3873
+ "paramCount": 1,
3874
+ "hasBody": false,
3875
+ "summary": "GET a blank task object with default values (read-only); use to pre-populate a create form before calling store_task."
3876
+ },
3877
+ {
3878
+ "slug": "sort_tasks",
3879
+ "name": "Sort tasks on KanBan",
3880
+ "method": "POST",
3881
+ "path": "/api/v1/tasks/sort",
3882
+ "category": "tasks",
3883
+ "mutating": true,
3884
+ "paramCount": 4,
3885
+ "hasBody": true,
3886
+ "summary": "Reorder tasks and set their KanBan status after a drag-and-drop; use to persist task ordering on the board, not to edit task content (mutating)."
3887
+ },
3888
+ {
3889
+ "slug": "get_tax_rates",
3890
+ "name": "Gets a list of tax_rates",
3891
+ "method": "GET",
3892
+ "path": "/api/v1/tax_rates",
3893
+ "category": "tax_rates",
3894
+ "mutating": false,
3895
+ "paramCount": 4,
3896
+ "hasBody": false,
3897
+ "summary": "List or filter many tax rates with pagination, sorting, and indexing when you need to browse or search the company's tax rates."
3898
+ },
3899
+ {
3900
+ "slug": "delete_tax_rate",
3901
+ "name": "Deletes a TaxRate",
3902
+ "method": "DELETE",
3903
+ "path": "/api/v1/tax_rates/{id}",
3904
+ "category": "tax_rates",
3905
+ "mutating": true,
3906
+ "paramCount": 1,
3907
+ "hasBody": false,
3908
+ "summary": "Archive/soft-delete one tax rate by its hashed id when removing a single rate from active use (mutating)."
3909
+ },
3910
+ {
3911
+ "slug": "show_tax_rate",
3912
+ "name": "Shows a Tax Rate",
3913
+ "method": "GET",
3914
+ "path": "/api/v1/tax_rates/{id}",
3915
+ "category": "tax_rates",
3916
+ "mutating": false,
3917
+ "paramCount": 1,
3918
+ "hasBody": false,
3919
+ "summary": "Fetch one tax rate by its hashed id when you already know the id and need that single record's details."
3920
+ },
3921
+ {
3922
+ "slug": "update_tax_rate",
3923
+ "name": "Updates a tax rate",
3924
+ "method": "PUT",
3925
+ "path": "/api/v1/tax_rates/{id}",
3926
+ "category": "tax_rates",
3927
+ "mutating": true,
3928
+ "paramCount": 1,
3929
+ "hasBody": false,
3930
+ "summary": "Modify an existing tax rate by its hashed id to change its name or rate value (mutating)."
3931
+ },
3932
+ {
3933
+ "slug": "edit_tax_rate",
3934
+ "name": "Shows a Tax Rate for editting",
3935
+ "method": "GET",
3936
+ "path": "/api/v1/tax_rates/{id}/edit",
3937
+ "category": "tax_rates",
3938
+ "mutating": false,
3939
+ "paramCount": 1,
3940
+ "hasBody": false,
3941
+ "summary": "Fetch one tax rate by id prepared for an edit form (read-only); use update_tax_rate to actually save changes."
3942
+ },
3943
+ {
3944
+ "slug": "bulk_tax_rates",
3945
+ "name": "Performs bulk actions on an array of TaxRates",
3946
+ "method": "POST",
3947
+ "path": "/api/v1/tax_rates/bulk",
3948
+ "category": "tax_rates",
3949
+ "mutating": true,
3950
+ "paramCount": 1,
3951
+ "hasBody": false,
3952
+ "summary": "Run a batch action over an array of tax rate ids at once when archiving or restoring many rates together (mutating)."
3953
+ },
3954
+ {
3955
+ "slug": "get_tax_rate_create",
3956
+ "name": "Gets a new blank Tax Rate object",
3957
+ "method": "GET",
3958
+ "path": "/api/v1/tax_rates/create",
3959
+ "category": "tax_rates",
3960
+ "mutating": false,
3961
+ "paramCount": 0,
3962
+ "hasBody": false,
3963
+ "summary": "Fetch a blank tax rate template with default values to prefill a new-rate form (read-only); use store flow to create it."
3964
+ },
3965
+ {
3966
+ "slug": "get_show_template",
3967
+ "name": "Returns a entity template with the template variables replaced with the Entities",
3968
+ "method": "POST",
3969
+ "path": "/api/v1/templates",
3970
+ "category": "templates",
3971
+ "mutating": false,
3972
+ "paramCount": 4,
3973
+ "hasBody": true,
3974
+ "summary": "Render an entity template with its variables substituted from real entities; use to produce filled template output rather than a raw preview"
3975
+ },
3976
+ {
3977
+ "slug": "get_template_preview",
3978
+ "name": "Preview template by hash",
3979
+ "method": "POST",
3980
+ "path": "/api/v1/templates/preview/{hash}",
3981
+ "category": "templates",
3982
+ "mutating": false,
3983
+ "paramCount": 1,
3984
+ "hasBody": false,
3985
+ "summary": "Preview a template identified by its hash with supplied data; use when you have a template hash and want to see its rendered result"
3986
+ },
3987
+ {
3988
+ "slug": "get_tokens",
3989
+ "name": "Gets a list of company tokens",
3990
+ "method": "GET",
3991
+ "path": "/api/v1/tokens",
3992
+ "category": "tokens",
3993
+ "mutating": false,
3994
+ "paramCount": 5,
3995
+ "hasBody": false,
3996
+ "summary": "List or filter many company API tokens with pagination and sorting; use to browse tokens, not to fetch one by id."
3997
+ },
3998
+ {
3999
+ "slug": "store_token",
4000
+ "name": "Adds a token",
4001
+ "method": "POST",
4002
+ "path": "/api/v1/tokens",
4003
+ "category": "tokens",
4004
+ "mutating": true,
4005
+ "paramCount": 1,
4006
+ "hasBody": false,
4007
+ "summary": "Create a new company API token for the company; reach for it to issue a token that does not yet exist (mutating)."
4008
+ },
4009
+ {
4010
+ "slug": "delete_token",
4011
+ "name": "Deletes a token",
4012
+ "method": "DELETE",
4013
+ "path": "/api/v1/tokens/{id}",
4014
+ "category": "tokens",
4015
+ "mutating": true,
4016
+ "paramCount": 2,
4017
+ "hasBody": false,
4018
+ "summary": "Archive or soft-delete one existing company API token by its hashed id to revoke it (mutating)."
4019
+ },
4020
+ {
4021
+ "slug": "show_token",
4022
+ "name": "Shows a token",
4023
+ "method": "GET",
4024
+ "path": "/api/v1/tokens/{id}",
4025
+ "category": "tokens",
4026
+ "mutating": false,
4027
+ "paramCount": 2,
4028
+ "hasBody": false,
4029
+ "summary": "Fetch one company API token by its hashed id to read its details; use instead of the list when you already know the id."
4030
+ },
4031
+ {
4032
+ "slug": "update_token",
4033
+ "name": "Updates a token",
4034
+ "method": "PUT",
4035
+ "path": "/api/v1/tokens/{id}",
4036
+ "category": "tokens",
4037
+ "mutating": true,
4038
+ "paramCount": 2,
4039
+ "hasBody": false,
4040
+ "summary": "Modify an existing company API token by its hashed id to change its settings (mutating)."
4041
+ },
4042
+ {
4043
+ "slug": "edit_token",
4044
+ "name": "Shows a token for editting",
4045
+ "method": "GET",
4046
+ "path": "/api/v1/tokens/{id}/edit",
4047
+ "category": "tokens",
4048
+ "mutating": false,
4049
+ "paramCount": 2,
4050
+ "hasBody": false,
4051
+ "summary": "Fetch one company API token by id prepared for an edit form; read-only, use before update_token, not to save changes."
4052
+ },
4053
+ {
4054
+ "slug": "bulk_tokens",
4055
+ "name": "Performs bulk actions on an array of tokens",
4056
+ "method": "POST",
4057
+ "path": "/api/v1/tokens/bulk",
4058
+ "category": "tokens",
4059
+ "mutating": true,
4060
+ "paramCount": 1,
4061
+ "hasBody": false,
4062
+ "summary": "Apply one batch action across an array of company token ids at once; use for multi-record archive or restore (mutating)."
4063
+ },
4064
+ {
4065
+ "slug": "get_tokens_create",
4066
+ "name": "Gets a new blank token object",
4067
+ "method": "GET",
4068
+ "path": "/api/v1/tokens/create",
4069
+ "category": "tokens",
4070
+ "mutating": false,
4071
+ "paramCount": 1,
4072
+ "hasBody": false,
4073
+ "summary": "Get a blank company token template with default values to prefill a create form; read-only, does not save anything."
4074
+ },
4075
+ {
4076
+ "slug": "self_update",
4077
+ "name": "Performs a system update",
4078
+ "method": "POST",
4079
+ "path": "/api/v1/self-update",
4080
+ "category": "update",
4081
+ "mutating": true,
4082
+ "paramCount": 1,
4083
+ "hasBody": false,
4084
+ "summary": "Trigger the self-hosted Invoice Ninja system to install an available update; requires the X-API-PASSWORD header (mutating)."
4085
+ },
4086
+ {
4087
+ "slug": "self_update_check_version",
4088
+ "name": "Check for available update",
4089
+ "method": "POST",
4090
+ "path": "/api/v1/self-update/check_version",
4091
+ "category": "update",
4092
+ "mutating": true,
4093
+ "paramCount": 0,
4094
+ "hasBody": false,
4095
+ "summary": "Check whether a newer Invoice Ninja version is available before deciding to run self_update; does not install anything (mutating)."
4096
+ },
4097
+ {
4098
+ "slug": "get_users",
4099
+ "name": "Gets a list of users",
4100
+ "method": "GET",
4101
+ "path": "/api/v1/users",
4102
+ "category": "users",
4103
+ "mutating": false,
4104
+ "paramCount": 4,
4105
+ "hasBody": false,
4106
+ "summary": "List or filter many users with paging and sorting; use to browse or search the user directory, not to fetch one."
4107
+ },
4108
+ {
4109
+ "slug": "store_user",
4110
+ "name": "Adds a User",
4111
+ "method": "POST",
4112
+ "path": "/api/v1/users",
4113
+ "category": "users",
4114
+ "mutating": true,
4115
+ "paramCount": 1,
4116
+ "hasBody": false,
4117
+ "summary": "Create a new user in the system; use to add a team member account (mutating)."
4118
+ },
4119
+ {
4120
+ "slug": "delete_user",
4121
+ "name": "Deletes a User",
4122
+ "method": "DELETE",
4123
+ "path": "/api/v1/users/{id}",
4124
+ "category": "users",
4125
+ "mutating": true,
4126
+ "paramCount": 3,
4127
+ "hasBody": false,
4128
+ "summary": "Archive/soft-delete one user by id; use to remove a user account rather than detach them from a company (mutating)."
4129
+ },
4130
+ {
4131
+ "slug": "show_user",
4132
+ "name": "Shows an User",
4133
+ "method": "GET",
4134
+ "path": "/api/v1/users/{id}",
4135
+ "category": "users",
4136
+ "mutating": false,
4137
+ "paramCount": 2,
4138
+ "hasBody": false,
4139
+ "summary": "Fetch one user's full record by id; use when you already know the id and need that user's details."
4140
+ },
4141
+ {
4142
+ "slug": "update_user",
4143
+ "name": "Updates an User",
4144
+ "method": "PUT",
4145
+ "path": "/api/v1/users/{id}",
4146
+ "category": "users",
4147
+ "mutating": true,
4148
+ "paramCount": 2,
4149
+ "hasBody": false,
4150
+ "summary": "Modify an existing user by id; use to change an established user's profile or settings (mutating)."
4151
+ },
4152
+ {
4153
+ "slug": "edit_user",
4154
+ "name": "Shows an User for editting",
4155
+ "method": "GET",
4156
+ "path": "/api/v1/users/{id}/edit",
4157
+ "category": "users",
4158
+ "mutating": false,
4159
+ "paramCount": 2,
4160
+ "hasBody": false,
4161
+ "summary": "Fetch one user prepared for editing by id; use to preload a form's values, not to save changes."
4162
+ },
4163
+ {
4164
+ "slug": "detach_user",
4165
+ "name": "Detach an existing user to a company",
4166
+ "method": "DELETE",
4167
+ "path": "/api/v1/users/{user}/detach_from_company",
4168
+ "category": "users",
4169
+ "mutating": true,
4170
+ "paramCount": 2,
4171
+ "hasBody": false,
4172
+ "summary": "Remove one user's link to the current company by id without deleting the account; use to revoke company access (mutating)."
4173
+ },
4174
+ {
4175
+ "slug": "invite_user",
4176
+ "name": "Reconfirm an existing user to a company",
4177
+ "method": "POST",
4178
+ "path": "/api/v1/users/{user}/invite",
4179
+ "category": "users",
4180
+ "mutating": true,
4181
+ "paramCount": 2,
4182
+ "hasBody": false,
4183
+ "summary": "Send the initial invite to an existing user by id (the /invite endpoint); use for a first-time invitation rather than reconfirm (mutating)."
4184
+ },
4185
+ {
4186
+ "slug": "invite_user_reconfirm",
4187
+ "name": "Reconfirm an existing user to a company",
4188
+ "method": "POST",
4189
+ "path": "/api/v1/users/{user}/reconfirm",
4190
+ "category": "users",
4191
+ "mutating": true,
4192
+ "paramCount": 2,
4193
+ "hasBody": false,
4194
+ "summary": "Resend a confirmation to an existing user by id (the /reconfirm endpoint); use to re-trigger confirmation rather than a fresh invite (mutating)."
4195
+ },
4196
+ {
4197
+ "slug": "bulk_users",
4198
+ "name": "Performs bulk actions on an array of users",
4199
+ "method": "POST",
4200
+ "path": "/api/v1/users/bulk",
4201
+ "category": "users",
4202
+ "mutating": true,
4203
+ "paramCount": 1,
4204
+ "hasBody": false,
4205
+ "summary": "Apply a batch action across many user ids at once; use for multi-user operations instead of single-user calls (mutating)."
4206
+ },
4207
+ {
4208
+ "slug": "get_users_create",
4209
+ "name": "Gets a new blank User object",
4210
+ "method": "GET",
4211
+ "path": "/api/v1/users/create",
4212
+ "category": "users",
4213
+ "mutating": false,
4214
+ "paramCount": 1,
4215
+ "hasBody": false,
4216
+ "summary": "Fetch a blank user with default values; use to pre-populate a new-user form before calling store."
4217
+ },
4218
+ {
4219
+ "slug": "get_vendors",
4220
+ "name": "List vendors",
4221
+ "method": "GET",
4222
+ "path": "/api/v1/vendors",
4223
+ "category": "vendors",
4224
+ "mutating": false,
4225
+ "paramCount": 5,
4226
+ "hasBody": false,
4227
+ "summary": "List or filter many vendors with search, sort, and pagination; use when browsing or finding vendors rather than fetching one by id."
4228
+ },
4229
+ {
4230
+ "slug": "store_vendor",
4231
+ "name": "Create vendor",
4232
+ "method": "POST",
4233
+ "path": "/api/v1/vendors",
4234
+ "category": "vendors",
4235
+ "mutating": true,
4236
+ "paramCount": 18,
4237
+ "hasBody": true,
4238
+ "summary": "Create a new vendor (name required) with address and contacts; use when adding a vendor, not when editing an existing one (mutating)."
4239
+ },
4240
+ {
4241
+ "slug": "delete_vendor",
4242
+ "name": "Delete vendor",
4243
+ "method": "DELETE",
4244
+ "path": "/api/v1/vendors/{id}",
4245
+ "category": "vendors",
4246
+ "mutating": true,
4247
+ "paramCount": 2,
4248
+ "hasBody": false,
4249
+ "summary": "Archive/soft-delete one vendor by id; use to remove a single vendor rather than batch-deleting many (mutating)."
4250
+ },
4251
+ {
4252
+ "slug": "show_vendor",
4253
+ "name": "Show vendor",
4254
+ "method": "GET",
4255
+ "path": "/api/v1/vendors/{id}",
4256
+ "category": "vendors",
4257
+ "mutating": false,
4258
+ "paramCount": 2,
4259
+ "hasBody": false,
4260
+ "summary": "Fetch one vendor by its hashed id; use when you already know the id and need that single vendor's details."
4261
+ },
4262
+ {
4263
+ "slug": "update_vendor",
4264
+ "name": "Update vendor",
4265
+ "method": "PUT",
4266
+ "path": "/api/v1/vendors/{id}",
4267
+ "category": "vendors",
4268
+ "mutating": true,
4269
+ "paramCount": 19,
4270
+ "hasBody": true,
4271
+ "summary": "Modify an existing vendor by id with new field values; use to change a vendor you already have, not to create one (mutating)."
4272
+ },
4273
+ {
4274
+ "slug": "edit_vendor",
4275
+ "name": "Edit vendor",
4276
+ "method": "GET",
4277
+ "path": "/api/v1/vendors/{id}/edit",
4278
+ "category": "vendors",
4279
+ "mutating": false,
4280
+ "paramCount": 2,
4281
+ "hasBody": false,
4282
+ "summary": "Fetch one vendor by id prepared for editing; use to load current values before an update, not to perform the update itself."
4283
+ },
4284
+ {
4285
+ "slug": "upload_vendor",
4286
+ "name": "Uploads a vendor document",
4287
+ "method": "POST",
4288
+ "path": "/api/v1/vendors/{id}/upload",
4289
+ "category": "vendors",
4290
+ "mutating": true,
4291
+ "paramCount": 4,
4292
+ "hasBody": true,
4293
+ "summary": "Attach one or more documents/files to a vendor by id via multipart upload; use to add attachments, not to edit vendor fields (mutating)."
4294
+ },
4295
+ {
4296
+ "slug": "bulk_vendors",
4297
+ "name": "Bulk vendor actions",
4298
+ "method": "POST",
4299
+ "path": "/api/v1/vendors/bulk",
4300
+ "category": "vendors",
4301
+ "mutating": true,
4302
+ "paramCount": 1,
4303
+ "hasBody": false,
4304
+ "summary": "Apply a batch action across many vendor ids in one call; use for mass archive/restore/delete instead of acting on one record (mutating)."
4305
+ },
4306
+ {
4307
+ "slug": "get_vendors_create",
4308
+ "name": "Blank vendor",
4309
+ "method": "GET",
4310
+ "path": "/api/v1/vendors/create",
4311
+ "category": "vendors",
4312
+ "mutating": false,
4313
+ "paramCount": 1,
4314
+ "hasBody": false,
4315
+ "summary": "Fetch a blank vendor with default values; use to prefill a new-record form before calling store_vendor."
4316
+ },
4317
+ {
4318
+ "slug": "get_webcron",
4319
+ "name": "Executes the task scheduler via a webcron service",
4320
+ "method": "GET",
4321
+ "path": "/api/v1/webcron",
4322
+ "category": "webcron",
4323
+ "mutating": false,
4324
+ "paramCount": 0,
4325
+ "hasBody": false,
4326
+ "summary": "Call to trigger execution of the task scheduler as a webcron tick, running due scheduled jobs now rather than just reading status."
4327
+ },
4328
+ {
4329
+ "slug": "get_webhooks",
4330
+ "name": "Gets a list of Webhooks",
4331
+ "method": "GET",
4332
+ "path": "/api/v1/webhooks",
4333
+ "category": "webhooks",
4334
+ "mutating": false,
4335
+ "paramCount": 5,
4336
+ "hasBody": false,
4337
+ "summary": "List or filter many webhooks with pagination, sorting, and includes when browsing or searching configured webhook subscriptions."
4338
+ },
4339
+ {
4340
+ "slug": "store_webhook",
4341
+ "name": "Adds a Webhook",
4342
+ "method": "POST",
4343
+ "path": "/api/v1/webhooks",
4344
+ "category": "webhooks",
4345
+ "mutating": true,
4346
+ "paramCount": 1,
4347
+ "hasBody": false,
4348
+ "summary": "Create a new webhook subscription for the company when registering an endpoint to receive event callbacks (mutating)."
4349
+ },
4350
+ {
4351
+ "slug": "delete_webhook",
4352
+ "name": "Deletes a Webhook",
4353
+ "method": "DELETE",
4354
+ "path": "/api/v1/webhooks/{id}",
4355
+ "category": "webhooks",
4356
+ "mutating": true,
4357
+ "paramCount": 2,
4358
+ "hasBody": false,
4359
+ "summary": "Call to archive/soft-delete one existing webhook subscription by its hashed id; use list/show to inspect webhooks instead (mutating)."
4360
+ },
4361
+ {
4362
+ "slug": "show_webhook",
4363
+ "name": "Shows a Webhook",
4364
+ "method": "GET",
4365
+ "path": "/api/v1/webhooks/{id}",
4366
+ "category": "webhooks",
4367
+ "mutating": false,
4368
+ "paramCount": 2,
4369
+ "hasBody": false,
4370
+ "summary": "Fetch one webhook by its hashed id when you know the id and need that single subscription's details."
4371
+ },
4372
+ {
4373
+ "slug": "update_webhook",
4374
+ "name": "Updates a Webhook",
4375
+ "method": "PUT",
4376
+ "path": "/api/v1/webhooks/{id}",
4377
+ "category": "webhooks",
4378
+ "mutating": true,
4379
+ "paramCount": 2,
4380
+ "hasBody": false,
4381
+ "summary": "Modify an existing webhook by its hashed id to change its target URL or event triggers (mutating)."
4382
+ },
4383
+ {
4384
+ "slug": "edit_webhook",
4385
+ "name": "Shows a Webhook for editting",
4386
+ "method": "GET",
4387
+ "path": "/api/v1/webhooks/{id}/edit",
4388
+ "category": "webhooks",
4389
+ "mutating": false,
4390
+ "paramCount": 2,
4391
+ "hasBody": false,
4392
+ "summary": "Fetch one webhook by id prepared for an edit form (read-only); use update_webhook to actually save changes."
4393
+ },
4394
+ {
4395
+ "slug": "bulk_webhooks",
4396
+ "name": "Performs bulk actions on an array of Webhooks",
4397
+ "method": "POST",
4398
+ "path": "/api/v1/webhooks/bulk",
4399
+ "category": "webhooks",
4400
+ "mutating": true,
4401
+ "paramCount": 1,
4402
+ "hasBody": false,
4403
+ "summary": "Run a batch action over an array of webhook ids at once when archiving or restoring many subscriptions together (mutating)."
4404
+ },
4405
+ {
4406
+ "slug": "get_webhooks_create",
4407
+ "name": "Gets a new blank Webhook object",
4408
+ "method": "GET",
4409
+ "path": "/api/v1/webhooks/create",
4410
+ "category": "webhooks",
4411
+ "mutating": false,
4412
+ "paramCount": 1,
4413
+ "hasBody": false,
4414
+ "summary": "Fetch a blank webhook template with default values to prefill a new-webhook form (read-only); use store_webhook to create it."
4415
+ },
4416
+ {
4417
+ "slug": "yodlee_refresh_webhook",
4418
+ "name": "Yodlee Webhook",
4419
+ "method": "POST",
4420
+ "path": "/api/v1/yodlee/refresh",
4421
+ "category": "yodlee",
4422
+ "mutating": true,
4423
+ "paramCount": 0,
4424
+ "hasBody": false,
4425
+ "summary": "Call as the Yodlee bank-feed callback to notify the system that linked financial data is ready to refresh; not for normal data fetches (mutating)."
4426
+ }
4427
+ ]
4428
+ }