Готовность Campaign к запуску
/api/v1/developer/campaigns/{campaignId}/schedule-readinessПроверяет текущие draft, frozen audience, route coverage и primary sender facts перед schedule. Возвращает только bounded reasons и время наблюдения без recipients или channel-health details; результат не резервирует состояние и должен быть перепроверен самой schedule-командой.
Право доступаcampaigns.read
Authorization: Bearer YOUR_PROJECT_TOKEN
Параметры
campaignIdобязательно · pathstringminLength: 1 · maxLength: 160JSON Schema
{ "type": "string", "minLength": 1, "maxLength": 160 }
Примеры запроса
curl --request GET 'https://YOUR_NOVA_HOST/api/v1/developer/campaigns/CAMPAIGN_ID/schedule-readiness' --header 'Authorization: Bearer YOUR_PROJECT_TOKEN'
Ответы
200 Current bounded Campaign schedule readiness
application/jsonobject
readyобязательно- boolean
reasonsобязательно- arraymaxItems: 9
Вложенная схема
arraymaxItems: 9stringenum: ["campaign_not_draft","primary_route_missing","primary_route_mismatch","fallback_route_mismatch","audience_missing","audience_empty","audience_inconsistent","route_coverage_incomplete","primary_sender_unavailable"]JSON Schema
{ "type": "string", "enum": [ "campaign_not_draft", "primary_route_missing", "primary_route_mismatch", "fallback_route_mismatch", "audience_missing", "audience_empty", "audience_inconsistent", "route_coverage_incomplete", "primary_sender_unavailable" ] }JSON Schema
{ "type": "array", "items": { "type": "string", "enum": [ "campaign_not_draft", "primary_route_missing", "primary_route_mismatch", "fallback_route_mismatch", "audience_missing", "audience_empty", "audience_inconsistent", "route_coverage_incomplete", "primary_sender_unavailable" ] }, "maxItems": 9 } checkedAtобязательно- stringformat: "date-time"
JSON Schema
{
"type": "object",
"properties": {
"ready": {
"type": "boolean"
},
"reasons": {
"type": "array",
"items": {
"type": "string",
"enum": [
"campaign_not_draft",
"primary_route_missing",
"primary_route_mismatch",
"fallback_route_mismatch",
"audience_missing",
"audience_empty",
"audience_inconsistent",
"route_coverage_incomplete",
"primary_sender_unavailable"
]
},
"maxItems": 9
},
"checkedAt": {
"type": "string",
"format": "date-time"
}
},
"required": [
"ready",
"reasons",
"checkedAt"
],
"additionalProperties": false,
"$ref": "#/components/schemas/DeveloperCampaignScheduleReadinessResponse"
}400 Invalid Campaign identifier
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}401 Invalid developer credential
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}403 Campaign directory unavailable
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}404 Campaign not found
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}429 Developer API rate limit exceeded
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}503 Developer API rate limiter unavailable
application/problem+jsonobject
type- stringformat: "uri" · default: "about:blank"
titleобязательно- string
statusобязательно- integerminimum: 100 · maximum: 599
detail- string
instance- string
errors- object
JSON Schema
{
"type": "object",
"properties": {
"type": {
"type": "string",
"format": "uri",
"default": "about:blank"
},
"title": {
"type": "string"
},
"status": {
"type": "integer",
"minimum": 100,
"maximum": 599
},
"detail": {
"type": "string"
},
"instance": {
"type": "string"
},
"errors": {
"type": "object",
"additionalProperties": {}
}
},
"required": [
"title",
"status"
]
}