@goodsamsoftware/freshbooks-mcp 1.0.0
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.
- package/LICENSE +21 -0
- package/README.md +357 -0
- package/dist/auth/config.d.ts +57 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +118 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/index.d.ts +47 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +46 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth.d.ts +93 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +279 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/token-store.d.ts +80 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +204 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/types.d.ts +76 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +20 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/client/freshbooks-client.d.ts +99 -0
- package/dist/client/freshbooks-client.d.ts.map +1 -0
- package/dist/client/freshbooks-client.js +283 -0
- package/dist/client/freshbooks-client.js.map +1 -0
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +81 -0
- package/dist/config/index.js.map +1 -0
- package/dist/errors/documentation.d.ts +57 -0
- package/dist/errors/documentation.d.ts.map +1 -0
- package/dist/errors/documentation.js +390 -0
- package/dist/errors/documentation.js.map +1 -0
- package/dist/errors/error-codes.d.ts +45 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +94 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/error-handler.d.ts +127 -0
- package/dist/errors/error-handler.d.ts.map +1 -0
- package/dist/errors/error-handler.js +283 -0
- package/dist/errors/error-handler.js.map +1 -0
- package/dist/errors/error-mapper.d.ts +68 -0
- package/dist/errors/error-mapper.d.ts.map +1 -0
- package/dist/errors/error-mapper.js +449 -0
- package/dist/errors/error-mapper.js.map +1 -0
- package/dist/errors/index.d.ts +37 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +41 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/response-formatter.d.ts +109 -0
- package/dist/errors/response-formatter.d.ts.map +1 -0
- package/dist/errors/response-formatter.js +232 -0
- package/dist/errors/response-formatter.js.map +1 -0
- package/dist/errors/types.d.ts +194 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +134 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +263 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/base-tool.d.ts +146 -0
- package/dist/tools/base-tool.d.ts.map +1 -0
- package/dist/tools/base-tool.js +161 -0
- package/dist/tools/base-tool.js.map +1 -0
- package/dist/tools/bill/bill-archive.d.ts +40 -0
- package/dist/tools/bill/bill-archive.d.ts.map +1 -0
- package/dist/tools/bill/bill-archive.js +68 -0
- package/dist/tools/bill/bill-archive.js.map +1 -0
- package/dist/tools/bill/bill-create.d.ts +178 -0
- package/dist/tools/bill/bill-create.d.ts.map +1 -0
- package/dist/tools/bill/bill-create.js +70 -0
- package/dist/tools/bill/bill-create.js.map +1 -0
- package/dist/tools/bill/bill-delete.d.ts +40 -0
- package/dist/tools/bill/bill-delete.d.ts.map +1 -0
- package/dist/tools/bill/bill-delete.js +67 -0
- package/dist/tools/bill/bill-delete.js.map +1 -0
- package/dist/tools/bill/bill-list.d.ts +249 -0
- package/dist/tools/bill/bill-list.d.ts.map +1 -0
- package/dist/tools/bill/bill-list.js +114 -0
- package/dist/tools/bill/bill-list.js.map +1 -0
- package/dist/tools/bill/bill-single.d.ts +142 -0
- package/dist/tools/bill/bill-single.d.ts.map +1 -0
- package/dist/tools/bill/bill-single.js +62 -0
- package/dist/tools/bill/bill-single.js.map +1 -0
- package/dist/tools/bill/index.d.ts +11 -0
- package/dist/tools/bill/index.d.ts.map +1 -0
- package/dist/tools/bill/index.js +13 -0
- package/dist/tools/bill/index.js.map +1 -0
- package/dist/tools/bill/schemas.d.ts +609 -0
- package/dist/tools/bill/schemas.d.ts.map +1 -0
- package/dist/tools/bill/schemas.js +124 -0
- package/dist/tools/bill/schemas.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-create.d.ts +103 -0
- package/dist/tools/bill-payment/billpayment-create.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-create.js +67 -0
- package/dist/tools/bill-payment/billpayment-create.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-delete.d.ts +40 -0
- package/dist/tools/bill-payment/billpayment-delete.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-delete.js +67 -0
- package/dist/tools/bill-payment/billpayment-delete.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-list.d.ts +148 -0
- package/dist/tools/bill-payment/billpayment-list.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-list.js +111 -0
- package/dist/tools/bill-payment/billpayment-list.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-single.d.ts +76 -0
- package/dist/tools/bill-payment/billpayment-single.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-single.js +62 -0
- package/dist/tools/bill-payment/billpayment-single.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-update.d.ts +103 -0
- package/dist/tools/bill-payment/billpayment-update.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-update.js +67 -0
- package/dist/tools/bill-payment/billpayment-update.js.map +1 -0
- package/dist/tools/bill-payment/index.d.ts +11 -0
- package/dist/tools/bill-payment/index.d.ts.map +1 -0
- package/dist/tools/bill-payment/index.js +13 -0
- package/dist/tools/bill-payment/index.js.map +1 -0
- package/dist/tools/bill-payment/schemas.d.ts +381 -0
- package/dist/tools/bill-payment/schemas.d.ts.map +1 -0
- package/dist/tools/bill-payment/schemas.js +113 -0
- package/dist/tools/bill-payment/schemas.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-create.d.ts +139 -0
- package/dist/tools/bill-vendor/billvendor-create.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-create.js +72 -0
- package/dist/tools/bill-vendor/billvendor-create.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-delete.d.ts +40 -0
- package/dist/tools/bill-vendor/billvendor-delete.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-delete.js +67 -0
- package/dist/tools/bill-vendor/billvendor-delete.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-list.d.ts +179 -0
- package/dist/tools/bill-vendor/billvendor-list.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-list.js +109 -0
- package/dist/tools/bill-vendor/billvendor-list.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-single.d.ts +94 -0
- package/dist/tools/bill-vendor/billvendor-single.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-single.js +62 -0
- package/dist/tools/bill-vendor/billvendor-single.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-update.d.ts +142 -0
- package/dist/tools/bill-vendor/billvendor-update.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-update.js +72 -0
- package/dist/tools/bill-vendor/billvendor-update.js.map +1 -0
- package/dist/tools/bill-vendor/index.d.ts +11 -0
- package/dist/tools/bill-vendor/index.d.ts.map +1 -0
- package/dist/tools/bill-vendor/index.js +13 -0
- package/dist/tools/bill-vendor/index.js.map +1 -0
- package/dist/tools/bill-vendor/schemas.d.ts +483 -0
- package/dist/tools/bill-vendor/schemas.d.ts.map +1 -0
- package/dist/tools/bill-vendor/schemas.js +136 -0
- package/dist/tools/bill-vendor/schemas.js.map +1 -0
- package/dist/tools/callback/callback-create.d.ts +52 -0
- package/dist/tools/callback/callback-create.d.ts.map +1 -0
- package/dist/tools/callback/callback-create.js +73 -0
- package/dist/tools/callback/callback-create.js.map +1 -0
- package/dist/tools/callback/callback-delete.d.ts +37 -0
- package/dist/tools/callback/callback-delete.d.ts.map +1 -0
- package/dist/tools/callback/callback-delete.js +57 -0
- package/dist/tools/callback/callback-delete.js.map +1 -0
- package/dist/tools/callback/callback-list.d.ts +100 -0
- package/dist/tools/callback/callback-list.d.ts.map +1 -0
- package/dist/tools/callback/callback-list.js +84 -0
- package/dist/tools/callback/callback-list.js.map +1 -0
- package/dist/tools/callback/callback-resend-verification.d.ts +49 -0
- package/dist/tools/callback/callback-resend-verification.d.ts.map +1 -0
- package/dist/tools/callback/callback-resend-verification.js +63 -0
- package/dist/tools/callback/callback-resend-verification.js.map +1 -0
- package/dist/tools/callback/callback-single.d.ts +49 -0
- package/dist/tools/callback/callback-single.d.ts.map +1 -0
- package/dist/tools/callback/callback-single.js +53 -0
- package/dist/tools/callback/callback-single.js.map +1 -0
- package/dist/tools/callback/callback-update.d.ts +55 -0
- package/dist/tools/callback/callback-update.d.ts.map +1 -0
- package/dist/tools/callback/callback-update.js +62 -0
- package/dist/tools/callback/callback-update.js.map +1 -0
- package/dist/tools/callback/callback-verify.d.ts +43 -0
- package/dist/tools/callback/callback-verify.d.ts.map +1 -0
- package/dist/tools/callback/callback-verify.js +69 -0
- package/dist/tools/callback/callback-verify.js.map +1 -0
- package/dist/tools/callback/index.d.ts +13 -0
- package/dist/tools/callback/index.d.ts.map +1 -0
- package/dist/tools/callback/index.js +15 -0
- package/dist/tools/callback/index.js.map +1 -0
- package/dist/tools/callback/schemas.d.ts +284 -0
- package/dist/tools/callback/schemas.d.ts.map +1 -0
- package/dist/tools/callback/schemas.js +114 -0
- package/dist/tools/callback/schemas.js.map +1 -0
- package/dist/tools/client/client-create.d.ts +211 -0
- package/dist/tools/client/client-create.d.ts.map +1 -0
- package/dist/tools/client/client-create.js +147 -0
- package/dist/tools/client/client-create.js.map +1 -0
- package/dist/tools/client/client-delete.d.ts +40 -0
- package/dist/tools/client/client-delete.d.ts.map +1 -0
- package/dist/tools/client/client-delete.js +73 -0
- package/dist/tools/client/client-delete.js.map +1 -0
- package/dist/tools/client/client-list.d.ts +264 -0
- package/dist/tools/client/client-list.d.ts.map +1 -0
- package/dist/tools/client/client-list.js +131 -0
- package/dist/tools/client/client-list.js.map +1 -0
- package/dist/tools/client/client-single.d.ts +133 -0
- package/dist/tools/client/client-single.d.ts.map +1 -0
- package/dist/tools/client/client-single.js +67 -0
- package/dist/tools/client/client-single.js.map +1 -0
- package/dist/tools/client/client-update.d.ts +217 -0
- package/dist/tools/client/client-update.d.ts.map +1 -0
- package/dist/tools/client/client-update.js +146 -0
- package/dist/tools/client/client-update.js.map +1 -0
- package/dist/tools/client/index.d.ts +11 -0
- package/dist/tools/client/index.d.ts.map +1 -0
- package/dist/tools/client/index.js +13 -0
- package/dist/tools/client/index.js.map +1 -0
- package/dist/tools/client/schemas.d.ts +759 -0
- package/dist/tools/client/schemas.d.ts.map +1 -0
- package/dist/tools/client/schemas.js +241 -0
- package/dist/tools/client/schemas.js.map +1 -0
- package/dist/tools/credit-note/creditnote-create.d.ts +448 -0
- package/dist/tools/credit-note/creditnote-create.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-create.js +88 -0
- package/dist/tools/credit-note/creditnote-create.js.map +1 -0
- package/dist/tools/credit-note/creditnote-delete.d.ts +37 -0
- package/dist/tools/credit-note/creditnote-delete.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-delete.js +57 -0
- package/dist/tools/credit-note/creditnote-delete.js.map +1 -0
- package/dist/tools/credit-note/creditnote-list.d.ts +627 -0
- package/dist/tools/credit-note/creditnote-list.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-list.js +106 -0
- package/dist/tools/credit-note/creditnote-list.js.map +1 -0
- package/dist/tools/credit-note/creditnote-single.d.ts +358 -0
- package/dist/tools/credit-note/creditnote-single.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-single.js +60 -0
- package/dist/tools/credit-note/creditnote-single.js.map +1 -0
- package/dist/tools/credit-note/creditnote-update.d.ts +442 -0
- package/dist/tools/credit-note/creditnote-update.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-update.js +82 -0
- package/dist/tools/credit-note/creditnote-update.js.map +1 -0
- package/dist/tools/credit-note/index.d.ts +11 -0
- package/dist/tools/credit-note/index.d.ts.map +1 -0
- package/dist/tools/credit-note/index.js +13 -0
- package/dist/tools/credit-note/index.js.map +1 -0
- package/dist/tools/credit-note/schemas.d.ts +1599 -0
- package/dist/tools/credit-note/schemas.d.ts.map +1 -0
- package/dist/tools/credit-note/schemas.js +196 -0
- package/dist/tools/credit-note/schemas.js.map +1 -0
- package/dist/tools/expense/expense-create.d.ts +196 -0
- package/dist/tools/expense/expense-create.d.ts.map +1 -0
- package/dist/tools/expense/expense-create.js +103 -0
- package/dist/tools/expense/expense-create.js.map +1 -0
- package/dist/tools/expense/expense-delete.d.ts +40 -0
- package/dist/tools/expense/expense-delete.d.ts.map +1 -0
- package/dist/tools/expense/expense-delete.js +73 -0
- package/dist/tools/expense/expense-delete.js.map +1 -0
- package/dist/tools/expense/expense-list.d.ts +264 -0
- package/dist/tools/expense/expense-list.d.ts.map +1 -0
- package/dist/tools/expense/expense-list.js +126 -0
- package/dist/tools/expense/expense-list.js.map +1 -0
- package/dist/tools/expense/expense-single.d.ts +145 -0
- package/dist/tools/expense/expense-single.d.ts.map +1 -0
- package/dist/tools/expense/expense-single.js +63 -0
- package/dist/tools/expense/expense-single.js.map +1 -0
- package/dist/tools/expense/expense-update.d.ts +199 -0
- package/dist/tools/expense/expense-update.d.ts.map +1 -0
- package/dist/tools/expense/expense-update.js +108 -0
- package/dist/tools/expense/expense-update.js.map +1 -0
- package/dist/tools/expense/index.d.ts +11 -0
- package/dist/tools/expense/index.d.ts.map +1 -0
- package/dist/tools/expense/index.js +13 -0
- package/dist/tools/expense/index.js.map +1 -0
- package/dist/tools/expense/schemas.d.ts +667 -0
- package/dist/tools/expense/schemas.d.ts.map +1 -0
- package/dist/tools/expense/schemas.js +142 -0
- package/dist/tools/expense/schemas.js.map +1 -0
- package/dist/tools/expense-category/expensecategory-list.d.ts +113 -0
- package/dist/tools/expense-category/expensecategory-list.d.ts.map +1 -0
- package/dist/tools/expense-category/expensecategory-list.js +113 -0
- package/dist/tools/expense-category/expensecategory-list.js.map +1 -0
- package/dist/tools/expense-category/expensecategory-single.d.ts +58 -0
- package/dist/tools/expense-category/expensecategory-single.d.ts.map +1 -0
- package/dist/tools/expense-category/expensecategory-single.js +66 -0
- package/dist/tools/expense-category/expensecategory-single.js.map +1 -0
- package/dist/tools/expense-category/index.d.ts +9 -0
- package/dist/tools/expense-category/index.d.ts.map +1 -0
- package/dist/tools/expense-category/index.js +11 -0
- package/dist/tools/expense-category/index.js.map +1 -0
- package/dist/tools/expense-category/schemas.d.ts +184 -0
- package/dist/tools/expense-category/schemas.d.ts.map +1 -0
- package/dist/tools/expense-category/schemas.js +58 -0
- package/dist/tools/expense-category/schemas.js.map +1 -0
- package/dist/tools/index.d.ts +53 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +98 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/invoice/index.d.ts +12 -0
- package/dist/tools/invoice/index.d.ts.map +1 -0
- package/dist/tools/invoice/index.js +14 -0
- package/dist/tools/invoice/index.js.map +1 -0
- package/dist/tools/invoice/invoice-create.d.ts +367 -0
- package/dist/tools/invoice/invoice-create.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-create.js +115 -0
- package/dist/tools/invoice/invoice-create.js.map +1 -0
- package/dist/tools/invoice/invoice-delete.d.ts +40 -0
- package/dist/tools/invoice/invoice-delete.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-delete.js +75 -0
- package/dist/tools/invoice/invoice-delete.js.map +1 -0
- package/dist/tools/invoice/invoice-list.d.ts +439 -0
- package/dist/tools/invoice/invoice-list.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-list.js +126 -0
- package/dist/tools/invoice/invoice-list.js.map +1 -0
- package/dist/tools/invoice/invoice-share-link.d.ts +40 -0
- package/dist/tools/invoice/invoice-share-link.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-share-link.js +89 -0
- package/dist/tools/invoice/invoice-share-link.js.map +1 -0
- package/dist/tools/invoice/invoice-single.d.ts +265 -0
- package/dist/tools/invoice/invoice-single.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-single.js +66 -0
- package/dist/tools/invoice/invoice-single.js.map +1 -0
- package/dist/tools/invoice/invoice-update.d.ts +373 -0
- package/dist/tools/invoice/invoice-update.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-update.js +122 -0
- package/dist/tools/invoice/invoice-update.js.map +1 -0
- package/dist/tools/invoice/schemas.d.ts +1414 -0
- package/dist/tools/invoice/schemas.d.ts.map +1 -0
- package/dist/tools/invoice/schemas.js +269 -0
- package/dist/tools/invoice/schemas.js.map +1 -0
- package/dist/tools/item/index.d.ts +10 -0
- package/dist/tools/item/index.d.ts.map +1 -0
- package/dist/tools/item/index.js +12 -0
- package/dist/tools/item/index.js.map +1 -0
- package/dist/tools/item/item-create.d.ts +136 -0
- package/dist/tools/item/item-create.d.ts.map +1 -0
- package/dist/tools/item/item-create.js +71 -0
- package/dist/tools/item/item-create.js.map +1 -0
- package/dist/tools/item/item-list.d.ts +178 -0
- package/dist/tools/item/item-list.d.ts.map +1 -0
- package/dist/tools/item/item-list.js +112 -0
- package/dist/tools/item/item-list.js.map +1 -0
- package/dist/tools/item/item-single.d.ts +94 -0
- package/dist/tools/item/item-single.d.ts.map +1 -0
- package/dist/tools/item/item-single.js +62 -0
- package/dist/tools/item/item-single.js.map +1 -0
- package/dist/tools/item/item-update.d.ts +139 -0
- package/dist/tools/item/item-update.d.ts.map +1 -0
- package/dist/tools/item/item-update.js +74 -0
- package/dist/tools/item/item-update.js.map +1 -0
- package/dist/tools/item/schemas.d.ts +454 -0
- package/dist/tools/item/schemas.d.ts.map +1 -0
- package/dist/tools/item/schemas.js +116 -0
- package/dist/tools/item/schemas.js.map +1 -0
- package/dist/tools/journal-entry/index.d.ts +7 -0
- package/dist/tools/journal-entry/index.d.ts.map +1 -0
- package/dist/tools/journal-entry/index.js +9 -0
- package/dist/tools/journal-entry/index.js.map +1 -0
- package/dist/tools/journal-entry/journalentry-create.d.ts +114 -0
- package/dist/tools/journal-entry/journalentry-create.d.ts.map +1 -0
- package/dist/tools/journal-entry/journalentry-create.js +98 -0
- package/dist/tools/journal-entry/journalentry-create.js.map +1 -0
- package/dist/tools/journal-entry/schemas.d.ts +182 -0
- package/dist/tools/journal-entry/schemas.d.ts.map +1 -0
- package/dist/tools/journal-entry/schemas.js +43 -0
- package/dist/tools/journal-entry/schemas.js.map +1 -0
- package/dist/tools/journal-entry-account/index.d.ts +7 -0
- package/dist/tools/journal-entry-account/index.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/index.js +9 -0
- package/dist/tools/journal-entry-account/index.js.map +1 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts +190 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.js +102 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.js.map +1 -0
- package/dist/tools/journal-entry-account/schemas.d.ts +344 -0
- package/dist/tools/journal-entry-account/schemas.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/schemas.js +65 -0
- package/dist/tools/journal-entry-account/schemas.js.map +1 -0
- package/dist/tools/metadata.d.ts +49 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +317 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/other-income/index.d.ts +11 -0
- package/dist/tools/other-income/index.d.ts.map +1 -0
- package/dist/tools/other-income/index.js +13 -0
- package/dist/tools/other-income/index.js.map +1 -0
- package/dist/tools/other-income/otherincome-create.d.ts +152 -0
- package/dist/tools/other-income/otherincome-create.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-create.js +89 -0
- package/dist/tools/other-income/otherincome-create.js.map +1 -0
- package/dist/tools/other-income/otherincome-delete.d.ts +37 -0
- package/dist/tools/other-income/otherincome-delete.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-delete.js +57 -0
- package/dist/tools/other-income/otherincome-delete.js.map +1 -0
- package/dist/tools/other-income/otherincome-list.d.ts +186 -0
- package/dist/tools/other-income/otherincome-list.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-list.js +107 -0
- package/dist/tools/other-income/otherincome-list.js.map +1 -0
- package/dist/tools/other-income/otherincome-single.d.ts +99 -0
- package/dist/tools/other-income/otherincome-single.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-single.js +53 -0
- package/dist/tools/other-income/otherincome-single.js.map +1 -0
- package/dist/tools/other-income/otherincome-update.d.ts +155 -0
- package/dist/tools/other-income/otherincome-update.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-update.js +84 -0
- package/dist/tools/other-income/otherincome-update.js.map +1 -0
- package/dist/tools/other-income/schemas.d.ts +510 -0
- package/dist/tools/other-income/schemas.d.ts.map +1 -0
- package/dist/tools/other-income/schemas.js +141 -0
- package/dist/tools/other-income/schemas.js.map +1 -0
- package/dist/tools/payment/index.d.ts +11 -0
- package/dist/tools/payment/index.d.ts.map +1 -0
- package/dist/tools/payment/index.js +13 -0
- package/dist/tools/payment/index.js.map +1 -0
- package/dist/tools/payment/payment-create.d.ts +127 -0
- package/dist/tools/payment/payment-create.d.ts.map +1 -0
- package/dist/tools/payment/payment-create.js +84 -0
- package/dist/tools/payment/payment-create.js.map +1 -0
- package/dist/tools/payment/payment-delete.d.ts +40 -0
- package/dist/tools/payment/payment-delete.d.ts.map +1 -0
- package/dist/tools/payment/payment-delete.js +67 -0
- package/dist/tools/payment/payment-delete.js.map +1 -0
- package/dist/tools/payment/payment-list.d.ts +186 -0
- package/dist/tools/payment/payment-list.d.ts.map +1 -0
- package/dist/tools/payment/payment-list.js +113 -0
- package/dist/tools/payment/payment-list.js.map +1 -0
- package/dist/tools/payment/payment-single.d.ts +97 -0
- package/dist/tools/payment/payment-single.d.ts.map +1 -0
- package/dist/tools/payment/payment-single.js +62 -0
- package/dist/tools/payment/payment-single.js.map +1 -0
- package/dist/tools/payment/payment-update.d.ts +124 -0
- package/dist/tools/payment/payment-update.d.ts.map +1 -0
- package/dist/tools/payment/payment-update.js +79 -0
- package/dist/tools/payment/payment-update.js.map +1 -0
- package/dist/tools/payment/schemas.d.ts +445 -0
- package/dist/tools/payment/schemas.d.ts.map +1 -0
- package/dist/tools/payment/schemas.js +126 -0
- package/dist/tools/payment/schemas.js.map +1 -0
- package/dist/tools/payment-options/index.d.ts +9 -0
- package/dist/tools/payment-options/index.d.ts.map +1 -0
- package/dist/tools/payment-options/index.js +11 -0
- package/dist/tools/payment-options/index.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-create.d.ts +91 -0
- package/dist/tools/payment-options/paymentoptions-create.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-create.js +71 -0
- package/dist/tools/payment-options/paymentoptions-create.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-default.d.ts +43 -0
- package/dist/tools/payment-options/paymentoptions-default.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-default.js +64 -0
- package/dist/tools/payment-options/paymentoptions-default.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-single.d.ts +76 -0
- package/dist/tools/payment-options/paymentoptions-single.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-single.js +58 -0
- package/dist/tools/payment-options/paymentoptions-single.js.map +1 -0
- package/dist/tools/payment-options/schemas.d.ts +197 -0
- package/dist/tools/payment-options/schemas.d.ts.map +1 -0
- package/dist/tools/payment-options/schemas.js +69 -0
- package/dist/tools/payment-options/schemas.js.map +1 -0
- package/dist/tools/project/index.d.ts +11 -0
- package/dist/tools/project/index.d.ts.map +1 -0
- package/dist/tools/project/index.js +13 -0
- package/dist/tools/project/index.js.map +1 -0
- package/dist/tools/project/project-create.d.ts +142 -0
- package/dist/tools/project/project-create.d.ts.map +1 -0
- package/dist/tools/project/project-create.js +100 -0
- package/dist/tools/project/project-create.js.map +1 -0
- package/dist/tools/project/project-delete.d.ts +44 -0
- package/dist/tools/project/project-delete.d.ts.map +1 -0
- package/dist/tools/project/project-delete.js +80 -0
- package/dist/tools/project/project-delete.js.map +1 -0
- package/dist/tools/project/project-list.d.ts +227 -0
- package/dist/tools/project/project-list.d.ts.map +1 -0
- package/dist/tools/project/project-list.js +118 -0
- package/dist/tools/project/project-list.js.map +1 -0
- package/dist/tools/project/project-single.d.ts +115 -0
- package/dist/tools/project/project-single.d.ts.map +1 -0
- package/dist/tools/project/project-single.js +63 -0
- package/dist/tools/project/project-single.js.map +1 -0
- package/dist/tools/project/project-update.d.ts +151 -0
- package/dist/tools/project/project-update.d.ts.map +1 -0
- package/dist/tools/project/project-update.js +106 -0
- package/dist/tools/project/project-update.js.map +1 -0
- package/dist/tools/project/schemas.d.ts +588 -0
- package/dist/tools/project/schemas.d.ts.map +1 -0
- package/dist/tools/project/schemas.js +196 -0
- package/dist/tools/project/schemas.js.map +1 -0
- package/dist/tools/report/index.d.ts +9 -0
- package/dist/tools/report/index.d.ts.map +1 -0
- package/dist/tools/report/index.js +11 -0
- package/dist/tools/report/index.js.map +1 -0
- package/dist/tools/report/report-payments-collected.d.ts +118 -0
- package/dist/tools/report/report-payments-collected.d.ts.map +1 -0
- package/dist/tools/report/report-payments-collected.js +89 -0
- package/dist/tools/report/report-payments-collected.js.map +1 -0
- package/dist/tools/report/report-profit-loss.d.ts +139 -0
- package/dist/tools/report/report-profit-loss.d.ts.map +1 -0
- package/dist/tools/report/report-profit-loss.js +98 -0
- package/dist/tools/report/report-profit-loss.js.map +1 -0
- package/dist/tools/report/report-tax-summary.d.ts +155 -0
- package/dist/tools/report/report-tax-summary.d.ts.map +1 -0
- package/dist/tools/report/report-tax-summary.js +100 -0
- package/dist/tools/report/report-tax-summary.js.map +1 -0
- package/dist/tools/report/schemas.d.ts +859 -0
- package/dist/tools/report/schemas.d.ts.map +1 -0
- package/dist/tools/report/schemas.js +126 -0
- package/dist/tools/report/schemas.js.map +1 -0
- package/dist/tools/service/index.d.ts +12 -0
- package/dist/tools/service/index.d.ts.map +1 -0
- package/dist/tools/service/index.js +14 -0
- package/dist/tools/service/index.js.map +1 -0
- package/dist/tools/service/schemas.d.ts +159 -0
- package/dist/tools/service/schemas.d.ts.map +1 -0
- package/dist/tools/service/schemas.js +62 -0
- package/dist/tools/service/schemas.js.map +1 -0
- package/dist/tools/service/service-create.d.ts +52 -0
- package/dist/tools/service/service-create.d.ts.map +1 -0
- package/dist/tools/service/service-create.js +82 -0
- package/dist/tools/service/service-create.js.map +1 -0
- package/dist/tools/service/service-list.d.ts +119 -0
- package/dist/tools/service/service-list.d.ts.map +1 -0
- package/dist/tools/service/service-list.js +99 -0
- package/dist/tools/service/service-list.js.map +1 -0
- package/dist/tools/service/service-rate-get.d.ts +63 -0
- package/dist/tools/service/service-rate-get.d.ts.map +1 -0
- package/dist/tools/service/service-rate-get.js +66 -0
- package/dist/tools/service/service-rate-get.js.map +1 -0
- package/dist/tools/service/service-rate-set.d.ts +76 -0
- package/dist/tools/service/service-rate-set.d.ts.map +1 -0
- package/dist/tools/service/service-rate-set.js +91 -0
- package/dist/tools/service/service-rate-set.js.map +1 -0
- package/dist/tools/service/service-single.d.ts +45 -0
- package/dist/tools/service/service-single.d.ts.map +1 -0
- package/dist/tools/service/service-single.js +63 -0
- package/dist/tools/service/service-single.js.map +1 -0
- package/dist/tools/task/index.d.ts +12 -0
- package/dist/tools/task/index.d.ts.map +1 -0
- package/dist/tools/task/index.js +14 -0
- package/dist/tools/task/index.js.map +1 -0
- package/dist/tools/task/schemas.d.ts +299 -0
- package/dist/tools/task/schemas.d.ts.map +1 -0
- package/dist/tools/task/schemas.js +89 -0
- package/dist/tools/task/schemas.js.map +1 -0
- package/dist/tools/task/task-create.d.ts +101 -0
- package/dist/tools/task/task-create.d.ts.map +1 -0
- package/dist/tools/task/task-create.js +77 -0
- package/dist/tools/task/task-create.js.map +1 -0
- package/dist/tools/task/task-delete.d.ts +39 -0
- package/dist/tools/task/task-delete.d.ts.map +1 -0
- package/dist/tools/task/task-delete.js +70 -0
- package/dist/tools/task/task-delete.js.map +1 -0
- package/dist/tools/task/task-list.d.ts +157 -0
- package/dist/tools/task/task-list.d.ts.map +1 -0
- package/dist/tools/task/task-list.js +78 -0
- package/dist/tools/task/task-list.js.map +1 -0
- package/dist/tools/task/task-single.d.ts +77 -0
- package/dist/tools/task/task-single.d.ts.map +1 -0
- package/dist/tools/task/task-single.js +56 -0
- package/dist/tools/task/task-single.js.map +1 -0
- package/dist/tools/task/task-update.d.ts +107 -0
- package/dist/tools/task/task-update.d.ts.map +1 -0
- package/dist/tools/task/task-update.js +87 -0
- package/dist/tools/task/task-update.js.map +1 -0
- package/dist/tools/time-entry/index.d.ts +11 -0
- package/dist/tools/time-entry/index.d.ts.map +1 -0
- package/dist/tools/time-entry/index.js +11 -0
- package/dist/tools/time-entry/index.js.map +1 -0
- package/dist/tools/time-entry/schemas.d.ts +598 -0
- package/dist/tools/time-entry/schemas.d.ts.map +1 -0
- package/dist/tools/time-entry/schemas.js +217 -0
- package/dist/tools/time-entry/schemas.js.map +1 -0
- package/dist/tools/time-entry/timeentry-create.d.ts +142 -0
- package/dist/tools/time-entry/timeentry-create.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-create.js +137 -0
- package/dist/tools/time-entry/timeentry-create.js.map +1 -0
- package/dist/tools/time-entry/timeentry-delete.d.ts +43 -0
- package/dist/tools/time-entry/timeentry-delete.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-delete.js +93 -0
- package/dist/tools/time-entry/timeentry-delete.js.map +1 -0
- package/dist/tools/time-entry/timeentry-list.d.ts +232 -0
- package/dist/tools/time-entry/timeentry-list.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-list.js +154 -0
- package/dist/tools/time-entry/timeentry-list.js.map +1 -0
- package/dist/tools/time-entry/timeentry-single.d.ts +109 -0
- package/dist/tools/time-entry/timeentry-single.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-single.js +75 -0
- package/dist/tools/time-entry/timeentry-single.js.map +1 -0
- package/dist/tools/time-entry/timeentry-update.d.ts +145 -0
- package/dist/tools/time-entry/timeentry-update.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-update.js +174 -0
- package/dist/tools/time-entry/timeentry-update.js.map +1 -0
- package/dist/tools/timer/index.d.ts +16 -0
- package/dist/tools/timer/index.d.ts.map +1 -0
- package/dist/tools/timer/index.js +19 -0
- package/dist/tools/timer/index.js.map +1 -0
- package/dist/tools/timer/schemas.d.ts +520 -0
- package/dist/tools/timer/schemas.d.ts.map +1 -0
- package/dist/tools/timer/schemas.js +109 -0
- package/dist/tools/timer/schemas.js.map +1 -0
- package/dist/tools/timer/timer-current.d.ts +170 -0
- package/dist/tools/timer/timer-current.d.ts.map +1 -0
- package/dist/tools/timer/timer-current.js +134 -0
- package/dist/tools/timer/timer-current.js.map +1 -0
- package/dist/tools/timer/timer-discard.d.ts +54 -0
- package/dist/tools/timer/timer-discard.d.ts.map +1 -0
- package/dist/tools/timer/timer-discard.js +115 -0
- package/dist/tools/timer/timer-discard.js.map +1 -0
- package/dist/tools/timer/timer-start.d.ts +135 -0
- package/dist/tools/timer/timer-start.d.ts.map +1 -0
- package/dist/tools/timer/timer-start.js +129 -0
- package/dist/tools/timer/timer-start.js.map +1 -0
- package/dist/tools/timer/timer-stop.d.ts +123 -0
- package/dist/tools/timer/timer-stop.d.ts.map +1 -0
- package/dist/tools/timer/timer-stop.js +165 -0
- package/dist/tools/timer/timer-stop.js.map +1 -0
- package/dist/tools/types.d.ts +49 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +61 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/user/index.d.ts +7 -0
- package/dist/tools/user/index.d.ts.map +1 -0
- package/dist/tools/user/index.js +9 -0
- package/dist/tools/user/index.js.map +1 -0
- package/dist/tools/user/schemas.d.ts +258 -0
- package/dist/tools/user/schemas.d.ts.map +1 -0
- package/dist/tools/user/schemas.js +51 -0
- package/dist/tools/user/schemas.js.map +1 -0
- package/dist/tools/user/user-me.d.ts +129 -0
- package/dist/tools/user/user-me.d.ts.map +1 -0
- package/dist/tools/user/user-me.js +63 -0
- package/dist/tools/user/user-me.js.map +1 -0
- package/dist/types/freshbooks.d.ts +276 -0
- package/dist/types/freshbooks.d.ts.map +1 -0
- package/dist/types/freshbooks.js +6 -0
- package/dist/types/freshbooks.js.map +1 -0
- package/dist/types/index.d.ts +92 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +54 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +133 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pagination.d.ts +39 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +62 -0
- package/dist/utils/pagination.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TimeEntry Zod Schemas
|
|
3
|
+
*
|
|
4
|
+
* Type-safe schemas for TimeEntry operations.
|
|
5
|
+
* Maps directly to FreshBooks TimeEntry API.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { createSortSchema, createIncludesSchema } from '../base-tool.js';
|
|
9
|
+
/**
|
|
10
|
+
* TimeEntry sortable fields
|
|
11
|
+
*/
|
|
12
|
+
export const TIMEENTRY_SORTABLE_FIELDS = [
|
|
13
|
+
'started_at',
|
|
14
|
+
'created_at',
|
|
15
|
+
'duration',
|
|
16
|
+
];
|
|
17
|
+
/**
|
|
18
|
+
* TimeEntry sort field descriptions
|
|
19
|
+
*/
|
|
20
|
+
export const TIMEENTRY_SORT_FIELD_DESCRIPTIONS = {
|
|
21
|
+
started_at: 'When the time entry started',
|
|
22
|
+
created_at: 'When the entry was created in FreshBooks',
|
|
23
|
+
duration: 'Length of the time entry in seconds',
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* TimeEntry include options
|
|
27
|
+
*/
|
|
28
|
+
export const TIMEENTRY_INCLUDE_OPTIONS = [
|
|
29
|
+
'client',
|
|
30
|
+
'project',
|
|
31
|
+
'task',
|
|
32
|
+
'service',
|
|
33
|
+
];
|
|
34
|
+
/**
|
|
35
|
+
* TimeEntry include option descriptions
|
|
36
|
+
*/
|
|
37
|
+
export const TIMEENTRY_INCLUDE_DESCRIPTIONS = {
|
|
38
|
+
client: 'Client details associated with the time entry',
|
|
39
|
+
project: 'Project details for the time entry',
|
|
40
|
+
task: 'Task information if assigned',
|
|
41
|
+
service: 'Service type used for billing categorization',
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* TimeEntry sort schema
|
|
45
|
+
*/
|
|
46
|
+
export const TimeEntrySortSchema = createSortSchema(TIMEENTRY_SORTABLE_FIELDS, TIMEENTRY_SORT_FIELD_DESCRIPTIONS);
|
|
47
|
+
/**
|
|
48
|
+
* TimeEntry includes schema
|
|
49
|
+
*/
|
|
50
|
+
export const TimeEntryIncludesSchema = createIncludesSchema(TIMEENTRY_INCLUDE_OPTIONS, TIMEENTRY_INCLUDE_DESCRIPTIONS);
|
|
51
|
+
/**
|
|
52
|
+
* Timer schema (embedded in TimeEntry)
|
|
53
|
+
*/
|
|
54
|
+
export const TimerSchema = z.object({
|
|
55
|
+
id: z.number().optional(),
|
|
56
|
+
isRunning: z.boolean().nullable().optional(),
|
|
57
|
+
});
|
|
58
|
+
/**
|
|
59
|
+
* Full TimeEntry entity schema
|
|
60
|
+
*/
|
|
61
|
+
export const TimeEntrySchema = z.object({
|
|
62
|
+
id: z.number().optional(),
|
|
63
|
+
identityId: z.number().optional(),
|
|
64
|
+
isLogged: z.boolean(),
|
|
65
|
+
startedAt: z.string().datetime(),
|
|
66
|
+
createdAt: z.string().datetime().optional(),
|
|
67
|
+
clientId: z.number().nullable().optional(),
|
|
68
|
+
projectId: z.number().nullable().optional(),
|
|
69
|
+
pendingClient: z.string().nullable().optional(),
|
|
70
|
+
pendingProject: z.string().nullable().optional(),
|
|
71
|
+
pendingTask: z.string().nullable().optional(),
|
|
72
|
+
taskId: z.number().nullable().optional(),
|
|
73
|
+
serviceId: z.number().nullable().optional(),
|
|
74
|
+
note: z.string().nullable().optional(),
|
|
75
|
+
active: z.boolean().optional(),
|
|
76
|
+
billable: z.boolean().optional(),
|
|
77
|
+
billed: z.boolean().optional(),
|
|
78
|
+
internal: z.boolean().optional(),
|
|
79
|
+
retainerId: z.number().nullable().optional(),
|
|
80
|
+
duration: z.number(),
|
|
81
|
+
timer: TimerSchema.nullable().optional(),
|
|
82
|
+
});
|
|
83
|
+
/**
|
|
84
|
+
* Input schema for creating a time entry
|
|
85
|
+
*/
|
|
86
|
+
export const TimeEntryCreateInputSchema = z.object({
|
|
87
|
+
businessId: z.number().int().positive().describe('FreshBooks business ID (get from user_me -> businessMemberships[].business.id)'),
|
|
88
|
+
duration: z.number().min(0).describe('Duration in seconds (0 for active timer)'),
|
|
89
|
+
isLogged: z.boolean().default(true).describe('Whether time is logged (false for active timer)'),
|
|
90
|
+
startedAt: z
|
|
91
|
+
.string()
|
|
92
|
+
.datetime()
|
|
93
|
+
.optional()
|
|
94
|
+
.describe('Start time (ISO 8601). Defaults to now if not specified'),
|
|
95
|
+
note: z.string().optional().describe('Description of work performed'),
|
|
96
|
+
projectId: z.number().optional().describe('Associated project ID'),
|
|
97
|
+
clientId: z.number().optional().describe('Associated client ID'),
|
|
98
|
+
serviceId: z.number().optional().describe('Associated service ID'),
|
|
99
|
+
taskId: z.number().optional().describe('Associated task ID'),
|
|
100
|
+
billable: z.boolean().optional().describe('Whether time is billable'),
|
|
101
|
+
active: z.boolean().default(false).describe('Whether this is an active timer'),
|
|
102
|
+
internal: z.boolean().optional().describe('Whether this is internal work'),
|
|
103
|
+
retainerId: z.number().optional().describe('Associated retainer ID'),
|
|
104
|
+
});
|
|
105
|
+
/**
|
|
106
|
+
* Input schema for updating a time entry
|
|
107
|
+
*/
|
|
108
|
+
export const TimeEntryUpdateInputSchema = z.object({
|
|
109
|
+
businessId: z.number().int().positive().describe('FreshBooks business ID (get from user_me -> businessMemberships[].business.id)'),
|
|
110
|
+
timeEntryId: z.number().describe('Time entry ID to update'),
|
|
111
|
+
duration: z.number().min(0).optional().describe('Duration in seconds'),
|
|
112
|
+
isLogged: z.boolean().optional().describe('Whether time is logged'),
|
|
113
|
+
startedAt: z.string().datetime().optional().describe('Start time (ISO 8601)'),
|
|
114
|
+
note: z.string().optional().describe('Description of work performed'),
|
|
115
|
+
projectId: z.number().nullable().optional().describe('Associated project ID'),
|
|
116
|
+
clientId: z.number().nullable().optional().describe('Associated client ID'),
|
|
117
|
+
serviceId: z.number().nullable().optional().describe('Associated service ID'),
|
|
118
|
+
taskId: z.number().nullable().optional().describe('Associated task ID'),
|
|
119
|
+
billable: z.boolean().optional().describe('Whether time is billable'),
|
|
120
|
+
active: z.boolean().optional().describe('Whether this is an active timer'),
|
|
121
|
+
internal: z.boolean().optional().describe('Whether this is internal work'),
|
|
122
|
+
retainerId: z.number().nullable().optional().describe('Associated retainer ID'),
|
|
123
|
+
});
|
|
124
|
+
/**
|
|
125
|
+
* Input schema for listing time entries
|
|
126
|
+
*/
|
|
127
|
+
export const TimeEntryListInputSchema = z.object({
|
|
128
|
+
businessId: z.number().int().positive().describe('FreshBooks business ID (get from user_me -> businessMemberships[].business.id)'),
|
|
129
|
+
page: z.number().int().min(1).default(1).optional().describe('Page number (1-indexed)'),
|
|
130
|
+
perPage: z
|
|
131
|
+
.number()
|
|
132
|
+
.int()
|
|
133
|
+
.min(1)
|
|
134
|
+
.max(100)
|
|
135
|
+
.default(30)
|
|
136
|
+
.optional()
|
|
137
|
+
.describe('Number of results per page (max 100)'),
|
|
138
|
+
// Search filters
|
|
139
|
+
projectId: z.number().optional().describe('Filter by project ID'),
|
|
140
|
+
clientId: z.number().optional().describe('Filter by client ID'),
|
|
141
|
+
taskId: z.number().optional().describe('Filter by task ID'),
|
|
142
|
+
serviceId: z.number().optional().describe('Filter by service ID'),
|
|
143
|
+
active: z.boolean().optional().describe('Filter by active status (running timers)'),
|
|
144
|
+
billable: z.boolean().optional().describe('Filter by billable status'),
|
|
145
|
+
billed: z.boolean().optional().describe('Filter by billed status'),
|
|
146
|
+
startedAfter: z
|
|
147
|
+
.string()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe('Filter entries started after this date (YYYY-MM-DD or ISO 8601 datetime)')
|
|
150
|
+
.transform((val) => {
|
|
151
|
+
if (!val)
|
|
152
|
+
return val;
|
|
153
|
+
// If just a date, append midnight UTC
|
|
154
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) {
|
|
155
|
+
return `${val}T00:00:00Z`;
|
|
156
|
+
}
|
|
157
|
+
return val;
|
|
158
|
+
}),
|
|
159
|
+
startedBefore: z
|
|
160
|
+
.string()
|
|
161
|
+
.optional()
|
|
162
|
+
.describe('Filter entries started before this date (YYYY-MM-DD or ISO 8601 datetime)')
|
|
163
|
+
.transform((val) => {
|
|
164
|
+
if (!val)
|
|
165
|
+
return val;
|
|
166
|
+
// If just a date, append end of day UTC
|
|
167
|
+
if (/^\d{4}-\d{2}-\d{2}$/.test(val)) {
|
|
168
|
+
return `${val}T23:59:59Z`;
|
|
169
|
+
}
|
|
170
|
+
return val;
|
|
171
|
+
}),
|
|
172
|
+
})
|
|
173
|
+
.merge(TimeEntrySortSchema)
|
|
174
|
+
.merge(TimeEntryIncludesSchema);
|
|
175
|
+
/**
|
|
176
|
+
* Input schema for getting a single time entry
|
|
177
|
+
*/
|
|
178
|
+
export const TimeEntrySingleInputSchema = z.object({
|
|
179
|
+
businessId: z.number().int().positive().describe('FreshBooks business ID (get from user_me -> businessMemberships[].business.id)'),
|
|
180
|
+
timeEntryId: z.number().describe('Time entry ID to retrieve'),
|
|
181
|
+
});
|
|
182
|
+
/**
|
|
183
|
+
* Input schema for deleting a time entry
|
|
184
|
+
*/
|
|
185
|
+
export const TimeEntryDeleteInputSchema = z.object({
|
|
186
|
+
businessId: z.number().int().positive().describe('FreshBooks business ID (get from user_me -> businessMemberships[].business.id)'),
|
|
187
|
+
timeEntryId: z.number().describe('Time entry ID to delete'),
|
|
188
|
+
});
|
|
189
|
+
/**
|
|
190
|
+
* Pagination metadata schema
|
|
191
|
+
*/
|
|
192
|
+
export const PaginationSchema = z.object({
|
|
193
|
+
page: z.number(),
|
|
194
|
+
pages: z.number(),
|
|
195
|
+
perPage: z.number(),
|
|
196
|
+
total: z.number(),
|
|
197
|
+
});
|
|
198
|
+
/**
|
|
199
|
+
* Output schema for list operations
|
|
200
|
+
*/
|
|
201
|
+
export const TimeEntryListOutputSchema = z.object({
|
|
202
|
+
timeEntries: z.array(TimeEntrySchema),
|
|
203
|
+
pagination: PaginationSchema,
|
|
204
|
+
});
|
|
205
|
+
/**
|
|
206
|
+
* Output schema for single/create/update operations
|
|
207
|
+
*/
|
|
208
|
+
export const TimeEntrySingleOutputSchema = TimeEntrySchema;
|
|
209
|
+
/**
|
|
210
|
+
* Output schema for delete operations
|
|
211
|
+
*/
|
|
212
|
+
export const TimeEntryDeleteOutputSchema = z.object({
|
|
213
|
+
success: z.boolean(),
|
|
214
|
+
message: z.string(),
|
|
215
|
+
timeEntryId: z.number(),
|
|
216
|
+
});
|
|
217
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/tools/time-entry/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* timeentry_create Tool
|
|
3
|
+
*
|
|
4
|
+
* Create a new time entry in FreshBooks.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { TimeEntryCreateInputSchema, TimeEntrySingleOutputSchema } from './schemas.js';
|
|
8
|
+
import { FreshBooksClientWrapper } from '../../client/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Tool definition for timeentry_create
|
|
11
|
+
*/
|
|
12
|
+
export declare const timeentryCreateTool: {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: z.ZodObject<{
|
|
16
|
+
businessId: z.ZodNumber;
|
|
17
|
+
duration: z.ZodNumber;
|
|
18
|
+
isLogged: z.ZodDefault<z.ZodBoolean>;
|
|
19
|
+
startedAt: z.ZodOptional<z.ZodString>;
|
|
20
|
+
note: z.ZodOptional<z.ZodString>;
|
|
21
|
+
projectId: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
clientId: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
serviceId: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
taskId: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
billable: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
active: z.ZodDefault<z.ZodBoolean>;
|
|
27
|
+
internal: z.ZodOptional<z.ZodBoolean>;
|
|
28
|
+
retainerId: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
businessId: number;
|
|
31
|
+
duration: number;
|
|
32
|
+
isLogged: boolean;
|
|
33
|
+
active: boolean;
|
|
34
|
+
taskId?: number | undefined;
|
|
35
|
+
startedAt?: string | undefined;
|
|
36
|
+
clientId?: number | undefined;
|
|
37
|
+
projectId?: number | undefined;
|
|
38
|
+
serviceId?: number | undefined;
|
|
39
|
+
note?: string | undefined;
|
|
40
|
+
billable?: boolean | undefined;
|
|
41
|
+
internal?: boolean | undefined;
|
|
42
|
+
retainerId?: number | undefined;
|
|
43
|
+
}, {
|
|
44
|
+
businessId: number;
|
|
45
|
+
duration: number;
|
|
46
|
+
taskId?: number | undefined;
|
|
47
|
+
isLogged?: boolean | undefined;
|
|
48
|
+
startedAt?: string | undefined;
|
|
49
|
+
clientId?: number | undefined;
|
|
50
|
+
projectId?: number | undefined;
|
|
51
|
+
serviceId?: number | undefined;
|
|
52
|
+
note?: string | undefined;
|
|
53
|
+
active?: boolean | undefined;
|
|
54
|
+
billable?: boolean | undefined;
|
|
55
|
+
internal?: boolean | undefined;
|
|
56
|
+
retainerId?: number | undefined;
|
|
57
|
+
}>;
|
|
58
|
+
outputSchema: z.ZodObject<{
|
|
59
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
60
|
+
identityId: z.ZodOptional<z.ZodNumber>;
|
|
61
|
+
isLogged: z.ZodBoolean;
|
|
62
|
+
startedAt: z.ZodString;
|
|
63
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
64
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
65
|
+
projectId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
66
|
+
pendingClient: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
67
|
+
pendingProject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
68
|
+
pendingTask: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
69
|
+
taskId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
70
|
+
serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
71
|
+
note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
72
|
+
active: z.ZodOptional<z.ZodBoolean>;
|
|
73
|
+
billable: z.ZodOptional<z.ZodBoolean>;
|
|
74
|
+
billed: z.ZodOptional<z.ZodBoolean>;
|
|
75
|
+
internal: z.ZodOptional<z.ZodBoolean>;
|
|
76
|
+
retainerId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
77
|
+
duration: z.ZodNumber;
|
|
78
|
+
timer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
79
|
+
id: z.ZodOptional<z.ZodNumber>;
|
|
80
|
+
isRunning: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
|
|
81
|
+
}, "strip", z.ZodTypeAny, {
|
|
82
|
+
id?: number | undefined;
|
|
83
|
+
isRunning?: boolean | null | undefined;
|
|
84
|
+
}, {
|
|
85
|
+
id?: number | undefined;
|
|
86
|
+
isRunning?: boolean | null | undefined;
|
|
87
|
+
}>>>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
duration: number;
|
|
90
|
+
isLogged: boolean;
|
|
91
|
+
startedAt: string;
|
|
92
|
+
billed?: boolean | undefined;
|
|
93
|
+
taskId?: number | null | undefined;
|
|
94
|
+
createdAt?: string | undefined;
|
|
95
|
+
id?: number | undefined;
|
|
96
|
+
identityId?: number | undefined;
|
|
97
|
+
clientId?: number | null | undefined;
|
|
98
|
+
projectId?: number | null | undefined;
|
|
99
|
+
pendingClient?: string | null | undefined;
|
|
100
|
+
pendingProject?: string | null | undefined;
|
|
101
|
+
pendingTask?: string | null | undefined;
|
|
102
|
+
serviceId?: number | null | undefined;
|
|
103
|
+
note?: string | null | undefined;
|
|
104
|
+
active?: boolean | undefined;
|
|
105
|
+
billable?: boolean | undefined;
|
|
106
|
+
internal?: boolean | undefined;
|
|
107
|
+
retainerId?: number | null | undefined;
|
|
108
|
+
timer?: {
|
|
109
|
+
id?: number | undefined;
|
|
110
|
+
isRunning?: boolean | null | undefined;
|
|
111
|
+
} | null | undefined;
|
|
112
|
+
}, {
|
|
113
|
+
duration: number;
|
|
114
|
+
isLogged: boolean;
|
|
115
|
+
startedAt: string;
|
|
116
|
+
billed?: boolean | undefined;
|
|
117
|
+
taskId?: number | null | undefined;
|
|
118
|
+
createdAt?: string | undefined;
|
|
119
|
+
id?: number | undefined;
|
|
120
|
+
identityId?: number | undefined;
|
|
121
|
+
clientId?: number | null | undefined;
|
|
122
|
+
projectId?: number | null | undefined;
|
|
123
|
+
pendingClient?: string | null | undefined;
|
|
124
|
+
pendingProject?: string | null | undefined;
|
|
125
|
+
pendingTask?: string | null | undefined;
|
|
126
|
+
serviceId?: number | null | undefined;
|
|
127
|
+
note?: string | null | undefined;
|
|
128
|
+
active?: boolean | undefined;
|
|
129
|
+
billable?: boolean | undefined;
|
|
130
|
+
internal?: boolean | undefined;
|
|
131
|
+
retainerId?: number | null | undefined;
|
|
132
|
+
timer?: {
|
|
133
|
+
id?: number | undefined;
|
|
134
|
+
isRunning?: boolean | null | undefined;
|
|
135
|
+
} | null | undefined;
|
|
136
|
+
}>;
|
|
137
|
+
/**
|
|
138
|
+
* Execute the tool
|
|
139
|
+
*/
|
|
140
|
+
execute(input: z.infer<typeof TimeEntryCreateInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimeEntrySingleOutputSchema>>;
|
|
141
|
+
};
|
|
142
|
+
//# sourceMappingURL=timeentry-create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeentry-create.d.ts","sourceRoot":"","sources":["../../../src/tools/time-entry/timeentry-create.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKhE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAwD9B;;OAEG;mBAEM,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,UACzC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;CA0FxD,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* timeentry_create Tool
|
|
3
|
+
*
|
|
4
|
+
* Create a new time entry in FreshBooks.
|
|
5
|
+
*/
|
|
6
|
+
import { TimeEntryCreateInputSchema, TimeEntrySingleOutputSchema } from './schemas.js';
|
|
7
|
+
import { ErrorHandler } from '../../errors/error-handler.js';
|
|
8
|
+
import { logger } from '../../utils/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Tool definition for timeentry_create
|
|
11
|
+
*/
|
|
12
|
+
export const timeentryCreateTool = {
|
|
13
|
+
name: 'timeentry_create',
|
|
14
|
+
description: `Create a new time entry in FreshBooks.
|
|
15
|
+
|
|
16
|
+
WHEN TO USE:
|
|
17
|
+
- User says "log my time", "track time", "record hours", "add time entry"
|
|
18
|
+
- User mentions working on a project with duration
|
|
19
|
+
- User wants to record billable or non-billable time
|
|
20
|
+
- User asks "log 2 hours on project X", "track 45 minutes of work"
|
|
21
|
+
|
|
22
|
+
REQUIRED:
|
|
23
|
+
- businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
|
|
24
|
+
- duration: Time in seconds (or ask user for hours/minutes and convert)
|
|
25
|
+
* 1 hour = 3600 seconds
|
|
26
|
+
* 1 minute = 60 seconds
|
|
27
|
+
* Example: 2 hours 30 minutes = 9000 seconds
|
|
28
|
+
|
|
29
|
+
OPTIONAL BUT RECOMMENDED:
|
|
30
|
+
- note: Description of work performed (improves billing accuracy)
|
|
31
|
+
- projectId: Associate with a project
|
|
32
|
+
- clientId: Associate with a client
|
|
33
|
+
- serviceId: Service type for billing categorization
|
|
34
|
+
- taskId: Associate with a task
|
|
35
|
+
- billable: Whether time is billable (default: true if isLogged=true)
|
|
36
|
+
- startedAt: When work began (ISO 8601 format, defaults to now)
|
|
37
|
+
- isLogged: Whether time is logged (default: true)
|
|
38
|
+
* Set to false for active timers (with duration=0 and active=true)
|
|
39
|
+
|
|
40
|
+
SPECIAL CASES:
|
|
41
|
+
- To start a timer: Set duration=0, active=true, isLogged=false
|
|
42
|
+
- For completed work: Set duration to actual seconds, isLogged=true
|
|
43
|
+
|
|
44
|
+
RETURNS:
|
|
45
|
+
Created time entry with:
|
|
46
|
+
- id: New time entry ID (save this for updates/deletes)
|
|
47
|
+
- duration: Confirmed duration in seconds
|
|
48
|
+
- All other time entry fields
|
|
49
|
+
|
|
50
|
+
EXAMPLES:
|
|
51
|
+
User says: "Log 2 hours on Project Alpha for code review"
|
|
52
|
+
→ duration: 7200 (2 * 3600)
|
|
53
|
+
→ note: "code review"
|
|
54
|
+
→ projectId: (look up Project Alpha)
|
|
55
|
+
|
|
56
|
+
User says: "Track 45 minutes of meeting time"
|
|
57
|
+
→ duration: 2700 (45 * 60)
|
|
58
|
+
→ note: "meeting"
|
|
59
|
+
|
|
60
|
+
User says: "Record 3 hours of development work for client ABC"
|
|
61
|
+
→ duration: 10800 (3 * 3600)
|
|
62
|
+
→ note: "development work"
|
|
63
|
+
→ clientId: (look up client ABC)`,
|
|
64
|
+
inputSchema: TimeEntryCreateInputSchema,
|
|
65
|
+
outputSchema: TimeEntrySingleOutputSchema,
|
|
66
|
+
/**
|
|
67
|
+
* Execute the tool
|
|
68
|
+
*/
|
|
69
|
+
async execute(input, client) {
|
|
70
|
+
const handler = ErrorHandler.wrapHandler('timeentry_create', async (input, _context) => {
|
|
71
|
+
logger.debug('Creating time entry', {
|
|
72
|
+
businessId: input.businessId,
|
|
73
|
+
duration: input.duration,
|
|
74
|
+
projectId: input.projectId,
|
|
75
|
+
isLogged: input.isLogged,
|
|
76
|
+
});
|
|
77
|
+
const result = await client.executeWithRetry('timeentry_create', async (fbClient) => {
|
|
78
|
+
// Build time entry data object
|
|
79
|
+
const timeEntryData = {
|
|
80
|
+
duration: input.duration,
|
|
81
|
+
isLogged: input.isLogged,
|
|
82
|
+
};
|
|
83
|
+
// Add startedAt (default to now if not specified)
|
|
84
|
+
if (input.startedAt) {
|
|
85
|
+
timeEntryData.startedAt = new Date(input.startedAt);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
timeEntryData.startedAt = new Date();
|
|
89
|
+
}
|
|
90
|
+
// Add optional fields if provided
|
|
91
|
+
if (input.note !== undefined) {
|
|
92
|
+
timeEntryData.note = input.note;
|
|
93
|
+
}
|
|
94
|
+
if (input.projectId !== undefined) {
|
|
95
|
+
timeEntryData.projectId = input.projectId;
|
|
96
|
+
}
|
|
97
|
+
if (input.clientId !== undefined) {
|
|
98
|
+
timeEntryData.clientId = input.clientId;
|
|
99
|
+
}
|
|
100
|
+
if (input.serviceId !== undefined) {
|
|
101
|
+
timeEntryData.serviceId = input.serviceId;
|
|
102
|
+
}
|
|
103
|
+
if (input.taskId !== undefined) {
|
|
104
|
+
timeEntryData.taskId = input.taskId;
|
|
105
|
+
}
|
|
106
|
+
if (input.billable !== undefined) {
|
|
107
|
+
timeEntryData.billable = input.billable;
|
|
108
|
+
}
|
|
109
|
+
if (input.active !== undefined) {
|
|
110
|
+
timeEntryData.active = input.active;
|
|
111
|
+
}
|
|
112
|
+
if (input.internal !== undefined) {
|
|
113
|
+
timeEntryData.internal = input.internal;
|
|
114
|
+
}
|
|
115
|
+
if (input.retainerId !== undefined) {
|
|
116
|
+
timeEntryData.retainerId = input.retainerId;
|
|
117
|
+
}
|
|
118
|
+
const response = await fbClient.timeEntries.create(timeEntryData, input.businessId);
|
|
119
|
+
if (!response.ok) {
|
|
120
|
+
throw response.error;
|
|
121
|
+
}
|
|
122
|
+
if (!response.data) {
|
|
123
|
+
throw ErrorHandler.createValidationError('Failed to create time entry: No data returned from API');
|
|
124
|
+
}
|
|
125
|
+
return response.data;
|
|
126
|
+
});
|
|
127
|
+
logger.info('Time entry created successfully', {
|
|
128
|
+
timeEntryId: result.id,
|
|
129
|
+
duration: result.duration,
|
|
130
|
+
isLogged: result.isLogged,
|
|
131
|
+
});
|
|
132
|
+
return result;
|
|
133
|
+
});
|
|
134
|
+
return handler(input, { businessId: input.businessId });
|
|
135
|
+
},
|
|
136
|
+
};
|
|
137
|
+
//# sourceMappingURL=timeentry-create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeentry-create.js","sourceRoot":"","sources":["../../../src/tools/time-entry/timeentry-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* timeentry_delete Tool
|
|
3
|
+
*
|
|
4
|
+
* Delete a time entry from FreshBooks.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { TimeEntryDeleteInputSchema, TimeEntryDeleteOutputSchema } from './schemas.js';
|
|
8
|
+
import { FreshBooksClientWrapper } from '../../client/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* Tool definition for timeentry_delete
|
|
11
|
+
*/
|
|
12
|
+
export declare const timeentryDeleteTool: {
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
inputSchema: z.ZodObject<{
|
|
16
|
+
businessId: z.ZodNumber;
|
|
17
|
+
timeEntryId: z.ZodNumber;
|
|
18
|
+
}, "strip", z.ZodTypeAny, {
|
|
19
|
+
businessId: number;
|
|
20
|
+
timeEntryId: number;
|
|
21
|
+
}, {
|
|
22
|
+
businessId: number;
|
|
23
|
+
timeEntryId: number;
|
|
24
|
+
}>;
|
|
25
|
+
outputSchema: z.ZodObject<{
|
|
26
|
+
success: z.ZodBoolean;
|
|
27
|
+
message: z.ZodString;
|
|
28
|
+
timeEntryId: z.ZodNumber;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
message: string;
|
|
31
|
+
success: boolean;
|
|
32
|
+
timeEntryId: number;
|
|
33
|
+
}, {
|
|
34
|
+
message: string;
|
|
35
|
+
success: boolean;
|
|
36
|
+
timeEntryId: number;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Execute the tool
|
|
40
|
+
*/
|
|
41
|
+
execute(input: z.infer<typeof TimeEntryDeleteInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimeEntryDeleteOutputSchema>>;
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=timeentry-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeentry-delete.d.ts","sourceRoot":"","sources":["../../../src/tools/time-entry/timeentry-delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAKhE;;GAEG;AACH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;IAuD9B;;OAEG;mBAEM,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,UACzC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;CAuCxD,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* timeentry_delete Tool
|
|
3
|
+
*
|
|
4
|
+
* Delete a time entry from FreshBooks.
|
|
5
|
+
*/
|
|
6
|
+
import { TimeEntryDeleteInputSchema, TimeEntryDeleteOutputSchema } from './schemas.js';
|
|
7
|
+
import { ErrorHandler } from '../../errors/error-handler.js';
|
|
8
|
+
import { logger } from '../../utils/logger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Tool definition for timeentry_delete
|
|
11
|
+
*/
|
|
12
|
+
export const timeentryDeleteTool = {
|
|
13
|
+
name: 'timeentry_delete',
|
|
14
|
+
description: `Delete a time entry from FreshBooks.
|
|
15
|
+
|
|
16
|
+
WHEN TO USE:
|
|
17
|
+
- User wants to remove a time entry completely
|
|
18
|
+
- User says "delete time entry X", "remove entry Y", "discard this time log"
|
|
19
|
+
- User made a mistake and wants to delete rather than update
|
|
20
|
+
- User wants to discard a running timer without logging the time
|
|
21
|
+
- User asks "delete entry 123", "remove that time entry"
|
|
22
|
+
|
|
23
|
+
REQUIRED:
|
|
24
|
+
- businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
|
|
25
|
+
- timeEntryId: ID of the time entry to delete
|
|
26
|
+
|
|
27
|
+
IMPORTANT NOTES:
|
|
28
|
+
- Deletion is permanent and cannot be undone
|
|
29
|
+
- Use this to discard running timers without logging time
|
|
30
|
+
- If time was already billed, deletion may affect invoices
|
|
31
|
+
- Consider updating instead of deleting if you just need to change values
|
|
32
|
+
|
|
33
|
+
USE CASES:
|
|
34
|
+
1. Discard a running timer:
|
|
35
|
+
- Delete the active time entry to discard without logging
|
|
36
|
+
|
|
37
|
+
2. Remove erroneous entry:
|
|
38
|
+
- Delete time entries created by mistake
|
|
39
|
+
|
|
40
|
+
3. Clean up test data:
|
|
41
|
+
- Remove test or sample time entries
|
|
42
|
+
|
|
43
|
+
ALTERNATIVE ACTIONS:
|
|
44
|
+
- To change duration/project: Use timeentry_update instead
|
|
45
|
+
- To make non-billable: Use timeentry_update with billable=false
|
|
46
|
+
- To archive: FreshBooks doesn't support archiving (delete removes completely)
|
|
47
|
+
|
|
48
|
+
RETURNS:
|
|
49
|
+
Success confirmation with:
|
|
50
|
+
- success: true/false
|
|
51
|
+
- message: Confirmation message
|
|
52
|
+
- timeEntryId: ID of the deleted entry
|
|
53
|
+
|
|
54
|
+
EXAMPLES:
|
|
55
|
+
User says: "Delete time entry 123"
|
|
56
|
+
→ timeEntryId: 123
|
|
57
|
+
|
|
58
|
+
User says: "Discard timer 456"
|
|
59
|
+
→ timeEntryId: 456
|
|
60
|
+
|
|
61
|
+
User says: "Remove that time entry I just created"
|
|
62
|
+
→ (first get the time entry ID, then delete)`,
|
|
63
|
+
inputSchema: TimeEntryDeleteInputSchema,
|
|
64
|
+
outputSchema: TimeEntryDeleteOutputSchema,
|
|
65
|
+
/**
|
|
66
|
+
* Execute the tool
|
|
67
|
+
*/
|
|
68
|
+
async execute(input, client) {
|
|
69
|
+
const handler = ErrorHandler.wrapHandler('timeentry_delete', async (input, _context) => {
|
|
70
|
+
logger.debug('Deleting time entry', {
|
|
71
|
+
businessId: input.businessId,
|
|
72
|
+
timeEntryId: input.timeEntryId,
|
|
73
|
+
});
|
|
74
|
+
await client.executeWithRetry('timeentry_delete', async (fbClient) => {
|
|
75
|
+
const response = await fbClient.timeEntries.delete(input.businessId, input.timeEntryId);
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
throw response.error;
|
|
78
|
+
}
|
|
79
|
+
return response;
|
|
80
|
+
});
|
|
81
|
+
logger.info('Time entry deleted successfully', {
|
|
82
|
+
timeEntryId: input.timeEntryId,
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
success: true,
|
|
86
|
+
message: `Time entry ${input.timeEntryId} deleted successfully`,
|
|
87
|
+
timeEntryId: input.timeEntryId,
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
return handler(input, { businessId: input.businessId, entityId: input.timeEntryId });
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
//# sourceMappingURL=timeentry-delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeentry-delete.js","sourceRoot":"","sources":["../../../src/tools/time-entry/timeentry-delete.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAEvF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6CAgD8B;IAE3C,WAAW,EAAE,0BAA0B;IACvC,YAAY,EAAE,2BAA2B;IAEzC;;OAEG;IACH,KAAK,CAAC,OAAO,CACX,KAAiD,EACjD,MAA+B;QAE/B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CACtC,kBAAkB,EAClB,KAAK,EACH,KAAiD,EACjD,QAAqB,EACrB,EAAE;YACF,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE;gBAClC,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;gBACnE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,MAAM,CAChD,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,WAAW,CAClB,CAAC;gBAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,QAAQ,CAAC,KAAK,CAAC;gBACvB,CAAC;gBAED,OAAO,QAAQ,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAC7C,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,cAAc,KAAK,CAAC,WAAW,uBAAuB;gBAC/D,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IACvF,CAAC;CACF,CAAC"}
|