@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
package/README.md ADDED
@@ -0,0 +1,128 @@
1
+ # @nightsquawktech/invoiceninja-mcp-server
2
+
3
+ [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/NightSquawk/invoiceninja-mcp-server/badge)](https://scorecard.dev/viewer/?uri=github.com/NightSquawk/invoiceninja-mcp-server)
4
+
5
+ MCP server for **Invoice Ninja v5** (self-hosted). Exposes **all 379 API endpoints**
6
+ through **3 consolidated tools** backed by a generated endpoint catalog, rather than
7
+ one tool per endpoint.
8
+
9
+ ## Why a catalog, not 379 tools
10
+
11
+ Invoice Ninja's REST API has ~379 operations across ~31 resources (full CRUD + bulk +
12
+ actions + 27 reports). One MCP tool per endpoint would be unusable: huge context cost
13
+ and poor tool selection. Instead, every endpoint is described by a JSON spec file under
14
+ `src/catalog/endpoints/`, and three generic tools read that catalog:
15
+
16
+ | Tool | Purpose |
17
+ |------|---------|
18
+ | `list_endpoints(category?, mutating?, search?)` | Discover endpoints (slug, method, path, category, mutating flag, one-line summary). |
19
+ | `describe_endpoint(endpoint_name)` | Full spec for one endpoint: method, path, path/query params, request-body fields (types, required, enums, descriptions), and `whenToUse`. |
20
+ | `call_endpoint(endpoint_name, path_params?, query?, body?, ...)` | Validate against the catalog, then execute. **Mutating** endpoints (POST/PUT/DELETE) require `authorization_confirmed: true` + `authorization_note` and are backed up to a temp file before the call. |
21
+
22
+ Expected flow: **discover → describe → call**.
23
+
24
+ ## The endpoint catalog
25
+
26
+ - `src/catalog/endpoints/<slug>.json`: one spec per endpoint, generated from the OpenAPI
27
+ spec (`openapi/api-docs.yaml` @ invoiceninja v5-stable). Carries method, path, name,
28
+ category, `mutating`, description, `whenToUse`, path/query/header parameters, and
29
+ request-body fields.
30
+ - `src/catalog/index.json`: aggregate discovery index (slug, method, path, category,
31
+ mutating, summary) plus counts.
32
+
33
+ Regenerate after a spec bump:
34
+
35
+ ```bash
36
+ curl -sL https://raw.githubusercontent.com/invoiceninja/invoiceninja/v5-stable/openapi/api-docs.yaml -o spec/api-docs.yaml
37
+ npm run generate # parse spec -> src/catalog/endpoints/*.json
38
+ npm run catalog # rebuild src/catalog/index.json
39
+ npm run build
40
+ ```
41
+
42
+ The `whenToUse` field (when-to-reach-for-this guidance) is filled by an enrichment pass
43
+ (`scripts/apply-enrichment.mjs`) and surfaced by `describe_endpoint` / `list_endpoints`.
44
+
45
+ ## Setup
46
+
47
+ ```bash
48
+ npm install
49
+ npm run build
50
+ ```
51
+
52
+ ## Environment (self-hosted)
53
+
54
+ | Variable | Required | Description |
55
+ |----------|----------|-------------|
56
+ | `INVOICENINJA_BASE_URL` | Yes | Instance URL, no trailing slash, no `/api/v1` (e.g. `https://your-instance.example.com`) |
57
+ | `INVOICENINJA_API_TOKEN` | Yes | API token (Settings → Account Management → Integrations → API Tokens). Sent as `X-Api-Token`. |
58
+ | `INVOICENINJA_TIMEOUT_MS` | No | Request timeout, default 30000 |
59
+
60
+ ## MCP client configuration
61
+
62
+ ```json
63
+ {
64
+ "mcpServers": {
65
+ "invoiceninja": {
66
+ "command": "npx",
67
+ "args": ["-y", "@nightsquawktech/invoiceninja-mcp-server"],
68
+ "env": {
69
+ "INVOICENINJA_BASE_URL": "https://your-instance.example.com",
70
+ "INVOICENINJA_API_TOKEN": "<token>"
71
+ }
72
+ }
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## Write safety
78
+
79
+ `call_endpoint` runs read-only GET endpoints freely. Any mutating endpoint requires
80
+ `authorization_confirmed: true` and a non-empty `authorization_note`; without both,
81
+ the call is refused before any HTTP request is made. Before a mutating call executes,
82
+ the client writes a JSON backup (request payload, authorization note, and best-effort
83
+ prior record for PUT/DELETE by id) under the system temp dir. The catalog flags every
84
+ endpoint's `mutating` status, and as defense-in-depth any `{action}` route (email,
85
+ mark_paid, archive, delete, clone, and similar) is treated as mutating even though
86
+ some are GETs, so state-changing action endpoints can never run unguarded.
87
+
88
+ ## Smoke test (read-only)
89
+
90
+ `scripts/smoke-test.mjs` sweeps every **non-mutating** endpoint against a live instance:
91
+ 186 of 379, including the 36 POST-but-read-only reports/charts/preview/templates/search
92
+ (sent with an empty body so no side effect fires). It calls collection/report endpoints
93
+ first, harvests sample ids, then exercises by-id endpoints, reporting PASS/FAIL/SKIP each.
94
+ The 193 mutating endpoints (incl. the 6 state-changing `action_*` GETs) are excluded and
95
+ the header says so, so a green run is never mistaken for full-API coverage.
96
+
97
+ ```bash
98
+ INVOICENINJA_BASE_URL=... INVOICENINJA_API_TOKEN=... npm run build && npm run smoke
99
+ ```
100
+
101
+ ## Layout
102
+
103
+ ```
104
+ src/
105
+ index.ts stdio MCP entry point
106
+ server/invoiceninja-mcp-server.ts singleton McpServer
107
+ catalog/
108
+ endpoint-spec.ts catalog types + loader (traversal-guarded)
109
+ index.json generated discovery index
110
+ endpoints/<slug>.json 379 generated endpoint specs
111
+ clients/invoiceninja-client.ts generic HTTP caller (X-Api-Token, backups)
112
+ tools/
113
+ list-endpoints.ts describe-endpoint.ts call-endpoint.ts
114
+ helpers/ types/
115
+ scripts/
116
+ generate-catalog.mjs parse OpenAPI spec -> endpoint files
117
+ assemble-catalog.mjs endpoint files -> index.json
118
+ apply-enrichment.mjs write whenToUse from the enrichment pass
119
+ smoke-test.mjs read-only live sweep
120
+ ```
121
+
122
+ See **[SCOPING.md](./SCOPING.md)** for the API inventory and design rationale.
123
+
124
+ ## License
125
+
126
+ Licensed under the [GNU AGPL v3.0](./LICENSE). Free for personal and open-source use.
127
+
128
+ Organizations that cannot comply with the AGPL can purchase a commercial license. See [COMMERCIAL.md](./COMMERCIAL.md) or contact hello@nightsquawk.tech.
@@ -0,0 +1,36 @@
1
+ import { fileURLToPath } from "node:url";
2
+ import { dirname } from "node:path";
3
+ import { createCatalogStore } from "@nightsquawktech/mcp-core/catalog";
4
+ // Path resolution stays HERE, in the server, so it points at this server's
5
+ // bundled catalog (dist/catalog) and not at the mcp-core package. The core
6
+ // loader receives the resolved directory and never derives it from its own
7
+ // module location.
8
+ const catalogDir = dirname(fileURLToPath(import.meta.url)); // dist/catalog
9
+ const store = createCatalogStore(catalogDir);
10
+ /** The aggregate catalog index (slug, name, method, path, category per endpoint). */
11
+ export function loadIndex() {
12
+ return store.index();
13
+ }
14
+ /** Full spec for a single endpoint, or null if the slug is unknown. */
15
+ export function loadEndpointSpec(slug) {
16
+ // Entries live under endpoints/; the core store guards against path traversal.
17
+ return store.entry(slug);
18
+ }
19
+ /** True if the slug names a real endpoint. */
20
+ export function isKnownEndpoint(slug) {
21
+ return loadIndex().endpoints.some((e) => e.slug === slug);
22
+ }
23
+ /** Distinct category names present in the catalog. */
24
+ export function listCategories() {
25
+ return loadIndex().categories.map((c) => c.name);
26
+ }
27
+ /** Fuzzy slug suggestions for an unknown name. */
28
+ export function suggestSlugs(query, limit = 6) {
29
+ if (!query)
30
+ return [];
31
+ const q = query.toLowerCase();
32
+ return loadIndex()
33
+ .endpoints.map((e) => e.slug)
34
+ .filter((s) => s.includes(q) || q.includes(s))
35
+ .slice(0, limit);
36
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_invoice",
3
+ "operationId": "actionInvoice",
4
+ "method": "GET",
5
+ "path": "/api/v1/invoices/{id}/{action}",
6
+ "name": "Custom invoice action",
7
+ "category": "invoices",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an invoice.\nThe current range of actions are as follows\n- clone_to_invoice\n- clone_to_quote\n- history\n- delivery_note\n- mark_paid\n- download\n- archive\n- delete\n- email",
10
+ "whenToUse": "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).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The Invoice Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "Invoice"
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_payment",
3
+ "operationId": "actionPayment",
4
+ "method": "GET",
5
+ "path": "/api/v1/payments/{id}/{action}",
6
+ "name": "Custom payment actions",
7
+ "category": "payments",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an Payment.\n\n The current range of actions are as follows\n - clone_to_Payment\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email",
10
+ "whenToUse": "Run a named action (mark_paid, email, download, clone, archive) on one payment by id and action string (mutating).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The Payment Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "Payment"
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_purchase_order",
3
+ "operationId": "actionPurchaseOrder",
4
+ "method": "GET",
5
+ "path": "/api/v1/purchase_orders/{id}/{action}",
6
+ "name": "Custom purchase order actions",
7
+ "category": "purchase_orders",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an purchase order.\n\n The current range of actions are as follows\n - mark_paid\n - download\n - archive\n - delete\n - email",
10
+ "whenToUse": "Run a named action (mark_paid, email, download, archive, delete) on one purchase order by id and action string (mutating).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The Purchase Order Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "PurchaseOrder"
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_quote",
3
+ "operationId": "actionQuote",
4
+ "method": "GET",
5
+ "path": "/api/v1/quotes/{id}/{action}",
6
+ "name": "Performs a custom action on an Quote",
7
+ "category": "quotes",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an Quote.\n\n The current range of actions are as follows\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - convert\n - convert_to_invoice\n - email",
10
+ "whenToUse": "Run a named action (clone, convert, mark_paid, email, archive) on one quote by id; use for quote workflow operations (mutating).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The Quote Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "Quote"
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_recurring_invoice",
3
+ "operationId": "actionRecurringInvoice",
4
+ "method": "GET",
5
+ "path": "/api/v1/recurring_invoices/{id}/{action}",
6
+ "name": "Custom recurring invoice action",
7
+ "category": "recurring_invoices",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an RecurringInvoice.\n\n The current range of actions are as follows\n - clone_to_RecurringInvoice\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email",
10
+ "whenToUse": "Run a named action (start, mark_paid, email, clone, download) on one recurring invoice by id; use for single-record operations (mutating).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The RecurringInvoice Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "RecurringInvoice"
41
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "slug": "action_recurring_quote",
3
+ "operationId": "actionRecurringQuote",
4
+ "method": "GET",
5
+ "path": "/api/v1/recurring_quotes/{id}/{action}",
6
+ "name": "Performs a custom action on an RecurringQuote",
7
+ "category": "recurring_quotes",
8
+ "mutating": true,
9
+ "description": "Performs a custom action on an RecurringQuote.\n\n The current range of actions are as follows\n - clone_to_RecurringQuote\n - clone_to_quote\n - history\n - delivery_note\n - mark_paid\n - download\n - archive\n - delete\n - email",
10
+ "whenToUse": "Run a named action (email, mark_paid, clone, download, history) on one recurring quote by id; use for operations beyond plain CRUD (mutating).",
11
+ "pathParameters": [
12
+ {
13
+ "name": "id",
14
+ "type": "string",
15
+ "required": true,
16
+ "description": "The RecurringQuote Hashed ID",
17
+ "format": "string",
18
+ "example": "D2J234DFA"
19
+ },
20
+ {
21
+ "name": "action",
22
+ "type": "string",
23
+ "required": true,
24
+ "description": "The action string to be performed",
25
+ "format": "string",
26
+ "example": "clone_to_quote"
27
+ }
28
+ ],
29
+ "queryParameters": [
30
+ {
31
+ "name": "include",
32
+ "type": "string",
33
+ "required": false,
34
+ "description": "Includes child relationships in the response, format is comma separated. Check each model for the list of associated includes",
35
+ "example": "first_load"
36
+ }
37
+ ],
38
+ "headerParameters": [],
39
+ "requestBody": null,
40
+ "responseSchema": "RecurringQuote"
41
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "slug": "bulk_bank_integrations",
3
+ "operationId": "bulkBankIntegrations",
4
+ "method": "POST",
5
+ "path": "/api/v1/bank_integrations/bulk",
6
+ "name": "Performs bulk actions on an array of bank_integrations",
7
+ "category": "bank_integrations",
8
+ "mutating": true,
9
+ "description": "Performs bulk actions on an array of bank_integrations",
10
+ "whenToUse": "Run a batch action over an array of bank integration ids; use for multi-record bank integration operations (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "slug": "bulk_bank_transaction_rules",
3
+ "operationId": "bulkBankTransactionRules",
4
+ "method": "POST",
5
+ "path": "/api/v1/bank_transaction_rules/bulk",
6
+ "name": "Performs bulk actions on an array of bank_transaction rules",
7
+ "category": "bank_transaction_rules",
8
+ "mutating": true,
9
+ "description": "Performs bulk actions on an array of bank_transaction rules",
10
+ "whenToUse": "Apply one action across many bank transaction rule ids at once; reach for it for batch archive/restore operations (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ }
26
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "slug": "bulk_bank_transactions",
3
+ "operationId": "bulkBankTransactions",
4
+ "method": "POST",
5
+ "path": "/api/v1/bank_transactions/bulk",
6
+ "name": "Bulk actions",
7
+ "category": "bank_transactions",
8
+ "mutating": true,
9
+ "description": "Bulk actions",
10
+ "whenToUse": "Run a batch action over an array of bank transaction ids; use for actions across many transactions at once (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ }
26
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "slug": "bulk_clients",
3
+ "operationId": "bulkClients",
4
+ "method": "POST",
5
+ "path": "/api/v1/clients/bulk",
6
+ "name": "Bulk client actions",
7
+ "category": "clients",
8
+ "mutating": true,
9
+ "description": "## POST /api/v1/clients/bulk\n\nBulk actions allow to make changes to multiple clients in a single request the following actions are supported\n\n- archive\n- restore\n- delete\n- template _requires template,template_id properties also_\n- assign_group _requires group_settings_id also_\n- bulk_update _requires column,new_value also_\n\nAll of these actions require an array of client ids to perform the requested action on ie.\n\n\"ids\":['id1','id2']\n\nactions such as template, assign_group and bulk_update also require additional properties to be passed in the request\n\n- template\n\nThe template bulk action allows the creation of a custom template using the provided template_id to be run against the array of clients provided.\n\n- assign_group\n\nAllows setting multiple clients to a single group\n\n- bulk_update\n\nAllows updating certain columns on the client model in bulk. the current list of supported columns that can be updated archived_at:\n\n- public_notes\n- industry_id\n- size_id\n- country_id\n- custom_value1\n- custom_value2\n- custom_value3\n- custom_value4",
10
+ "whenToUse": "Run a batch action (archive, restore, delete, assign_group, bulk_update, template) over an array of client ids in one request (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ },
20
+ {
21
+ "name": "include",
22
+ "type": "string",
23
+ "required": false,
24
+ "description": "Include child relationships of the Client Object. ie ?include=documents,system_logs\n\n```html\nAvailable includes:\n\ncontacts [All contacts related to the client]\ndocuments [All documents related to the client]\ngateway_tokens [All payment tokens related to the client]\nactivities [All activities related to the client]\nledger [The client ledger]\nsystem_logs [System logs related to the client]\ngroup_settings [The group settings object the client is assigned to]\n\n```\n\nUsage:\n\n```html\n/api/v1/clients?include=contacts,documents,activities\n```"
25
+ }
26
+ ],
27
+ "headerParameters": [],
28
+ "requestBody": {
29
+ "contentType": "application/json",
30
+ "fields": [
31
+ {
32
+ "name": "action",
33
+ "type": "string",
34
+ "required": false,
35
+ "description": "The action to perform ie. archive / restore / delete"
36
+ },
37
+ {
38
+ "name": "ids",
39
+ "type": "array",
40
+ "required": false
41
+ }
42
+ ],
43
+ "schemaRef": "GenericBulkAction"
44
+ },
45
+ "responseSchema": "Client"
46
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "slug": "bulk_company_gateways",
3
+ "operationId": "bulkCompanyGateways",
4
+ "method": "POST",
5
+ "path": "/api/v1/company_gateways/bulk",
6
+ "name": "Performs bulk actions on an array of company_gateways",
7
+ "category": "company_gateways",
8
+ "mutating": true,
9
+ "description": "Performs bulk actions on an array of company_gateways",
10
+ "whenToUse": "Apply one action across many company gateway ids at once; reach for it for batch archive/restore operations (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ },
26
+ "responseSchema": "CompanyGateway"
27
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "slug": "bulk_credits",
3
+ "operationId": "bulkCredits",
4
+ "method": "POST",
5
+ "path": "/api/v1/credits/bulk",
6
+ "name": "Bulk credit actions",
7
+ "category": "credits",
8
+ "mutating": true,
9
+ "description": "Bulk credit actions",
10
+ "whenToUse": "Apply one action like email or mark_sent across many credit ids at once; reach for it for batch credit operations (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ }
26
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "slug": "bulk_designs",
3
+ "operationId": "bulkDesigns",
4
+ "method": "POST",
5
+ "path": "/api/v1/designs/bulk",
6
+ "name": "Performs bulk actions on an array of designs",
7
+ "category": "designs",
8
+ "mutating": true,
9
+ "description": "Performs bulk actions on an array of designs",
10
+ "whenToUse": "Apply one action across an array of design ids in a single batch instead of per-record calls (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ },
26
+ "responseSchema": "Design"
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "slug": "bulk_expense_categorys",
3
+ "operationId": "bulkExpenseCategorys",
4
+ "method": "POST",
5
+ "path": "/api/v1/expense_categories/bulk",
6
+ "name": "Performs bulk actions on an array of ExpenseCategorys",
7
+ "category": "expense_categories",
8
+ "mutating": true,
9
+ "description": "Performs bulk actions on an array of ExpenseCategorys",
10
+ "whenToUse": "Apply one action across an array of expense category ids in a single batch instead of per-record calls (mutating).",
11
+ "pathParameters": [],
12
+ "queryParameters": [
13
+ {
14
+ "name": "index",
15
+ "type": "string",
16
+ "required": false,
17
+ "description": "Replaces the default response index from data to a user specific string\n\nie.\n\n```html\n ?index=new_index\n```\n\nresponse is wrapped\n\n```json\n {\n 'new_index' : [\n .....\n ]\n }\n```",
18
+ "example": "user"
19
+ }
20
+ ],
21
+ "headerParameters": [],
22
+ "requestBody": {
23
+ "contentType": "application/json",
24
+ "fields": []
25
+ },
26
+ "responseSchema": "Webhook"
27
+ }