{
    "$schema": "http://json-schema.org/draft-07/schema#",
    "defaultProperties": [],
    "definitions": {
        "CDNConfiguration": {
            "defaultProperties": [],
            "properties": {
                "assets_folder": {
                    "description": "The folder that will hold CDN assets for each org and story.",
                    "type": "string"
                },
                "bucket": {
                    "description": "The GCP bucket. Leave this blank to use 'viewdo-static'.",
                    "type": "string"
                },
                "enabled": {
                    "default": false,
                    "description": "If enabled, the /assets folder in each story will be uploaded\nto the configured GCP bucket when the PUSH command is called.\n\nNote: If the service-account.json file needed to authenticate\nagainst GCP is missing, the push command will fail.",
                    "type": "boolean"
                },
                "rootUrl": {
                    "description": "Configure a vanity URL if you don't want to use the GCP URL for the\nbucket. If the bucket is 'viewdo-static', leave this field blank\nto use 'https://static.view.do'",
                    "pattern": "^https:\\/\\/[\\w\\d\\.\\-\\/]*[^\\/]$",
                    "type": "string"
                }
            },
            "required": [
                "enabled"
            ],
            "type": "object"
        },
        "EpisodeAssetConfiguration": {
            "defaultProperties": [],
            "properties": {
                "css_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "js_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "json_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "key": {
                    "pattern": "^[A-Za-z0-9-_]{1,30}$",
                    "type": "string"
                },
                "name": {
                    "type": "string"
                }
            },
            "required": [
                "key",
                "name"
            ],
            "type": "object"
        },
        "OrganizationAssetConfiguration": {
            "defaultProperties": [],
            "description": "Organization asset locations for synchronization",
            "properties": {
                "flashboard_css_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "key": {
                    "pattern": "^[A-Za-z0-9-_]{1,30}$",
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "scripts_html_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                }
            },
            "required": [
                "key",
                "name"
            ],
            "type": "object"
        },
        "StoryAssetConfiguration": {
            "defaultProperties": [],
            "description": "Story asset locations for synchronization",
            "properties": {
                "css_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "email_templates": {
                    "anyOf": [
                        {
                            "additionalProperties": {
                                "type": "string"
                            },
                            "defaultProperties": [],
                            "type": "object"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "episodes": {
                    "anyOf": [
                        {
                            "items": {
                                "$ref": "#/definitions/EpisodeAssetConfiguration"
                            },
                            "type": "array"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "html_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "intro_html_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "js_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "json_file": {
                    "type": [
                        "string",
                        "null"
                    ]
                },
                "key": {
                    "pattern": "^[A-Za-z0-9-_]{1,30}$",
                    "type": "string"
                },
                "name": {
                    "type": "string"
                },
                "organization_key": {
                    "type": "string"
                },
                "text_templates": {
                    "anyOf": [
                        {
                            "additionalProperties": {
                                "type": "string"
                            },
                            "defaultProperties": [],
                            "type": "object"
                        },
                        {
                            "type": "null"
                        }
                    ]
                },
                "url": {
                    "type": "string"
                },
                "vanity_url": {
                    "type": "string"
                }
            },
            "required": [
                "key",
                "name",
                "organization_key"
            ],
            "type": "object"
        }
    },
    "description": "DXP ASSET CONFIG:\n-----------------------------------------------------\nThis file defines a mapping between file-bases assets and their API versions hosted in the DXP platform.",
    "properties": {
        "apiVersion": {
            "default": "api.view.do/v4/admin",
            "description": "API version, model location (read-only)",
            "type": "string"
        },
        "cdn": {
            "$ref": "#/definitions/CDNConfiguration",
            "description": "Configure automatic CDN uploads to GCP buckets."
        },
        "kind": {
            "default": "DXP",
            "description": "DXP model-type (read-only)",
            "type": "string"
        },
        "organizations": {
            "default": [],
            "description": "A list of organization asset configurations. These files will be synced with the assets on the platform on 'push' and 'pull'.",
            "items": {
                "$ref": "#/definitions/OrganizationAssetConfiguration"
            },
            "type": "array"
        },
        "stories": {
            "default": [],
            "description": "A list of story asset configurations. These files will be synced with the assets on the platform on 'push' and 'pull'.",
            "items": {
                "$ref": "#/definitions/StoryAssetConfiguration"
            },
            "type": "array"
        }
    },
    "required": [
        "apiVersion",
        "cdn",
        "kind",
        "organizations",
        "stories"
    ],
    "type": "object"
}

