Skip to main content

content_sources

13 operation(s). All run through POST /syteops/v1/manage/dispatch (reads may use the documented GET form).

approve_mapping​

Approve a field mapping for a source, activating it for live ingest.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyes
mappingobjectyes

Returns

data: {id, status, mapping_status, mapping}

Request

{
"resource": "content_sources",
"action": "approve_mapping",
"params": {
"id": "string",
"mapping": {}
}
}

create​

Create a content source; generates its id and slug, and (unless a secret is provided or auth_mode is none) a webhook secret.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
namestringyes
auth_modestringno
secretstringno
default_author_idintegernoRecord id, digits only.
pin_authorbooleanno
target_post_typestringno
new_cptobjectno
meta_fieldsobjectno
fm_variablesobjectno
forward_enabledbooleanno
forward_urlurlno
forward_auth_modestringno
forward_secretstringno
sig_header_modestringno
sig_header_namestringno
author_match_modestringno
target_tag_slugstringno
taxonomy_apply_modestringno
strip_uncategorizedbooleanno
category_excludeobjectno
content_cleanupbooleanno
strip_inbody_tocbooleanno
strip_inbody_faqbooleanno
add_heading_anchorsbooleanno
image_modifyobjectno

Returns

data: {id, name, slug, secret, secret_source, ...} — secret is plaintext and NON-EMPTY only when secret_source is "generated" (empty for "provided"/"none"), returned only this once (forward_secret is never returned)

Request

{
"resource": "content_sources",
"action": "create",
"params": {
"name": "string",
"auth_mode": "string",
"secret": "string",
"default_author_id": 0,
"pin_author": true,
"target_post_type": "string",
"new_cpt": {},
"meta_fields": {},
"fm_variables": {},
"forward_enabled": true,
"forward_url": "https://example.com",
"forward_auth_mode": "string",
"forward_secret": "string",
"sig_header_mode": "string",
"sig_header_name": "string",
"author_match_mode": "string",
"target_tag_slug": "string",
"taxonomy_apply_mode": "string",
"strip_uncategorized": true,
"category_exclude": {},
"content_cleanup": true,
"strip_inbody_toc": true,
"strip_inbody_faq": true,
"add_heading_anchors": true,
"image_modify": {}
}
}

delete​

Permanently delete a content source.

🔴 Destructive
Access: SyteOps Admin or API key, plus confirm: true.

Parameters

ParameterTypeRequiredDescription
idstringyes
confirmbooleanno

Returns

data: {id, deleted: true}

Request

{
"resource": "content_sources",
"action": "delete",
"params": {
"id": "string",
"confirm": true
},
"confirm": true
}

export​

Export one content source as a portable setup package (no secrets, no posts).

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyes

Returns

data: envelope {format, schema_version, payload, ...} — never includes secret or forward_secret

Request

{
"resource": "content_sources",
"action": "export",
"params": {
"id": "string"
}
}

get​

Get a single content source by id (never includes the secret).

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyes

Returns

data: {id, name, slug, enabled, status, auth_mode, mapping, mapping_status, ...}

Request

{
"resource": "content_sources",
"action": "get",
"params": {
"id": "string"
}
}

import​

Import a content source setup package; creates when the slug is free, overwrites when overwrite+confirm.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
envelopeobjectyes
overwritebooleanno
confirmbooleanno

Returns

data: {id, name, slug, mode, secret, secret_source, ...} — secret is plaintext and NON-EMPTY only when secret_source is "generated"

Request

{
"resource": "content_sources",
"action": "import",
"params": {
"envelope": {},
"overwrite": true,
"confirm": true
}
}

learn_from_sample​

Ask the Ingest AI area to propose a field mapping from the source's captured sample. The proposal REPLACES the stored mapping and is never approved: on a source whose mapping was approved, new deliveries are held until it is approved again, so that call needs confirm:true. Spends an AI call and shares the source's daily AI allowance (default 10 a day, UTC) with reprocess.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyesContent source id.
confirmbooleannoRequired (true) when the source's mapping is approved.

Returns

data: {mapping}; changed is true. 404 not_found, 409 confirmation_required, no_provider or no_sample, 422 invalid_sample, 429 learn_cap_reached, 502 ai_empty_response or invalid_json, 503 ai_unavailable

Request

{
"resource": "content_sources",
"action": "learn_from_sample",
"params": {
"id": "string",
"confirm": true
}
}

list​

List all configured content sources (never includes the secret).

Access: SyteOps Admin or API key.

Parameters

No parameters.

Returns

data.sources[]: array of {id, name, slug, enabled, status, auth_mode, target_post_type, cpt_post_type, shape_fingerprint, mapping, mapping_status, sample, default_author_id, pin_author, default_reviewers, default_ccs, default_post_status, meta_fields, fm_variables, forward_enabled, forward_url, forward_auth_mode, created_at, updated_at} (secret and forward_secret are never included)

Request

{
"resource": "content_sources",
"action": "list",
"params": {}
}

reprocess​

Replay a source's last captured payload through the ingest core. Destructive: it creates or updates the article with the source's own settings, so a source set to publish publishes it, a source in overwrite mode overwrites reviewer edits on an article already live, and the draft core spends an AI call. Shares the source's daily AI allowance (default 10 a day, UTC) with learn_from_sample.

🔴 Destructive
Access: SyteOps Admin or API key, plus confirm: true.

Parameters

ParameterTypeRequiredDescription
idstringyesContent source id.
confirmbooleannoMust be true.

Returns

data: {outcome, message, post_id, created, edit_link}; changed is false for a held or protected article. 404 not_found (unknown or disabled source), 409 confirmation_required or no_payload, 422 invalid_json, 429 learn_cap_reached

Request

{
"resource": "content_sources",
"action": "reprocess",
"params": {
"id": "string",
"confirm": true
},
"confirm": true
}

resend_review_email​

Re-send the review email for a post to its own reviewers (never to a caller-supplied address); one resend per post every 2 minutes.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
post_idintegeryesRecord id, digits only.

Returns

data: {message, notify:{outcome, partial, summary}} (display names only, no addresses or links). 404 post_not_found, 409 module_unavailable, 429 resend_cooldown, 400 no_recipients, 500 send_failed

Request

{
"resource": "content_sources",
"action": "resend_review_email",
"params": {
"post_id": 0
}
}

rotate_secret​

Generate a new webhook secret for a content source, invalidating the old one.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyes

Returns

data: {id, secret} — secret is plaintext, returned only this once

Request

{
"resource": "content_sources",
"action": "rotate_secret",
"params": {
"id": "string"
}
}

test​

Preview a mapping against a sample payload without writing anything.

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyesContent source id.
sampleobjectyesThe sample payload, as a JSON object.
mappingobjectnoOptional field => {path, transform} rows to try; omit to test the source's stored mapping.

Returns

data: {normalized, empty_fields}. 404 not_found, 422 no_sample (an empty sample object)

Request

{
"resource": "content_sources",
"action": "test",
"params": {
"id": "string",
"sample": {},
"mapping": {}
}
}

update​

Update editable fields on an existing content source (slug is not editable; secret is write-only).

Access: SyteOps Admin or API key.

Parameters

ParameterTypeRequiredDescription
idstringyes
namestringno
default_author_idintegernoRecord id, digits only.
pin_authorbooleanno
default_reviewersobjectno
default_ccsobjectno
default_post_statusstringno
auth_modestringno
secretstringno
enabledbooleanno
reingest_modestringno
target_post_typestringno
meta_fieldsobjectno
fm_variablesobjectno
forward_enabledbooleanno
forward_urlurlno
forward_auth_modestringno
forward_secretstringno
sig_header_modestringno
sig_header_namestringno
author_match_modestringno
target_tag_slugstringno
taxonomy_apply_modestringno
strip_uncategorizedbooleanno
category_excludeobjectno
content_cleanupbooleanno
strip_inbody_tocbooleanno
strip_inbody_faqbooleanno
add_heading_anchorsbooleanno
image_modifyobjectno

Returns

data: {id, name, slug, ...} (no secret, no forward_secret)

Request

{
"resource": "content_sources",
"action": "update",
"params": {
"id": "string",
"name": "string",
"default_author_id": 0,
"pin_author": true,
"default_reviewers": {},
"default_ccs": {},
"default_post_status": "string",
"auth_mode": "string",
"secret": "string",
"enabled": true,
"reingest_mode": "string",
"target_post_type": "string",
"meta_fields": {},
"fm_variables": {},
"forward_enabled": true,
"forward_url": "https://example.com",
"forward_auth_mode": "string",
"forward_secret": "string",
"sig_header_mode": "string",
"sig_header_name": "string",
"author_match_mode": "string",
"target_tag_slug": "string",
"taxonomy_apply_mode": "string",
"strip_uncategorized": true,
"category_exclude": {},
"content_cleanup": true,
"strip_inbody_toc": true,
"strip_inbody_faq": true,
"add_heading_anchors": true,
"image_modify": {}
}
}