Appearance
marketing-schedule
2 endpoints.
GET /api/v1/marketing-schedule/flights
List Flights
Every ad on air in the window, plus the summary of what runs where.
start/end are the window the caller draws — the six-week span of a month grid, not the calendar month, so an ad that goes live in the trailing days of the previous month appears in the cell it is drawn in. Both default to a six-week window around today.
THREE POPULATIONS come back, because a calendar that silently dropped either of the last two would be lying about the estate:
flights— dated ads overlapping the window. What the grid draws.undated— in scope, but the syncs have not stamped a flight on them yet (the six columns are new; every ad predating them starts here and moves intoflightson the next sync). Listed so they are visible rather than invented onto a day.out_of_window— a COUNT only: in scope and dated, but running in some other month. That number is what tells somebody looking at an empty month that the estate is not idle, it is just not idle here.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
start | query | no | YYYY-MM-DD | |
end | query | no | YYYY-MM-DD |
200 — Successful Response
json
{
"type": "object",
"additionalProperties": true,
"title": "Response List Flights Api V1 Marketing Schedule Flights Get"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}GET /api/v1/marketing-schedule/flights/{network}/{ad_id}
Get Flight
One ad: its flight, its name and its campaign's, then its numbers.
ad_id is a :path parameter because a LinkedIn creative is identified by a URN (urn:li:sponsoredCreative:123) and those colons would otherwise have to be escaped by every caller.
Read at published scope whatever the calendar is showing: a person who clicked an ad has already found it, and refusing to describe it because it was paused in the seconds since would be a 404 about the wrong thing.
Parameters
| Name | In | Required | Type | Description |
|---|---|---|---|---|
network | path | yes | string | |
ad_id | path | yes | string |
200 — Successful Response
json
{
"type": "object",
"additionalProperties": true,
"title": "Response Get Flight Api V1 Marketing Schedule Flights Network Ad Id Get"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}