JSON Configuration Guide for Advanced Settings
Last updated
Last updated
This JSON schema defines various settings for ad injection (Ad Tech) and audio streaming (Playout & Processing).
Note:
For more details, see the documentation for and .
The Advanced Settings allow for detailed configuration of our streaming services. This JSON schema defines all available settings that developers can use.
With this schema, you can:
✔️ Validate inputs – to prevent errors ✔️ Generate forms or configuration files ✔️ Efficiently integrate with the API
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"ad_instream_opener": {
"type": "array",
"title": "Instream Ads Opener URLs",
"description": "URLs for instream ad openers, if more than one are provided, one is picked randomly",
"items": {
"type": "string",
"examples": [
"https://streamabc-audio-content.s3.eu-central-1.amazonaws.com/sunshinelive/werbetrenner-ssl-3.wav"
]
}
},
"ad_instream_closer": {
"type": "array",
"title": "Instream Ads Closer URLs",
"description": "URLs for instream ad openers, if more than one are provided, one is picked randomly",
"items": {
"type": "string",
"examples": [
"https://streamabc-audio-content.s3.eu-central-1.amazonaws.com/sunshinelive/werbetrenner-ssl-3.wav"
]
}
},
"ad_force_preroll_opener": {
"type": "string",
"title": "Force Playing Preroll Opener",
"enum": ["true", "false", ""],
"description": "Force playing an opener even if no preroll ad is played, boolean string, provide true or false as string",
"examples": ["true", "false"]
},
"ad_force_preroll_closer": {
"type": "string",
"title": "Force Playing Preroll Closer",
"enum": ["true", "false", ""],
"description": "Force playing a closer even if no preroll ad is played, boolean string, provide true or false as string",
"examples": ["true", "false"]
},
"ad_preroll_opener": {
"type": "array",
"title": "Preroll Ads Opener URLs",
"description": "URLs for preroll ad openers, if more than one are provided, one is picked randomly",
"items": {
"type": "string"
}
},
"ad_preroll_closer": {
"type": "array",
"title": "Preroll Ads Closer URLs",
"description": "URLs for preroll ad closers, if more than one are provided, one is picked randomly",
"items": {
"type": "string"
}
},
"target_volume_db": {
"type": "number",
"description": "Target volume in dB for the stream, all ads will be normalized to this volume",
"example": -6
},
"ad_duration_max": {
"type": "integer",
"description": "The maximum duration of ads in seconds for a session before no further ads are played"
},
"timeshift": {
"type": "integer",
"readOnly": true,
"description": "NOT IMPLEMENTED"
},
"username": {
"type": "string",
"description": "Protect a stream with username and password, provide username here"
},
"password": {
"type": "string",
"description": "Protect a stream with username and password, provide password here"
},
"protected": {
"type": "string",
"enum": ["true", "false", ""],
"description": "Protect a stream, provide true or false as string"
},
"grace_time": {
"type": "integer",
"description": "Time in seconds after an instream ad is played before the next ad is requested",
"example": 1800
},
"grace_time_preroll": {
"type": "integer",
"description": "Time in seconds after an preroll ad is played before the next ad is requested",
"example": 900
},
"grace_time_reconnect": {
"type": "integer",
"description": "Time in seconds to detect reconnects and not play preroll ads",
"example": 30
},
"reconnect_error_noads": {
"type": "boolean",
"description": "Don't play ads if there had been errors detecting a reconnect. It needs a unique listener id provided by the player to work."
},
"capping": {
"type": "integer",
"description": "Time in seconds between reconnects to suppress preroll ads. It needs a unique listener id provided by the player to work.",
"example": 900
},
"burst": {
"type": "integer",
"description": "Send this much seconds of the stream on the beginning of the connection to the player as once. This helps filling the client buffer."
},
"adinjection": {
"type": "string",
"description": "Fine tune the ad injection mode. One of insert overlay replace replace_delay replace_inventory",
"examples": ["replace_delay", "replace_inventory"]
},
"drift_end": {
"type": "number",
"description": "Value in milliseconds to fine tune the end trigger for replacement. Can be negative or positive and moves the trigger point in time."
},
"geo_allow_countries": {
"type": "array",
"description": "Country codes that are allow to access the stream. If set, any listeners from other countries get blocked",
"items": {
"type": "string",
"examples": ["DE", "AT"]
}
},
"geo_disallow_countries": {
"type": "array",
"description": "Country codes that are not allowed to access the stream. If set, any listeners from these countries get blocked",
"items": {
"type": "string",
"examples": ["GB"]
}
},
"geo_fallback": {
"type": "string",
"description": "URL to a fallback stream that is played if the listener is blocked by geo restrictions",
"example": "https://api.streamabc.net/audiolibrary/file/content/sunshinelive/geo/SSL_UKStreamHinweis.mp3"
},
"geo_active_hours": {
"type": "array",
"description": "List of hours when geo restrictions are active.",
"items": {
"type": "integer",
"examples": ["20", "21"]
}
},
"log_metadata": {
"type": "boolean",
"readOnly": true,
"description": "INTERNAL USE ONLY: log all metadata events"
},
"hls_metadata": {
"type": "boolean",
"description": "EXPERIMENTAL: add metadata ID3 frames to HLS stream"
},
"adaptive_streaming": {
"type": "boolean",
"description": "Switch to lower bitrates in case of reconnects. Needs a unique listener id provided by the player"
},
"enhanced_parser": {
"type": "boolean",
"readOnly": true,
"description": "INTERNAL USE ONLY: use a different frame parser"
},
"trigger_beep_end": {
"type": "boolean",
"description": "The end of the beep triggers the ad injection instead of the start of the beep"
},
"blocked_agents": {
"type": "string",
"description": "Regular expression of user agents that are blocked and don't get access to the stream",
"example": "Current.*"
},
"blocked_aggregators": {
"type": "array",
"description": "List of aggregator names that are blocked and don't get access to the stream. Needs a qualified aggregator value provided by the stream url",
"items": {
"type": "string",
"examples": ["tunein", "radiode"]
}
},
"block_anonymous": {
"type": "boolean",
"description": "Block listeners of connections without a qualified aggregator value. Attention, this can affect a lot of listeners."
},
"blocked_fallback": {
"type": "string",
"description": "URL to an audio file that is played whenever a listener is blocked"
},
"no_ad_parameter": {
"type": "string",
"description": "Value fo the URL query string parameter \"context\" that disables ads for the listener",
"example": "5d50ajGfpU"
},
"adproxy_enabled": {
"type": "boolean",
"description": "Enable the use of our Adproxy solution"
},
"events_disabled": {
"type": "boolean",
"readOnly": true,
"description": "INTERNAL USE ONLY: disable all events"
},
"rmsi_user_profiles": {
"type": "boolean",
"description": "Use RMX to get user profiles for ad targeting"
},
"companionad_aggregators": {
"type": "array",
"description": "Aggregator values for requesting companion ads.",
"items": {
"type": "string"
}
},
"detailed_adlogs": {
"type": "boolean",
"readOnly": true,
"description": "INTERNAL USE ONLY: log all ad events"
},
"use_profiles": {
"type": "boolean",
"description": "EXPERIMENTAL: Use the provided profile_id and load all streamurl values from our profiles service. Needs changes on player side."
},
"request_gracetime": {
"type": "boolean",
"description": "Request ad servers even if affected by grace time but discard potentially ads. This helps keeping inventory high."
},
"adserver_params": {
"type": "object",
"description": "Additional parameters for the ad server request",
"additionalProperties": {
"type": "string"
}
}
},
"required": [],
"additionalProperties": false
}
The schema can be used in code editors such as Visual Studio Code for automatic validation
It is compatible with many API testing tools
If you use form generators, you can import this schema directly