API reference / Operations by tag
imports
Migration imports from TUNE, Everflow, Trackier, Affise and CAKE, plus forwarding rules.
56 operations. Base URL https://api.metrixed.com/v1; see authentication, errors and pagination.
Operations
| Method | Path | Summary |
|---|---|---|
| GET | /import-schedules | Scheduled offer imports |
| POST | /import-schedules | Create a scheduled offer import |
| GET | /import-schedules/{id} | Get a scheduled offer import |
| PATCH | /import-schedules/{id} | Update a scheduled offer import (the next run is recomputed) |
| DELETE | /import-schedules/{id} | Delete a scheduled offer import |
| POST | /import-schedules/{id}/run | Queue a run now (409 run_in_progress while the previous run is queued or running) |
| GET | /import-schedules/{id}/runs | Runs of a schedule (import jobs with progress) |
| POST | /import-schedules/preview | Preview: the first page of the source's offers the filters keep (nothing is written) |
| GET | /imports | Imports |
| POST | /imports | Start import |
| GET | /imports/canonical-fields | Generic CSV vocabulary and required fields per entity |
| GET | /imports/checklist | Cutover checklist with per-step status |
| PUT | /imports/checklist/{step} | Set a manual checklist step status |
| GET | /imports/forward-log | Dual-postback forwarding log and 24h counters |
| GET | /imports/forward-rules | List PostbackForwardRules |
| POST | /imports/forward-rules | Create PostbackForwardRule |
| GET | /imports/forward-rules/{id} | Get PostbackForwardRule |
| PATCH | /imports/forward-rules/{id} | Update PostbackForwardRule |
| DELETE | /imports/forward-rules/{id} | Delete PostbackForwardRule |
| POST | /imports/forward-rules/bulk/apply | Bulk edit apply |
| POST | /imports/forward-rules/bulk/preview | Bulk edit preview |
| POST | /imports/forward-rules/search | Search PostbackForwardRules (advanced) |
| GET | /imports/id-maps | Browse legacy id <-> our id maps |
| GET | /imports/jobs | List import jobs |
| POST | /imports/jobs | Create an import job (API source or CSV files with mapping) |
| GET | /imports/jobs/{id} | Job status, checkpoint and per-kind progress |
| POST | /imports/jobs/{id}/cancel | Cancel (takes effect between chunks) |
| POST | /imports/jobs/{id}/dry-run | Queue a dry run (create/update/skip/conflict diff, nothing written) |
| GET | /imports/jobs/{id}/errors.csv | CSV of errors and conflicts |
| GET | /imports/jobs/{id}/items | Diff / result rows (filter phase, action, kind, q) |
| POST | /imports/jobs/{id}/run | Queue the import; failed or cancelled jobs resume from their checkpoint |
| GET | /imports/legacy-domains | List LegacyDomains |
| POST | /imports/legacy-domains | Create LegacyDomain |
| GET | /imports/legacy-domains/{id} | Get LegacyDomain |
| PATCH | /imports/legacy-domains/{id} | Update LegacyDomain |
| DELETE | /imports/legacy-domains/{id} | Delete LegacyDomain |
| POST | /imports/legacy-domains/bulk/apply | Bulk edit apply |
| POST | /imports/legacy-domains/bulk/preview | Bulk edit preview |
| POST | /imports/legacy-domains/search | Search LegacyDomains (advanced) |
| GET | /imports/legacy/tables/{platform} | Per-platform param and macro translation tables |
| POST | /imports/legacy/translate | Translate a legacy template / query string |
| GET | /imports/mappings | List ImportMappings |
| POST | /imports/mappings | Create ImportMapping |
| GET | /imports/mappings/{id} | Get ImportMapping |
| PATCH | /imports/mappings/{id} | Update ImportMapping |
| DELETE | /imports/mappings/{id} | Delete ImportMapping |
| POST | /imports/mappings/bulk/apply | Bulk edit apply |
| POST | /imports/mappings/bulk/preview | Bulk edit preview |
| POST | /imports/mappings/preview | Preview a CSV column mapping: effective mapping, problems, first records |
| POST | /imports/mappings/search | Search ImportMappings (advanced) |
| GET | /imports/sources | List import sources (credentials masked) |
| POST | /imports/sources | Create an import source (credentials sealed at rest) |
| GET | /imports/sources/{id} | Get an import source |
| PATCH | /imports/sources/{id} | Update an import source (blank or masked secrets are kept) |
| DELETE | /imports/sources/{id} | Delete an import source |
| POST | /imports/sources/{id}/test | Test the connection by reading one record through the platform adapter |
GET /import-schedules
Scheduled offer imports
Operation getImportSchedules. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportScheduleList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/import-schedules' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"total": 0,
"frequencies": [
""
]
}
POST /import-schedules
Create a scheduled offer import
Operation postImportSchedules. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportScheduleInput
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
source_id | string | ||
advertiser_id | string | ||
frequency | enum: hourly, every_6_hours, daily, weekly | ||
run_hour | integer | ||
filters | object (free-form) | statuses[], name_contains, external_ids[], visibility[], currencies[], max_offers | |
enabled | boolean |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json ImportSchedule |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/import-schedules' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","source_id":"","advertiser_id":"","frequency":"hourly"}'
Example 201 response:
{
"id": "",
"name": "",
"source_id": "",
"source_name": ""
}
GET /import-schedules/{id}
Get a scheduled offer import
Operation getImportSchedulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportSchedule |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/import-schedules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"id": "",
"name": "",
"source_id": "",
"source_name": ""
}
PATCH /import-schedules/{id}
Update a scheduled offer import (the next run is recomputed)
Operation patchImportSchedulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): ImportScheduleInput
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
source_id | string | ||
advertiser_id | string | ||
frequency | enum: hourly, every_6_hours, daily, weekly | ||
run_hour | integer | ||
filters | object (free-form) | statuses[], name_contains, external_ids[], visibility[], currencies[], max_offers | |
enabled | boolean |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportSchedule |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/import-schedules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","source_id":"","advertiser_id":"","frequency":"hourly"}'
Example 200 response:
{
"id": "",
"name": "",
"source_id": "",
"source_name": ""
}
DELETE /import-schedules/{id}
Delete a scheduled offer import
Operation deleteImportSchedulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/import-schedules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /import-schedules/{id}/run
Queue a run now (409 run_in_progress while the previous run is queued or running)
Operation postImportSchedulesIdRun. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 202 | ok | application/json ImportScheduleQueued |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/import-schedules/<id>/run' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 202 response:
{
"job_id": "",
"status": ""
}
GET /import-schedules/{id}/runs
Runs of a schedule (import jobs with progress)
Operation getImportSchedulesIdRuns. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportScheduleRuns |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/import-schedules/<id>/runs' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"total": 0
}
POST /import-schedules/preview
Preview: the first page of the source's offers the filters keep (nothing is written)
Operation postImportSchedulesPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportSchedulePreviewRequest
| Field | Type | Flags | Description |
|---|---|---|---|
source_id | string | required | |
filters | object (free-form) |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportSchedulePreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/import-schedules/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"source_id":""}'
Example 200 response:
{
"data": [
{}
],
"more": false
}
GET /imports
Imports
Operation getImports. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /imports
Start import
Operation postImports. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportJob
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
source_id | string | ||
platform | string | ||
mode | enum: api, csv | ||
status | enum: draft, dry_running, dry_run_done, queued, running, completed, failed, cancelled | ||
options | object (free-form) | kinds[], chunk_size, adopt, file_kinds[] | |
files | object (free-form) | csv mode, create only: kind -> csv text | |
mappings | object (free-form) | csv mode, create only: kind -> {columns,defaults} | |
checkpoint | object (free-form) | ||
progress | object (free-form) | kind -> {fetched,created,updated,skipped,conflict,error} | |
summary | object (free-form) | ||
progress_pct | integer | ||
error | string | ||
cancel_requested | boolean |
curl -X POST 'https://api.metrixed.com/v1/imports' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"external_ref":""}'
Example 202 response:
{
"external_ref": ""
}
GET /imports/canonical-fields
Generic CSV vocabulary and required fields per entity
Operation getImportsCanonicalFields. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/imports/canonical-fields' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/checklist
Cutover checklist with per-step status
Operation getImportsChecklist. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/imports/checklist' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
PUT /imports/checklist/{step}
Set a manual checklist step status
Operation putImportsChecklistStep. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
step | path | string | yes |
curl -X PUT 'https://api.metrixed.com/v1/imports/checklist/<step>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/forward-log
Dual-postback forwarding log and 24h counters Dual-postback forwarding log and 24h counters. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getImportsForwardLog. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
curl 'https://api.metrixed.com/v1/imports/forward-log?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/forward-rules
List PostbackForwardRules
Operation getImportsForwardRules. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PostbackForwardRuleList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/forward-rules?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /imports/forward-rules
Create PostbackForwardRule
Operation postImportsForwardRules. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): PostbackForwardRuleCreate
| Field | Type | Flags | Description |
|---|---|---|---|
advertiser_id | string | ||
offer_id | string | ||
platform | string | ||
url_template | string | required | |
method | enum: GET, POST | ||
append_raw_query | boolean | ||
enabled | boolean | ||
max_attempts | integer | ||
timeout_ms | integer | ||
notes | string |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json PostbackForwardRule |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/forward-rules' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"url_template":""}'
Example 201 response:
{
"external_ref": ""
}
GET /imports/forward-rules/{id}
Get PostbackForwardRule
Operation getImportsForwardRulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PostbackForwardRule |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/forward-rules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /imports/forward-rules/{id}
Update PostbackForwardRule
Operation patchImportsForwardRulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): PostbackForwardRuleUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
advertiser_id | string | ||
offer_id | string | ||
platform | string | ||
url_template | string | ||
method | enum: GET, POST | ||
append_raw_query | boolean | ||
enabled | boolean | ||
max_attempts | integer | ||
timeout_ms | integer | ||
notes | string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PostbackForwardRule |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/imports/forward-rules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"advertiser_id":"","offer_id":"","platform":"","url_template":""}'
Example 200 response:
{
"external_ref": ""
}
DELETE /imports/forward-rules/{id}
Delete PostbackForwardRule
Operation deleteImportsForwardRulesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/imports/forward-rules/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /imports/forward-rules/bulk/apply
Bulk edit apply
Operation postImportsForwardRulesBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/forward-rules/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/forward-rules/bulk/preview
Bulk edit preview
Operation postImportsForwardRulesBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/forward-rules/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/forward-rules/search
Search PostbackForwardRules (advanced)
Operation postImportsForwardRulesSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json PostbackForwardRuleList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/forward-rules/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /imports/id-maps
Browse legacy id <-> our id maps
Operation getImportsIdMaps. Auth: API key (Bearer) or session cookie.
curl 'https://api.metrixed.com/v1/imports/id-maps' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/jobs
List import jobs List import jobs. WP-71: paged with page/page_size (page.total over the whole match); unpaged returns the previous bound with total and capped/cap.
Operation getImportsJobs. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
q | query | string | no | |
page | query | string | no | |
page_size | query | string | no |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/jobs?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /imports/jobs
Create an import job (API source or CSV files with mapping)
Operation postImportsJobs. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportJob
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
source_id | string | ||
platform | string | ||
mode | enum: api, csv | ||
status | enum: draft, dry_running, dry_run_done, queued, running, completed, failed, cancelled | ||
options | object (free-form) | kinds[], chunk_size, adopt, file_kinds[] | |
files | object (free-form) | csv mode, create only: kind -> csv text | |
mappings | object (free-form) | csv mode, create only: kind -> {columns,defaults} | |
checkpoint | object (free-form) | ||
progress | object (free-form) | kind -> {fetched,created,updated,skipped,conflict,error} | |
summary | object (free-form) | ||
progress_pct | integer | ||
error | string | ||
cancel_requested | boolean |
curl -X POST 'https://api.metrixed.com/v1/imports/jobs' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"external_ref":""}'
Example 201 response:
{
"external_ref": ""
}
GET /imports/jobs/{id}
Job status, checkpoint and per-kind progress
Operation getImportsJobsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/imports/jobs/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
POST /imports/jobs/{id}/cancel
Cancel (takes effect between chunks)
Operation postImportsJobsIdCancel. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/imports/jobs/<id>/cancel' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 202 response:
{
"external_ref": ""
}
POST /imports/jobs/{id}/dry-run
Queue a dry run (create/update/skip/conflict diff, nothing written)
Operation postImportsJobsIdDryRun. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/imports/jobs/<id>/dry-run' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 202 response:
{
"external_ref": ""
}
GET /imports/jobs/{id}/errors.csv
CSV of errors and conflicts
Operation getImportsJobsIdErrors.csv. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/imports/jobs/<id>/errors.csv' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/jobs/{id}/items
Diff / result rows (filter phase, action, kind, q)
Operation getImportsJobsIdItems. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl 'https://api.metrixed.com/v1/imports/jobs/<id>/items' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /imports/jobs/{id}/run
Queue the import; failed or cancelled jobs resume from their checkpoint
Operation postImportsJobsIdRun. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/imports/jobs/<id>/run' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 202 response:
{
"external_ref": ""
}
GET /imports/legacy-domains
List LegacyDomains
Operation getImportsLegacyDomains. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LegacyDomainList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/legacy-domains?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /imports/legacy-domains
Create LegacyDomain
Operation postImportsLegacyDomains. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): LegacyDomainCreate
| Field | Type | Flags | Description |
|---|---|---|---|
host | string | required | |
platform | enum: tune, everflow, trackier, affise, cake | required | |
id_map_strategy | enum: id_map, native | ||
param_map | object (free-form) | tenant overrides: legacy param -> canonical param | |
status | enum: active, disabled | ||
notes | string |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json LegacyDomain |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/legacy-domains' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"host":"","platform":"tune"}'
Example 201 response:
{
"external_ref": ""
}
GET /imports/legacy-domains/{id}
Get LegacyDomain
Operation getImportsLegacyDomainsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LegacyDomain |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/legacy-domains/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /imports/legacy-domains/{id}
Update LegacyDomain
Operation patchImportsLegacyDomainsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): LegacyDomainUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
host | string | ||
platform | enum: tune, everflow, trackier, affise, cake | ||
id_map_strategy | enum: id_map, native | ||
param_map | object (free-form) | tenant overrides: legacy param -> canonical param | |
status | enum: active, disabled | ||
notes | string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LegacyDomain |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/imports/legacy-domains/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"host":"","platform":"tune","id_map_strategy":"id_map","param_map":{}}'
Example 200 response:
{
"external_ref": ""
}
DELETE /imports/legacy-domains/{id}
Delete LegacyDomain
Operation deleteImportsLegacyDomainsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/imports/legacy-domains/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /imports/legacy-domains/bulk/apply
Bulk edit apply
Operation postImportsLegacyDomainsBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/legacy-domains/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/legacy-domains/bulk/preview
Bulk edit preview
Operation postImportsLegacyDomainsBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/legacy-domains/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/legacy-domains/search
Search LegacyDomains (advanced)
Operation postImportsLegacyDomainsSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LegacyDomainList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/legacy-domains/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /imports/legacy/tables/{platform}
Per-platform param and macro translation tables
Operation getImportsLegacyTablesPlatform. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
platform | path | string | yes |
curl 'https://api.metrixed.com/v1/imports/legacy/tables/<platform>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /imports/legacy/translate
Translate a legacy template / query string
Operation postImportsLegacyTranslate. Auth: API key (Bearer) or session cookie.
curl -X POST 'https://api.metrixed.com/v1/imports/legacy/translate' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
GET /imports/mappings
List ImportMappings
Operation getImportsMappings. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
page | query | integer | no | |
page_size | query | integer | no | |
sort | query | string | no | field or -field |
include | query | string | no | comma-separated relationships |
filter | query | object (free-form) | no | |
q | query | string | no | free-text search |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportMappingList |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/mappings?page=1&page_size=50' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
POST /imports/mappings
Create ImportMapping
Operation postImportsMappings. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportMappingCreate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | required | |
platform | enum: generic, tune, everflow, trackier, affise, cake | ||
entity | enum: advertisers, partners, offers, partner_offers, domains | required | |
mapping | object (free-form) | required | columns{csv header: canonical field}, defaults{field: constant} |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json ImportMapping |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/mappings' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","entity":"advertisers","mapping":{}}'
Example 201 response:
{
"external_ref": ""
}
GET /imports/mappings/{id}
Get ImportMapping
Operation getImportsMappingsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportMapping |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/mappings/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"external_ref": ""
}
PATCH /imports/mappings/{id}
Update ImportMapping
Operation patchImportsMappingsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): ImportMappingUpdate
| Field | Type | Flags | Description |
|---|---|---|---|
name | string | ||
platform | enum: generic, tune, everflow, trackier, affise, cake | ||
entity | enum: advertisers, partners, offers, partner_offers, domains | ||
mapping | object (free-form) | columns{csv header: canonical field}, defaults{field: constant} |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportMapping |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/imports/mappings/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"","platform":"generic","entity":"advertisers","mapping":{}}'
Example 200 response:
{
"external_ref": ""
}
DELETE /imports/mappings/{id}
Delete ImportMapping
Operation deleteImportsMappingsId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/imports/mappings/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /imports/mappings/bulk/apply
Bulk edit apply
Operation postImportsMappingsBulkApply. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/mappings/bulk/apply' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/mappings/bulk/preview
Bulk edit preview
Operation postImportsMappingsBulkPreview. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): BulkPatch
| Field | Type | Flags | Description |
|---|---|---|---|
ids | array of string | required | |
patches | array of object | required |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json BulkPreview |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/mappings/bulk/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"ids":[""],"patches":[{"field":"","value":{}}]}'
Example 200 response:
{
"affected": 0,
"changes": [
{}
],
"warnings": [
""
],
"token": ""
}
POST /imports/mappings/preview
Preview a CSV column mapping: effective mapping, problems, first records
Operation postImportsMappingsPreview. Auth: API key (Bearer) or session cookie.
curl -X POST 'https://api.metrixed.com/v1/imports/mappings/preview' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}
POST /imports/mappings/search
Search ImportMappings (advanced)
Operation postImportsMappingsSearch. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): SearchRequest
| Field | Type | Flags | Description |
|---|---|---|---|
filters | array of object | ||
search | string | ||
sort | array of object (free-form) | ||
page | integer | ||
page_size | integer | ||
include | array of string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportMappingList |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/mappings/search' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"filters":[{}],"search":"","sort":[{}],"page":0}'
Example 200 response:
{
"data": [
{}
],
"page": {}
}
GET /imports/sources
List import sources (credentials masked)
Operation getImportsSources. Auth: API key (Bearer) or session cookie.
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json LogSearchResult |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/sources' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"rows": [
{}
],
"next_cursor": "",
"has_more": false
}
POST /imports/sources
Create an import source (credentials sealed at rest)
Operation postImportsSources. Auth: API key (Bearer) or session cookie.
Request body (application/json, required): ImportSource
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
platform | enum: tune, everflow, trackier, affise, cake | required | |
name | string | required | |
base_url | string | ||
config | object (free-form) | api_key (write-only, returned masked), network_id, extra{} | |
status | enum: active, disabled | ||
last_tested_at | string (date-time) | ||
last_error | string |
| Status | Description | Body |
|---|---|---|
| 201 | ok | application/json ImportSource |
| default | error | application/json Error |
curl -X POST 'https://api.metrixed.com/v1/imports/sources' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"platform":"tune","name":""}'
Example 201 response:
{
"platform": "tune",
"name": ""
}
GET /imports/sources/{id}
Get an import source
Operation getImportsSourcesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportSource |
| default | error | application/json Error |
curl 'https://api.metrixed.com/v1/imports/sources/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"platform": "tune",
"name": ""
}
PATCH /imports/sources/{id}
Update an import source (blank or masked secrets are kept)
Operation patchImportsSourcesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
Request body (application/json, required): ImportSource
| Field | Type | Flags | Description |
|---|---|---|---|
id | string | read-only | |
display_id | integer | read-only | |
hash_id | string | read-only | |
external_ref | string | ||
custom_fields | object (free-form) | tenant-defined fields | |
version | integer | read-only | |
created_at | string (date-time) | read-only | |
updated_at | string (date-time) | read-only | |
deleted_at | string (date-time) | read-only | |
platform | enum: tune, everflow, trackier, affise, cake | required | |
name | string | required | |
base_url | string | ||
config | object (free-form) | api_key (write-only, returned masked), network_id, extra{} | |
status | enum: active, disabled | ||
last_tested_at | string (date-time) | ||
last_error | string |
| Status | Description | Body |
|---|---|---|
| 200 | ok | application/json ImportSource |
| default | error | application/json Error |
curl -X PATCH 'https://api.metrixed.com/v1/imports/sources/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
--data-raw '{"platform":"tune","name":""}'
Example 200 response:
{
"platform": "tune",
"name": ""
}
DELETE /imports/sources/{id}
Delete an import source
Operation deleteImportsSourcesId. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X DELETE 'https://api.metrixed.com/v1/imports/sources/<id>' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 204 response:
{
"ok": false
}
POST /imports/sources/{id}/test
Test the connection by reading one record through the platform adapter
Operation postImportsSourcesIdTest. Auth: API key (Bearer) or session cookie.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
id | path | string | yes |
curl -X POST 'https://api.metrixed.com/v1/imports/sources/<id>/test' \
-H "Authorization: Bearer $DT_API_KEY" \
-H 'Accept: application/json'
Example 200 response:
{
"ok": false
}