{
    "$schema": "http://json-schema.org/draft-04/schema",
    "additionalProperties": false,
    "definitions": {
        "___traits_trait_additional_properties_json": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "additionalProperties": {},
            "description": "A grab-bag object for non-validatable data.",
            "title": "Has additional properties",
            "type": "object"
        },
        "___traits_trait_alignment_json": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "A property used to determine horizontal positioning of a content element relative to the elements that immediately follow it in the element sequence.",
            "enum": [
                "left",
                "right",
                "center"
            ],
            "title": "Alignment",
            "type": "string"
        },
        "___traits_trait_channel_json": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "An optional list of output types for which this element should be visible",
            "items": {
                "type": "string"
            },
            "title": "Channel trait",
            "type": "array"
        },
        "___traits_trait_id_json": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "A globally unique identifier of the content in the ANS repository.",
            "title": "Globally Unique ID trait",
            "type": "string"
        },
        "___traits_trait_subtype_json": {
            "$schema": "http://json-schema.org/draft-04/schema#",
            "description": "A user-defined categorization method to supplement type. In Arc, this field is reserved for organization-defined purposes, such as selecting the PageBuilder template that should be used to render a document.",
            "title": "Subtype or Template",
            "type": "string"
        }
    },
    "description": "This represents a reference to external content that should be denormalized",
    "properties": {
        "_id": {
            "$ref": "#/definitions/___traits_trait_id_json"
        },
        "additional_properties": {
            "$ref": "#/definitions/___traits_trait_additional_properties_json"
        },
        "alignment": {
            "$ref": "#/definitions/___traits_trait_alignment_json"
        },
        "channels": {
            "$ref": "#/definitions/___traits_trait_channel_json"
        },
        "referent": {
            "additionalProperties": false,
            "dependencies": {
                "website": {
                    "properties": {
                        "type": {
                            "enum": [
                                "section"
                            ],
                            "type": "string"
                        }
                    }
                }
            },
            "properties": {
                "id": {
                    "description": "The id passed to the provider to retrieve an ANS document",
                    "type": "string"
                },
                "provider": {
                    "description": "A URL that can resolve the id into an ANS element",
                    "type": "string"
                },
                "referent_properties": {
                    "additionalProperties": {},
                    "description": "An object for key-value pairs that should override the values of keys with the same name in the denormalized object",
                    "type": "object"
                },
                "service": {
                    "description": "The type of interaction the provider expects. E.g., 'oembed'",
                    "type": "string"
                },
                "type": {
                    "description": "The ANS type that the provider should return.",
                    "type": "string"
                },
                "website": {
                    "description": "The website which the referenced id belongs to. Currently supported only for sections.",
                    "type": "string"
                }
            },
            "required": [
                "id"
            ],
            "type": "object"
        },
        "subtype": {
            "$ref": "#/definitions/___traits_trait_subtype_json"
        },
        "type": {
            "enum": [
                "reference"
            ],
            "type": "string"
        }
    },
    "required": [
        "type",
        "referent"
    ],
    "title": "Representation of a normalized element",
    "type": "object"
}