From 8a65bd1554e37314242da2541e22e8f2f3f09668 Mon Sep 17 00:00:00 2001 From: "anatoly.shipitz" Date: Tue, 29 Jul 2025 11:57:49 +0200 Subject: [PATCH 1/4] feat(config): Enhance QBO configuration with additional OAuth2 parameters - Added new OAuth2 configuration parameters to `qbo.ts`, including `clientId`, `clientSecret`, `companyId`, `refreshToken`, and `tokenEndpoint`. - Updated the Zod schema validation to require the new parameters, ensuring proper validation of environment variables. These changes improve the application's integration with the QBO API by providing necessary authentication details and enhancing configuration management. --- workers/main/src/configs/qbo.ts | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/workers/main/src/configs/qbo.ts b/workers/main/src/configs/qbo.ts index 0481ddc..008cc93 100644 --- a/workers/main/src/configs/qbo.ts +++ b/workers/main/src/configs/qbo.ts @@ -3,9 +3,21 @@ import { z } from 'zod'; export const qboConfig = { apiUrl: process.env.QBO_API_URL, bearerToken: process.env.QBO_BEARER_TOKEN, + // OAuth2 configuration + clientId: process.env.QBO_CLIENT_ID, + clientSecret: process.env.QBO_CLIENT_SECRET, + refreshToken: process.env.QBO_REFRESH_TOKEN, + tokenEndpoint: process.env.QBO_TOKEN_ENDPOINT || 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer', + companyId: process.env.QBO_COMPANY_ID, }; export const qboSchema = z.object({ QBO_API_URL: z.string().url(), - QBO_BEARER_TOKEN: z.string(), + QBO_BEARER_TOKEN: z.string().optional(), + // OAuth2 schema + QBO_CLIENT_ID: z.string(), + QBO_CLIENT_SECRET: z.string(), + QBO_REFRESH_TOKEN: z.string(), + QBO_TOKEN_ENDPOINT: z.string().url().optional(), + QBO_COMPANY_ID: z.string(), }); From f914da2e90970bb5a4822d34d0e5f8b2222a247e Mon Sep 17 00:00:00 2001 From: "anatoly.shipitz" Date: Tue, 29 Jul 2025 12:00:05 +0200 Subject: [PATCH 2/4] feat(config): Update `.env.example` with QBO API configuration parameters - Added QuickBooks Online (QBO) configuration parameters to the `.env.example` file, including `QBO_API_URL`, `QBO_CLIENT_ID`, `QBO_CLIENT_SECRET`, `QBO_COMPANY_ID`, `QBO_REFRESH_TOKEN`, and `QBO_TOKEN_ENDPOINT`. - This update enhances the application's environment setup for QBO integration by providing necessary configuration details for OAuth2 authentication. These changes improve the clarity and usability of the environment configuration for developers working with the QBO API. --- .env.example | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/.env.example b/.env.example index ef2fd86..a6ca8de 100644 --- a/.env.example +++ b/.env.example @@ -36,6 +36,14 @@ OAUTH2_PROXY_REDIRECT_URL=https://your-domain/oauth2/callback # GitHub MCP Server configuration GITHUB_PERSONAL_ACCESS_TOKEN=github_access_token +# QuickBooks Online (QBO) Configuration +QBO_API_URL=https://sandbox-accounts.platform.intuit.com/v1/openid_connect/userinfo +QBO_CLIENT_ID=your_qbo_client_id +QBO_CLIENT_SECRET=your_qbo_client_secret +QBO_COMPANY_ID=your_qbo_company_id +QBO_REFRESH_TOKEN=your_qbo_refresh_token +QBO_TOKEN_ENDPOINT=https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer + # ============================= # Production Environment # ============================= From 33b4ff81631d5007bae9b2814847b85e0c6835e6 Mon Sep 17 00:00:00 2001 From: "anatoly.shipitz" Date: Tue, 29 Jul 2025 14:40:16 +0200 Subject: [PATCH 3/4] fix(config): Refactor QBO configuration and schema validation - Rearranged the QBO configuration parameters in `qbo.ts` for improved readability and consistency. - Updated the Zod schema to enforce required fields for `QBO_API_URL`, `QBO_CLIENT_ID`, `QBO_CLIENT_SECRET`, and `QBO_COMPANY_ID`, while making `QBO_REFRESH_TOKEN` optional. - This refactor enhances the clarity of the configuration setup and ensures that essential parameters are validated correctly. These changes improve the overall structure and usability of the QBO integration configuration. --- workers/main/src/configs/qbo.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/workers/main/src/configs/qbo.ts b/workers/main/src/configs/qbo.ts index 008cc93..c2c2cd3 100644 --- a/workers/main/src/configs/qbo.ts +++ b/workers/main/src/configs/qbo.ts @@ -6,18 +6,17 @@ export const qboConfig = { // OAuth2 configuration clientId: process.env.QBO_CLIENT_ID, clientSecret: process.env.QBO_CLIENT_SECRET, - refreshToken: process.env.QBO_REFRESH_TOKEN, - tokenEndpoint: process.env.QBO_TOKEN_ENDPOINT || 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer', companyId: process.env.QBO_COMPANY_ID, + refreshToken: process.env.QBO_REFRESH_TOKEN, + tokenEndpoint: + process.env.QBO_TOKEN_ENDPOINT || + 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer', }; export const qboSchema = z.object({ - QBO_API_URL: z.string().url(), - QBO_BEARER_TOKEN: z.string().optional(), - // OAuth2 schema - QBO_CLIENT_ID: z.string(), - QBO_CLIENT_SECRET: z.string(), - QBO_REFRESH_TOKEN: z.string(), - QBO_TOKEN_ENDPOINT: z.string().url().optional(), - QBO_COMPANY_ID: z.string(), + QBO_API_URL: z.string().url().min(1, 'QBO_API_URL is required'), + QBO_CLIENT_ID: z.string().min(1, 'QBO_CLIENT_ID is required'), + QBO_CLIENT_SECRET: z.string().min(1, 'QBO_CLIENT_SECRET is required'), + QBO_COMPANY_ID: z.string().min(1, 'QBO_COMPANY_ID is required'), + QBO_REFRESH_TOKEN: z.string().optional(), }); From 554e2acb504f43b407b57c4b6fada330e1135310 Mon Sep 17 00:00:00 2001 From: "anatoly.shipitz" Date: Tue, 29 Jul 2025 15:56:50 +0200 Subject: [PATCH 4/4] feat(config): Add QBO configuration parameters to `.env.test` - Introduced additional QuickBooks Online (QBO) configuration parameters in the `.env.test` file, including `QBO_CLIENT_ID`, `QBO_CLIENT_SECRET`, `QBO_COMPANY_ID`, `QBO_REFRESH_TOKEN`, and `QBO_TOKEN_ENDPOINT`. - This update enhances the environment setup for QBO integration by providing necessary configuration details for OAuth2 authentication in the testing environment. These changes improve the clarity and usability of the environment configuration for developers working with the QBO API in testing scenarios. --- workers/main/.env.test | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/workers/main/.env.test b/workers/main/.env.test index bba98b2..ded026f 100644 --- a/workers/main/.env.test +++ b/workers/main/.env.test @@ -13,3 +13,10 @@ SLACK_FIN_REPORT_CHANNEL_ID=C02URP5L3U5 QBO_API_URL=https://quickbooks.api.intuit.com/v3/company/111111111 QBO_BEARER_TOKEN=test-token + +# QuickBooks Online (QBO) Configuration +QBO_CLIENT_ID=your_qbo_client_id +QBO_CLIENT_SECRET=your_qbo_client_secret +QBO_COMPANY_ID=your_qbo_company_id +QBO_REFRESH_TOKEN=your_qbo_refresh_token +QBO_TOKEN_ENDPOINT=https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer \ No newline at end of file