export type V1FilterOperator = Record; export type NumberRangeJson = {from: number, to: number}; export type V1PortfolioQueryFilter = {attribute?: V1PortfolioQueryAttribute | undefined, grouping_attribute?: V1PortfolioQueryAttribute | undefined, holding_status?: V1PortfolioQueryAttribute | undefined, in_range?: boolean | undefined, math_operator?: ('equal to' | 'not equal to' | 'greater than' | 'greater than or equal to' | 'less than' | 'less than or equal to') | undefined, math_value?: number | undefined, operator?: V1FilterOperator | undefined, ranges?: Array | undefined, rank_order?: ('TOP' | 'BOTTOM') | undefined, rank_value?: number | undefined, sub_filters?: Array | undefined, template?: string | undefined, type?: ('discrete' | 'word' | 'number' | 'compound' | 'date' | 'string') | undefined, unassigned_account_fees?: boolean | undefined, values?: Array | undefined}; export type V1PortfolioQueryAttribute = {arguments?: {[key: string]: Record} | undefined, column_filters?: Array | undefined, key?: string | undefined}; export type ExternalIdJson = {external_id?: string | undefined, external_type_key?: string | undefined}; export type ConstituentDisplayJson = {threshold?: number | undefined, type?: ('ALL' | 'DUPLICATE_LOOKTHROUGH' | 'NONE' | 'TOP' | 'WEIGHTED') | undefined}; export type V1QueryPortfolioId = {portfolio_id?: Array | undefined}; export type V1PortfolioQueryJson = {as_of_knowledge_date?: string | undefined, columns?: Array | undefined, disable_total_row?: boolean | undefined, display_account_fees?: boolean | undefined, enable_precompute_calculation?: boolean | undefined, end_date?: string | undefined, expand_wrapper_entities?: boolean | undefined, external_ids?: Array | undefined, externalids?: Array | undefined, filters?: Array | undefined, group_by_historical_values?: boolean | undefined, group_by_multiple_attribute_values?: boolean | undefined, groupings?: Array | undefined, hide_previous_holdings?: boolean | undefined, include_in_validation_datasets?: boolean | undefined, load_executed_trades?: boolean | undefined, look_through_composite_securities?: boolean | undefined, look_through_constituent_holdings?: ConstituentDisplayJson | undefined, portfolio_id?: V1QueryPortfolioId | undefined, portfolio_type?: ('ENTITY' | 'ENTITY_FUNDS' | 'FIRM' | 'FIRM_ACCOUNTS' | 'FIRM_CLIENTS' | 'FIRM_FUNDS' | 'FIRM_HOUSEHOLDS' | 'FIRM_TRADING_GROUPS' | 'FIRM_UNVERIFIED_ACCOUNTS' | 'GROUP' | 'GROUP_FUNDS') | undefined, short_held_asset_display_preference?: ('SHOW' | 'HIDE' | 'WARN' | 'INHERIT') | undefined, show_multi_value_remainder?: boolean | undefined, show_sleeves?: boolean | undefined, sleeve_setting?: ('LINK_SLEEVES' | 'SHOW_SLEEVES' | 'HIDE_SLEEVES' | 'UNMODIFIED') | undefined, start_date?: string | undefined, target_allocation_mode?: ('Lowest ownership' | 'Selected entity' | 'Respect groupings') | undefined, tax_lot_use_settlement_date?: boolean | undefined}; export type CreateApiPortfolioQueryArgs = {'Addepar-Firm': string, 'Addepar-Compute-Type'?: ('DEFAULT' | 'BATCH') | undefined, body: V1PortfolioQueryJson}; export type CreateApiPortfolioQueryOptions = {baseUrl?: string | undefined, BearerAuth?: string | undefined, fetch?: typeof fetch | undefined}; /** * Query Portfolio Data * * POST /portfolio/query */ export const createApiPortfolioQuery = async (args: CreateApiPortfolioQueryArgs, options?: CreateApiPortfolioQueryOptions) => { const {baseUrl = "https://examplefirm.addepar.com/api/v1", fetch: fetchFn = fetch, BearerAuth} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/vnd.api+json") headers.set('accept', "application/vnd.api+json") if (args['Addepar-Firm'] != null) headers.set("Addepar-Firm", String(args['Addepar-Firm'])) if (args['Addepar-Compute-Type'] != null) headers.set("Addepar-Compute-Type", String(args['Addepar-Compute-Type'])) if (BearerAuth !== undefined) headers.set('authorization', `Bearer ${BearerAuth}`) const url = `${baseUrl.replace(/\/+$/, '')}/portfolio/query${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return (await res.json()) as unknown };