{
  "channel": {
    "acast": "https://shows.acast.com/in-lieu-of-fun",
    "crowdcast": "https://www.crowdcast.io/inlieuoffun",
    "youTube": "https://www.youtube.com/channel/UC8lKFNnYE1War3a41Q41fMw",
    "discord": "https://discord.gg/U3Vd3ESYAd",
    "groups": "https://groups.google.com/g/in-lieu-of-fun"
  },
  "template": {
    "base": "https://inlieuof.fun",
    "html": {
      "guests": "{base}/guests.html",
      "episodes": "{base}/episodes.html",
      "latest": "{base}/episode/latest",
      "episode": "{base}/episode/{number}"
    },
    "json": {
      "guests": "{base}/guests.json",
      "episodes": "{base}/episodes.json",
      "latest": "{base}/latest.json",
      "episode": "{base}/episode/{number}.json"
    },
    "stream": {
      "latest": "{base}/stream/latest",
      "audio": "{base}/audio/{number}",
      "episode": "{base}/stream/{number}",
      "replay": "{base}/replay/{number}"
    }
  },
  "data": {
    "guest": {
      "description": "Details about a guest",
      "type": "object",
      "fields": {
        "name": {
          "type": "string",
          "description": "The full name of the guest",
          "required": true
        },
        "twitter": {
          "type": "string",
          "description": "The twitter handle of the guest, without leading @"
        },
        "url": {
          "type": "string",
          "description": "The URL of the guest's home page or profile"
        },
        "notes": {
          "type": "string",
          "description": "One-line biographical notes for the guest list"
        },
        "episodes": {
          "type": "array",
          "element": "number",
          "description": "The episodes the guest has appeared on",
          "required": true
        }
      }
    },
    "episode": {
      "description": "Metadata describing an episode",
      "type": "object",
      "fields": {
        "episode": {
          "type": "oneof",
          "options": [
            "number",
            "string"
          ],
          "description": "The episode number or label",
          "required": true
        },
        "season": {
          "type": "number",
          "description": "The season number of this episode"
        },
        "airDate": {
          "type": "string",
          "format": "YYYY-MM-DD",
          "description": "The date when the episode aired",
          "required": true
        },
        "youTubeURL": {
          "type": "string",
          "format": "url",
          "description": "Link to the episode stream on YouTube",
          "required": true
        },
        "crowdcastURL": {
          "type": "string",
          "format": "url",
          "description": "Link to the episode stream on Crowdcast"
        },
        "acastURL": {
          "type": "string",
          "format": "url",
          "description": "Link to the episode audio stream player on Acast"
        },
        "audioFileURL": {
          "type": "string",
          "format": "url",
          "description": "Direct link to the episode audio file on Acast"
        },
        "links": {
          "description": "Hyperlinks to display in the episode log",
          "type": "array",
          "element": {
            "type": "object",
            "fields": {
              "title": {
                "type": "string",
                "description": "The anchor text for the link"
              },
              "url": {
                "type": "string",
                "format": "url",
                "description": "The URL to link to"
              }
            }
          }
        },
        "summary": {
          "type": "string",
          "description": "A one-line summary of the episode content"
        },
        "guestNames": {
          "type": "array",
          "description": "The names of the guests for this episode",
          "element": {
            "type": "string"
          }
        },
        "tags": {
          "description": "Category tags for episode content",
          "type": "array",
          "element": {
            "type": "string",
            "values": {
              "announcement": "An important announcement takes place in this episode",
              "cheese-night": "The hosts eat cheese and there is no scheduled guest",
              "mystery-guest": "Mystery Guest day in which guests are not pre-announced",
              "no-transcript": "Indicates the episode does not have a text transcript",
              "pugilism": "Multiple guests scheduled to debate on a topic",
              "special": "Indicates the episode should be highlighted as special",
              "truth-from-fiction": "Guest tells a story, audience guesses whether it is true"
            }
          }
        },
        "hasDetail": {
          "type": "bool",
          "description": "Whether the episode has a textual description"
        },
        "detail": {
          "type": "string",
          "format": "markdown",
          "description": "A detailed description and notes for the episode"
        }
      }
    }
  }
}
