/**
* 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