Skip to main content

apps/gateway/src/services/providers/accounting.ts

Metadata

Indexed Symbols

  • sendAccountingSync (line 16, function) - Implements send accounting sync for service-layer operations.

Markdown Headings (if applicable)

No markdown headings detected.

Source Preview

import { env } from "../../config/env.js";
import { resolveSecretValue } from "../runtime-config.js";

type AccountingSyncInput = {
workspaceId: string;
provider: "quickbooks" | "xero";
syncType: "customers" | "invoices" | "payments" | "catalog";
since?: string;
};

const providerEndpointEnvMap = {
quickbooks: "QUICKBOOKS_SYNC_URL",
xero: "XERO_SYNC_URL"
} as const;

export async function sendAccountingSync(input: AccountingSyncInput): Promise<{ provider: string; accepted: boolean; details?: unknown }> {
const endpointEnv = providerEndpointEnvMap[input.provider];
const tokenKey = input.provider === "quickbooks" ? "QUICKBOOKS_API_TOKEN" : "XERO_API_TOKEN";

const endpoint = await resolveSecretValue({
scopeType: "workspace",
workspaceId: input.workspaceId,
key: endpointEnv,
fallbackEnv: endpointEnv
});