Flex: Advanced - Encrypted XML

Send Acast information directly on the RSS feed

Updated over a week ago

In the Flex system, it is possible to pass show and episode settings using encoded XML tags. To make use of this feature, you will need:

  • To add the schema for the Acast namespace

  • Add encoded <acast:settings> at either show or episode level with your choice of settings

  • Optionally, you may also encrypt the encoded settings using the <acast:signature> setting

Acast namespace schema

Include the following information from the extended RSS tags looking for the Acast namespace xmlns:acast="https://schema.acast.com/1.0/"

For example:

<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:acast="https://schema.acast.com/1.0/"  version="2.0">

XML Tags

<acast:settings>

This can be both at the show or 'channel' level and the episode or 'item' level. It’s encoded as base64 utf-8 string, either of a json stringified, or optionally with the json string encrypted with the information provided in the signature object (see <acast:signature> details below.)

Example:

<acast:settings>
<![CDATA[
eyJhZFNldHRpbmdzIjp7ImFkc0VuYWJsZWQiOnRydWUsInNwb25zRW5hYmxlZCI6dHJ1ZSwic2xvdHMiOlt7InR5cGUiOiJzcG9ucyIsInBsYWNlbWVudCI6InByZXJvbGwiLCJzdGFydCI6NDc5LCJkdXJhdGlvbiI6NjB9LHsidHlwZSI6ImFkcyIsInBsYWNlbWVudCI6InByZXJvbGwiLCJzdGFydCI6NDc5LCJkdXJhdGlvbiI6NjB9XX19]]>
</acast:settings>


<acast:settings> at the Channel level (Show data)

At the channel (show) level, the settings object contains the base information for the show ad targeting, plus some default data for the episodes. Once decrypted and decoded, we expect the information to look like this (all values are optional):

{
defaults: {
"intro": "", // Optional intro audio to attach to the start of the episodes
"outro": "", // Optional outro audio to attach to the end of the episodes
"adInSound": "", // URL of an ad break in sting
"adOutSound": "", // URL of an ad break out sting
}
},

<acast:settings> at the Item level (Episode data)

At the item (episode) level, it contains the episode-level information, the ad positions and number of ads.

{{
intro: 'mp3_url', // Optional intro audio to attach to the start of the episode
outro: 'mp3_url', // Optional outro audio to attach to the end of the episode
adSettings: {
sponsEnabled: false, // set to false to disable sponsorships for the episode, overriding show level settings
adsEnabled: false, // set to false to disable ads for the episode
slots: [
{
type: 'spons', // 'spons' or 'ads'
placement: 'midroll', // ‘preroll’ or ‘midroll’ or ‘postroll’
start: 312, // Position of the slot in seconds
}
],...
}
}

<acast:signature>

It is possible to use base6e encoding on the <acast:settings>. If you would like to encrypt the tags, the <acast:signature> will need to be added to the feed.

At the channel level, it contains the information to decrypt the payloads of the rest of the values:

<acast:signature key="EXAMPLE" algorithm="aes-256-cbc">
<![CDATA[ quRO51a5m/mAho8azGcwFw== ]]>
</acast:signature>

key = corresponds to the public key that matches the private secret used as a passphrase on the encryption.

algorithm - the algorithm used for encrypting the data (should support any algorithm supported by node crypt functions).

For the technical stuff: the payload of the signature object is a base64 representation of the binary initialization vector. It’s both used as a IV for the aes encryption and used as a salt to prime the secret passphrase for encoding/decoding.

For an example of an encrypted payload on Acast feeds, see here.

If you are interested in adding encryption to your XML tags, please reach out to your Acast contact who will create a secret pair for you to implement.

Did this answer your question?