Lineup
Attach asset to slot
Base model view set providing standardized CRUD operations and error handling.
This view set enforces consistent response formats, error handling patterns, and logging across all API endpoints. Subclasses must override the class variables below.
POST
/
api
/
v1
/
lineup
/
slots
/
{slot_id}
/
assets
Attach asset to slot
curl --request POST \
--url https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets"
payload = { "document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets"
payload := strings.NewReader("{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"medium": "TV",
"channel": "TV47",
"month": 5,
"year": 2026,
"title": "TV47 MAY 2026",
"version": 1,
"effective_from": "2026-05-01",
"effective_to": "2026-05-31",
"uploaded_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "John Doe",
"employee_number": "EMP-001"
},
"slot_count": {
"2026-05-01": {
"day": "THU",
"count": 12
}
},
"metadata": {},
"created_at": "2026-05-01T08:00:00Z",
"updated_at": "2026-05-01T08:00:00Z"
}Authorizations
Enter your JWT token in the format: Bearer
Path Parameters
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
Response
200 - application/json
TV- TVRADIO- RadioDIGITAL- Digital
Available options:
TV, RADIO, DIGITAL Maximum string length:
100Required range:
0 <= x <= 2147483647Required range:
0 <= x <= 2147483647Maximum string length:
255Show child attributes
Show child attributes
Required range:
0 <= x <= 2147483647⌘I
Attach asset to slot
curl --request POST \
--url https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets"
payload = { "document_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({document_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'document_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets"
payload := strings.NewReader("{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.capedigital.co.ke/content/api/v1/lineup/slots/{slot_id}/assets")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"document_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"medium": "TV",
"channel": "TV47",
"month": 5,
"year": 2026,
"title": "TV47 MAY 2026",
"version": 1,
"effective_from": "2026-05-01",
"effective_to": "2026-05-31",
"uploaded_by": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "John Doe",
"employee_number": "EMP-001"
},
"slot_count": {
"2026-05-01": {
"day": "THU",
"count": 12
}
},
"metadata": {},
"created_at": "2026-05-01T08:00:00Z",
"updated_at": "2026-05-01T08:00:00Z"
}