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 # ============================= 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 diff --git a/workers/main/src/configs/qbo.ts b/workers/main/src/configs/qbo.ts index 0481ddc..c2c2cd3 100644 --- a/workers/main/src/configs/qbo.ts +++ b/workers/main/src/configs/qbo.ts @@ -3,9 +3,20 @@ 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, + 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(), + 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(), });