Data Management API
- Base URL:
https://data-management.sls.epilot.io - Full API Docs: https://docs.epilot.io/api/data-management
Usageโ
import { epilot } from '@epilot/sdk'
epilot.authorize(() => '<token>')
const { data } = await epilot.dataManagement.queryEntities(...)
Tree-shakeable importโ
import { getClient, authorize } from '@epilot/sdk/data-management'
const dataManagementClient = getClient()
authorize(dataManagementClient, () => '<token>')
const { data } = await dataManagementClient.queryEntities(...)
Operationsโ
Data Management
queryEntitiescreateJobupdateJobgetJobgetJobReportUrlgetConfigcreateJobForConfigupsertConfiglistConfigslistJobs
Schemas
ConfigTypeJobStatusJobTriggerJobReportFormatJobReportCreateJobRequestJobDetailsUpdateJobRequestJobListJobsResponseJobReportUrlResponseQueryFilterTypeQueryFilterQueryConfigQueryEntitiesRequestQueryEntitiesResultConfigScheduleIntervalConfigScheduleUpsertConfigRequestConfigDeletionRelationEntitySchemaListConfigsResponse
queryEntitiesโ
Query entities using a saved view with additional data filters
POST /data-management/v1/{entity_schema}/query
const { data } = await client.queryEntities(
{
entity_schema: 'example',
},
{
saved_view_id: 'string',
include_deleted: 'true',
filters: [
{
type: 'entity_workflows_only_in_closed_or_cancelled_status',
related_entity_schemas: ['string'],
lookback_period_days: 0
}
],
from: 0,
size: 0,
hydrate: true,
fields: ['string']
},
)
Response
{
"hits": 0,
"results": [
{}
]
}
createJobโ
Create a new job run
POST /data-management/v1/{entity_schema}/jobs
const { data } = await client.createJob(
{
entity_schema: 'example',
},
{
type: 'deletion',
config_id: 'string',
scheduled_for: 'string',
status: 'in_progress',
started_at: '1970-01-01T00:00:00.000Z'
},
)
Response
{
"id": "string",
"type": "deletion",
"config_id": "string",
"entity_schema": "string",
"scheduled_for": "string",
"status": "in_progress",
"details": {},
"started_at": "1970-01-01T00:00:00.000Z",
"completed_at": "1970-01-01T00:00:00.000Z",
"error": "string",
"report": {
"bucket": "string",
"key": "string",
"format": "csv"
},
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"trigger": "schedule",
"triggered_by": "string"
}
updateJobโ
Update an existing job run
PATCH /data-management/v1/{entity_schema}/jobs/{job_id}
const { data } = await client.updateJob(
{
entity_schema: 'example',
job_id: 'example',
},
{
status: 'in_progress',
details: {},
completed_at: '1970-01-01T00:00:00.000Z',
error: 'string',
report: {
bucket: 'string',
key: 'string',
format: 'csv'
}
},
)
Response
{
"id": "string",
"type": "deletion",
"config_id": "string",
"entity_schema": "string",
"scheduled_for": "string",
"status": "in_progress",
"details": {},
"started_at": "1970-01-01T00:00:00.000Z",
"completed_at": "1970-01-01T00:00:00.000Z",
"error": "string",
"report": {
"bucket": "string",
"key": "string",
"format": "csv"
},
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"trigger": "schedule",
"triggered_by": "string"
}
getJobโ
Get a job by id
GET /data-management/v1/jobs/{job_id}
const { data } = await client.getJob({
job_id: 'example',
})
Response
{
"id": "string",
"type": "deletion",
"config_id": "string",
"entity_schema": "string",
"scheduled_for": "string",
"status": "in_progress",
"details": {},
"started_at": "1970-01-01T00:00:00.000Z",
"completed_at": "1970-01-01T00:00:00.000Z",
"error": "string",
"report": {
"bucket": "string",
"key": "string",
"format": "csv"
},
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"trigger": "schedule",
"triggered_by": "string"
}
getJobReportUrlโ
Get report download URL for a job
GET /data-management/v1/jobs/{job_id}/report-url
const { data } = await client.getJobReportUrl({
job_id: 'example',
})
Response
{
"url": "string",
"expires_in": 0
}
getConfigโ
Get a config by id
GET /data-management/v1/configs/{config_id}
const { data } = await client.getConfig({
config_id: 'example',
})
Response
{
"id": "string",
"type": "deletion",
"entity_schema": "string",
"query": {
"saved_view_id": "string",
"include_deleted": "true",
"filters": [
{
"type": "entity_workflows_only_in_closed_or_cancelled_status",
"related_entity_schemas": ["string"],
"lookback_period_days": 0
}
]
},
"schedule": {
"frequency": "interval",
"interval_days": 1,
"start_date": "string",
"end_date": "string"
},
"enabled": true,
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"next_run_at": "string",
"relations_for_deletion": ["contact"],
"last_run_at": "1970-01-01T00:00:00.000Z"
}
createJobForConfigโ
Trigger a manual job run for a config
POST /data-management/v1/configs/{config_id}/jobs
const { data } = await client.createJobForConfig({
config_id: 'example',
})
Response
{
"id": "string",
"type": "deletion",
"config_id": "string",
"entity_schema": "string",
"scheduled_for": "string",
"status": "in_progress",
"details": {},
"started_at": "1970-01-01T00:00:00.000Z",
"completed_at": "1970-01-01T00:00:00.000Z",
"error": "string",
"report": {
"bucket": "string",
"key": "string",
"format": "csv"
},
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"trigger": "schedule",
"triggered_by": "string"
}
upsertConfigโ
Upsert config
POST /data-management/v1/{entity_schema}/configs
const { data } = await client.upsertConfig(
{
entity_schema: 'example',
},
{
type: 'deletion',
query: {
saved_view_id: 'string',
include_deleted: 'true',
filters: [
{
type: 'entity_workflows_only_in_closed_or_cancelled_status',
related_entity_schemas: ['string'],
lookback_period_days: 0
}
]
},
schedule: {
frequency: 'interval',
interval_days: 1,
start_date: 'string',
end_date: 'string'
},
relations_for_deletion: ['contact'],
enabled: true
},
)
Response
{
"id": "string",
"type": "deletion",
"entity_schema": "string",
"query": {
"saved_view_id": "string",
"include_deleted": "true",
"filters": [
{
"type": "entity_workflows_only_in_closed_or_cancelled_status",
"related_entity_schemas": ["string"],
"lookback_period_days": 0
}
]
},
"schedule": {
"frequency": "interval",
"interval_days": 1,
"start_date": "string",
"end_date": "string"
},
"enabled": true,
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"next_run_at": "string",
"relations_for_deletion": ["contact"],
"last_run_at": "1970-01-01T00:00:00.000Z"
}
listConfigsโ
List configs
GET /data-management/v1/configs
const { data } = await client.listConfigs({
limit: 1,
cursor: 'example',
entity_schema: 'example',
type: 'example',
next_run_at: 'example',
enabled: true,
})
Response
{
"configs": [
{
"id": "string",
"type": "deletion",
"entity_schema": "string",
"query": {
"saved_view_id": "string",
"include_deleted": "true",
"filters": [
{
"type": "entity_workflows_only_in_closed_or_cancelled_status",
"related_entity_schemas": ["string"],
"lookback_period_days": 0
}
]
},
"schedule": {
"frequency": "interval",
"interval_days": 1,
"start_date": "string",
"end_date": "string"
},
"enabled": true,
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"next_run_at": "string",
"relations_for_deletion": ["contact"],
"last_run_at": "1970-01-01T00:00:00.000Z"
}
],
"cursor": "string"
}
listJobsโ
List jobs
GET /data-management/v1/jobs
const { data } = await client.listJobs({
limit: 1,
cursor: 'example',
entity_schema: 'example',
type: 'example',
status: 'example',
config_id: 'example',
})
Response
{
"jobs": [
{
"id": "string",
"type": "deletion",
"config_id": "string",
"entity_schema": "string",
"scheduled_for": "string",
"status": "in_progress",
"details": {},
"started_at": "1970-01-01T00:00:00.000Z",
"completed_at": "1970-01-01T00:00:00.000Z",
"error": "string",
"report": {
"bucket": "string",
"key": "string",
"format": "csv"
},
"created_at": "1970-01-01T00:00:00.000Z",
"last_updated_at": "1970-01-01T00:00:00.000Z",
"trigger": "schedule",
"triggered_by": "string"
}
],
"cursor": "string"
}
Schemasโ
ConfigTypeโ
Type of configuration (e.g. deletion)
type ConfigType = "deletion"
JobStatusโ
type JobStatus = "in_progress" | "success" | "failed"
JobTriggerโ
type JobTrigger = "schedule" | "manual"
JobReportFormatโ
type JobReportFormat = "csv"
JobReportโ
type JobReport = {
bucket?: string
key?: string
format?: "csv"
}
CreateJobRequestโ
type CreateJobRequest = {
type: "deletion"
config_id: string
scheduled_for: string // date
status?: "in_progress" | "success" | "failed"
started_at?: string // date-time
}
JobDetailsโ
Generic, type-specific job details payload (e.g. matched count, deleted count, failed count, etc.).
type JobDetails = Record<string, unknown>
UpdateJobRequestโ
type UpdateJobRequest = {
status?: "in_progress" | "success" | "failed"
details?: Record<string, unknown>
completed_at?: string // date-time
error?: string
report?: {
bucket?: string
key?: string
format?: "csv"
}
}
Jobโ
type Job = {
id: string
type: "deletion"
config_id: string
entity_schema: string
scheduled_for: string // date
status: "in_progress" | "success" | "failed"
details?: Record<string, unknown>
started_at?: string // date-time
completed_at?: string // date-time
error?: string
report?: {
bucket?: string
key?: string
format?: "csv"
}
created_at: string // date-time
last_updated_at: string // date-time
trigger?: "schedule" | "manual"
triggered_by?: string
}
ListJobsResponseโ
type ListJobsResponse = {
jobs?: Array<{
id: string
type: "deletion"
config_id: string
entity_schema: string
scheduled_for: string // date
status: "in_progress" | "success" | "failed"
details?: Record<string, unknown>
started_at?: string // date-time
completed_at?: string // date-time
error?: string
report?: {
bucket?: { ... }
key?: { ... }
format?: { ... }
}
created_at: string // date-time
last_updated_at: string // date-time
trigger?: "schedule" | "manual"
triggered_by?: string
}>
cursor?: string
}
JobReportUrlResponseโ
type JobReportUrlResponse = {
url?: string
expires_in?: number
}
QueryFilterTypeโ
type QueryFilterType = "entity_workflows_only_in_closed_or_cancelled_status" | "no_related_entities" | "related_entities_all_in_closed_or_cancelled_status" | "related_entities_workflows_only_in_closed_or_cancelled_status" | "no_email_communication_since"
QueryFilterโ
type QueryFilter = {
type: "entity_workflows_only_in_closed_or_cancelled_status" | "no_related_entities" | "related_entities_all_in_closed_or_cancelled_status" | "related_entities_workflows_only_in_closed_or_cancelled_status" | "no_email_communication_since"
related_entity_schemas?: string[]
lookback_period_days?: number
}
QueryConfigโ
type QueryConfig = {
saved_view_id: string
include_deleted?: "true" | "false" | "only"
filters?: Array<{
type: "entity_workflows_only_in_closed_or_cancelled_status" | "no_related_entities" | "related_entities_all_in_closed_or_cancelled_status" | "related_entities_workflows_only_in_closed_or_cancelled_status" | "no_email_communication_since"
related_entity_schemas?: string[]
lookback_period_days?: number
}>
}
QueryEntitiesRequestโ
type QueryEntitiesRequest = {
saved_view_id: string
include_deleted?: "true" | "false" | "only"
filters?: Array<{
type: "entity_workflows_only_in_closed_or_cancelled_status" | "no_related_entities" | "related_entities_all_in_closed_or_cancelled_status" | "related_entities_workflows_only_in_closed_or_cancelled_status" | "no_email_communication_since"
related_entity_schemas?: string[]
lookback_period_days?: number
}>
from?: number
size?: number
hydrate?: boolean
fields?: string[]
}
QueryEntitiesResultโ
type QueryEntitiesResult = {
hits?: number
results?: Record<string, unknown>[]
}
ConfigScheduleโ
type ConfigSchedule = {
frequency: "interval"
interval_days: number
start_date?: string // date
end_date?: string // date
}
IntervalConfigScheduleโ
type IntervalConfigSchedule = {
frequency: "interval"
interval_days: number
start_date?: string // date
end_date?: string // date
}
UpsertConfigRequestโ
type UpsertConfigRequest = {
type: "deletion"
query: {
saved_view_id: string
include_deleted?: "true" | "false" | "only"
filters?: Array<{
type: { ... }
related_entity_schemas?: { ... }
lookback_period_days?: { ... }
}>
}
schedule: {
frequency: "interval"
interval_days: number
start_date?: string // date
end_date?: string // date
}
relations_for_deletion?: "contact" | "file" | "opportunity" | "order" | "meter" | "ticket" | "message" | "account" | "submission" | "contract"[]
enabled?: boolean
}
Configโ
type Config = {
id: string
type: "deletion"
entity_schema: string
query: {
saved_view_id: string
include_deleted?: "true" | "false" | "only"
filters?: Array<{
type: { ... }
related_entity_schemas?: { ... }
lookback_period_days?: { ... }
}>
}
schedule?: {
frequency: "interval"
interval_days: number
start_date?: string // date
end_date?: string // date
}
enabled?: boolean
created_at?: string // date-time
last_updated_at?: string // date-time
next_run_at?: string // date
relations_for_deletion?: "contact" | "file" | "opportunity" | "order" | "meter" | "ticket" | "message" | "account" | "submission" | "contract"[]
last_run_at?: string // date-time
}
DeletionRelationEntitySchemaโ
type DeletionRelationEntitySchema = "contact" | "file" | "opportunity" | "order" | "meter" | "ticket" | "message" | "account" | "submission" | "contract"
ListConfigsResponseโ
type ListConfigsResponse = {
configs?: Array<{
id: string
type: "deletion"
entity_schema: string
query: {
saved_view_id: { ... }
include_deleted?: { ... }
filters?: { ... }
}
schedule?: {
frequency: { ... }
interval_days: { ... }
start_date?: { ... }
end_date?: { ... }
}
enabled?: boolean
created_at?: string // date-time
last_updated_at?: string // date-time
next_run_at?: string // date
relations_for_deletion?: "contact" | "file" | "opportunity" | "order" | "meter" | "ticket" | "message" | "account" | "submission" | "contract"[]
last_run_at?: string // date-time
}>
cursor?: string
}