@eldev/business-central-api
Version:
A Dynamics 365 Business Central client for TypeScript
39 lines • 1.62 kB
TypeScript
import { ApiPage } from "../pages/api-page.js";
import { ApiQuery } from "../pages/api-query.js";
import type { StandardSchemaV1 } from "../validation/standard-schema.js";
export declare const BC_BASE_URL = "https://api.businesscentral.dynamics.com/v2.0";
export declare const DEFAULT_TIMEOUT = 30000;
export declare const BC_DEFAULT_SCOPE = "https://api.businesscentral.dynamics.com/.default";
export type BCConfig = {
tenantId: string;
environment: string;
companyId: string;
timeout?: number;
baseURL?: string;
userAgent?: string;
};
export type RequestOpts = {
method?: "GET" | "POST" | "PATCH" | "DELETE";
params?: URLSearchParams;
payload?: unknown;
timeout?: number;
serverPageSize?: number;
};
export interface AuthClient {
getToken(scope: string): Promise<string>;
}
export declare class BCClient {
readonly auth: AuthClient;
readonly apiPath: string;
readonly apiURL: string;
readonly scope = "https://api.businesscentral.dynamics.com/.default";
readonly userAgent: string;
readonly timeout: number;
constructor(config: BCConfig, apiPath: string, authClient: AuthClient);
getToken(): Promise<string>;
request(endpoint: string, opts?: RequestOpts): Promise<unknown>;
requestWithSchema<TSchema extends StandardSchemaV1>(endpoint: string, schema: TSchema, opts?: RequestOpts): Promise<StandardSchemaV1.InferOutput<TSchema>>;
for<T>(endpoint: string, schema: StandardSchemaV1<unknown, T>): ApiPage<T>;
forQuery<T>(endpoint: string, schema: StandardSchemaV1<unknown, T>): ApiQuery<T>;
}
//# sourceMappingURL=client.d.ts.map