/** * Klaviyo API * The Klaviyo REST API. Please visit https://developers.klaviyo.com for more details. * * Contact: developers@klaviyo.com * * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). * https://openapi-generator.tech * Do not edit the class manually. */ const axios = require('axios'); import {AxiosRequestConfig, AxiosResponse} from "axios"; import FormData from 'form-data' /* tslint:disable:no-unused-locals */ import { DataSourceCreateQuery } from '../model/dataSourceCreateQuery'; import { DataSourceRecordBulkCreateJobCreateQuery } from '../model/dataSourceRecordBulkCreateJobCreateQuery'; import { DataSourceRecordCreateJobCreateQuery } from '../model/dataSourceRecordCreateJobCreateQuery'; import { GetAccounts4XXResponse } from '../model/getAccounts4XXResponse'; import { GetDataSourceResponse } from '../model/getDataSourceResponse'; import { GetDataSourceResponseCollection } from '../model/getDataSourceResponseCollection'; import { PostDataSourceResponse } from '../model/postDataSourceResponse'; import { ObjectSerializer } from '../model/models'; import {RequestFile, queryParamPreProcessor, RetryWithExponentialBackoff, Session} from './apis'; let defaultBasePath = 'https://a.klaviyo.com'; // =============================================== // This file is autogenerated - Please do not edit // =============================================== export class CustomObjectsApi { session: Session protected _basePath = defaultBasePath; protected _defaultHeaders : any = {}; protected _useQuerystring : boolean = false; constructor(session: Session){ this.session = session } set useQuerystring(value: boolean) { this._useQuerystring = value; } set basePath(basePath: string) { this._basePath = basePath; } set defaultHeaders(defaultHeaders: any) { this._defaultHeaders = defaultHeaders; } get defaultHeaders() { return this._defaultHeaders; } get basePath() { return this._basePath; } /** * Create a bulk data source record import job to create a batch of records. Accepts up to 500 records per request. The maximum allowed payload size is 4MB. The maximum allowed payload size per-record is 512KB. To learn more, see our [Custom Objects API overview](https://developers.klaviyo.com/en/reference/custom_objects_api_overview).

*Rate limits*:
Burst: `3/s`
Steady: `15/m` **Scopes:** `custom-objects:write` * @summary Bulk Create Data Source Records * @param dataSourceRecordBulkCreateJobCreateQuery Create a data source record job */ public async bulkCreateDataSourceRecords (dataSourceRecordBulkCreateJobCreateQuery: DataSourceRecordBulkCreateJobCreateQuery, ): Promise<{ response: AxiosResponse; body?: any; }> { const localVarPath = this.basePath + '/api/data-source-record-bulk-create-jobs'; let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } // verify required parameter 'dataSourceRecordBulkCreateJobCreateQuery' is not null or undefined if (dataSourceRecordBulkCreateJobCreateQuery === null || dataSourceRecordBulkCreateJobCreateQuery === undefined) { throw new Error('Required parameter dataSourceRecordBulkCreateJobCreateQuery was null or undefined when calling bulkCreateDataSourceRecords.'); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'POST', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, data: ObjectSerializer.serialize(dataSourceRecordBulkCreateJobCreateQuery, "DataSourceRecordBulkCreateJobCreateQuery") } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body?: any; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } /** * Create a new data source in an account

*Rate limits*:
Burst: `3/s`
Steady: `60/m` **Scopes:** `custom-objects:write` * @summary Create Data Source * @param dataSourceCreateQuery Create data source */ public async createDataSource (dataSourceCreateQuery: DataSourceCreateQuery, ): Promise<{ response: AxiosResponse; body: PostDataSourceResponse; }> { const localVarPath = this.basePath + '/api/data-sources'; let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } // verify required parameter 'dataSourceCreateQuery' is not null or undefined if (dataSourceCreateQuery === null || dataSourceCreateQuery === undefined) { throw new Error('Required parameter dataSourceCreateQuery was null or undefined when calling createDataSource.'); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'POST', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, data: ObjectSerializer.serialize(dataSourceCreateQuery, "DataSourceCreateQuery") } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body: PostDataSourceResponse; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; body = ObjectSerializer.deserialize(axiosResponse.data, "PostDataSourceResponse"); return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } /** * Create a data source record import job to create a single record. The maximum allowed payload size per-record is 512KB. To learn more, see our [Custom Objects API overview](https://developers.klaviyo.com/en/reference/custom_objects_api_overview).

*Rate limits*:
Burst: `75/s`
Steady: `750/m` **Scopes:** `custom-objects:write` * @summary Create Data Source Record * @param dataSourceRecordCreateJobCreateQuery Create a data source record job */ public async createDataSourceRecord (dataSourceRecordCreateJobCreateQuery: DataSourceRecordCreateJobCreateQuery, ): Promise<{ response: AxiosResponse; body?: any; }> { const localVarPath = this.basePath + '/api/data-source-record-create-jobs'; let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } // verify required parameter 'dataSourceRecordCreateJobCreateQuery' is not null or undefined if (dataSourceRecordCreateJobCreateQuery === null || dataSourceRecordCreateJobCreateQuery === undefined) { throw new Error('Required parameter dataSourceRecordCreateJobCreateQuery was null or undefined when calling createDataSourceRecord.'); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'POST', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, data: ObjectSerializer.serialize(dataSourceRecordCreateJobCreateQuery, "DataSourceRecordCreateJobCreateQuery") } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body?: any; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } /** * Delete a data source in an account.

*Rate limits*:
Burst: `3/s`
Steady: `60/m` **Scopes:** `custom-objects:write` * @summary Delete Data Source * @param id The ID of the data source to delete */ public async deleteDataSource (id: string, ): Promise<{ response: AxiosResponse; body?: any; }> { const localVarPath = this.basePath + '/api/data-sources/{id}' .replace('{' + 'id' + '}', encodeURIComponent(String(id))); let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } // verify required parameter 'id' is not null or undefined if (id === null || id === undefined) { throw new Error('Required parameter id was null or undefined when calling deleteDataSource.'); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'DELETE', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body?: any; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } /** * Retrieve a data source in an account.

*Rate limits*:
Burst: `3/s`
Steady: `60/m` **Scopes:** `custom-objects:read` * @summary Get Data Source * @param id The ID of the data source * @param fieldsDataSource For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets */ public async getDataSource (id: string, options: { fieldsDataSource?: Array<'description' | 'namespace' | 'title' | 'visibility'>, } = {}): Promise<{ response: AxiosResponse; body: GetDataSourceResponse; }> { const localVarPath = this.basePath + '/api/data-sources/{id}' .replace('{' + 'id' + '}', encodeURIComponent(String(id))); let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } // verify required parameter 'id' is not null or undefined if (id === null || id === undefined) { throw new Error('Required parameter id was null or undefined when calling getDataSource.'); } if (options.fieldsDataSource !== undefined) { localVarQueryParameters['fields[data-source]'] = ObjectSerializer.serialize(options.fieldsDataSource, "Array<'description' | 'namespace' | 'title' | 'visibility'>"); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'GET', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body: GetDataSourceResponse; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; body = ObjectSerializer.deserialize(axiosResponse.data, "GetDataSourceResponse"); return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } /** * Get all data sources in an account.

*Rate limits*:
Burst: `3/s`
Steady: `60/m` **Scopes:** `custom-objects:read` * @summary Get Data Sources * @param fieldsDataSource For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#sparse-fieldsets* @param pageCursor For more information please visit https://developers.klaviyo.com/en/v2026-04-15/reference/api-overview#pagination* @param pageSize Default: 20. Min: 1. Max: 100. */ public async getDataSources (options: { fieldsDataSource?: Array<'description' | 'namespace' | 'title' | 'visibility'>, pageCursor?: string, pageSize?: number, } = {}): Promise<{ response: AxiosResponse; body: GetDataSourceResponseCollection; }> { const localVarPath = this.basePath + '/api/data-sources'; let localVarQueryParameters: any = {}; let localVarHeaderParams: any = (Object).assign({}, this._defaultHeaders); const produces = ['application/vnd.api+json']; // give precedence to 'application/json' if (produces.indexOf('application/json') >= 0) { localVarHeaderParams.Accept = 'application/json'; } else { localVarHeaderParams.Accept = produces.join(','); } if (options.fieldsDataSource !== undefined) { localVarQueryParameters['fields[data-source]'] = ObjectSerializer.serialize(options.fieldsDataSource, "Array<'description' | 'namespace' | 'title' | 'visibility'>"); } if (options.pageCursor !== undefined) { localVarQueryParameters['page[cursor]'] = ObjectSerializer.serialize(options.pageCursor, "string"); } if (options.pageSize !== undefined) { localVarQueryParameters['page[size]'] = ObjectSerializer.serialize(options.pageSize, "number"); } queryParamPreProcessor(localVarQueryParameters) let config: AxiosRequestConfig = { method: 'GET', url: localVarPath, headers: localVarHeaderParams, params: localVarQueryParameters, } await this.session.applyToRequest(config) const request = async (config: AxiosRequestConfig, retried = false): Promise<{ response: AxiosResponse; body: GetDataSourceResponseCollection; }> => { try { const axiosResponse = await this.session.requestWithRetry(config) let body; body = ObjectSerializer.deserialize(axiosResponse.data, "GetDataSourceResponseCollection"); return ({response: axiosResponse, body: body}); } catch (error) { if (await this.session.refreshAndRetry(error, retried)) { await this.session.applyToRequest(config) return request(config, true) } throw error } } return request(config) } } export interface CustomObjectsApi { /** * Alias of {@link CustomObjectsApi.bulkCreateDataSourceRecords} * * @deprecated Use {@link CustomObjectsApi.bulkCreateDataSourceRecords} instead */ createDataSourceRecordBulkCreateJob: typeof CustomObjectsApi.prototype.bulkCreateDataSourceRecords; } CustomObjectsApi.prototype.createDataSourceRecordBulkCreateJob = CustomObjectsApi.prototype.bulkCreateDataSourceRecords export interface CustomObjectsApi { /** * Alias of {@link CustomObjectsApi.createDataSourceRecord} * * @deprecated Use {@link CustomObjectsApi.createDataSourceRecord} instead */ createDataSourceRecordCreateJob: typeof CustomObjectsApi.prototype.createDataSourceRecord; } CustomObjectsApi.prototype.createDataSourceRecordCreateJob = CustomObjectsApi.prototype.createDataSourceRecord