{
    "id": "http://schemas.triniti.io/json-schema/triniti/boost/mixin/sponsor/1-0-0.json#",
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "_id": {
            "type": "string",
            "pattern": "^[\\w\\/\\.:-]+$",
            "pbj": {
                "type": "identifier",
                "rule": "single",
                "overridable": true
            }
        },
        "status": {
            "type": "string",
            "default": "draft",
            "enum": [
                "unknown",
                "published",
                "scheduled",
                "pending",
                "draft",
                "expired",
                "archived",
                "deleted"
            ],
            "pbj": {
                "type": "string-enum",
                "rule": "single"
            }
        },
        "etag": {
            "type": "string",
            "pattern": "^[\\w\\.:-]+$",
            "pbj": {
                "type": "string",
                "rule": "single"
            }
        },
        "created_at": {
            "type": "string",
            "pattern": "^[1-9]{1}[0-9]{12,15}$",
            "pbj": {
                "type": "microtime",
                "rule": "single"
            }
        },
        "creator_ref": {
            "type": "object",
            "properties": {
                "curie": {
                    "type": "string",
                    "pattern": "^([a-z0-9-]+):([a-z0-9\\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)$",
                    "minLength": 0,
                    "maxLength": 146
                },
                "id": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9:_\\-]+$",
                    "minLength": 0,
                    "maxLength": 255
                },
                "tag": {
                    "type": "string",
                    "pattern": "^([\\w\\/-]|[\\w-][\\w\\/-]*[\\w-])$",
                    "minLength": 0,
                    "maxLength": 255
                }
            },
            "required": [
                "curie",
                "id"
            ],
            "additionalProperties": false,
            "description": "A fully qualified reference to what created this node. This is intentionally a message-ref and not a user id because it is often a program that creates nodes, not a user.",
            "pbj": {
                "type": "message-ref",
                "rule": "single"
            }
        },
        "updated_at": {
            "type": "string",
            "pattern": "^[1-9]{1}[0-9]{12,15}$",
            "pbj": {
                "type": "microtime",
                "rule": "single",
                "useTypeDefault": false
            }
        },
        "updater_ref": {
            "type": "object",
            "properties": {
                "curie": {
                    "type": "string",
                    "pattern": "^([a-z0-9-]+):([a-z0-9\\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)$",
                    "minLength": 0,
                    "maxLength": 146
                },
                "id": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9:_\\-]+$",
                    "minLength": 0,
                    "maxLength": 255
                },
                "tag": {
                    "type": "string",
                    "pattern": "^([\\w\\/-]|[\\w-][\\w\\/-]*[\\w-])$",
                    "minLength": 0,
                    "maxLength": 255
                }
            },
            "required": [
                "curie",
                "id"
            ],
            "additionalProperties": false,
            "description": "A fully qualified reference to what updated this node. This is intentionally a message-ref and not a user id because it is often a program that updates nodes, not a user. E.g. \"acme:iam:node:app:cli-scheduler\" or \"acme:iam:node:user:60c71df0-fda8-11e5-bfb9-30342d363854\"",
            "pbj": {
                "type": "message-ref",
                "rule": "single"
            }
        },
        "last_event_ref": {
            "type": "object",
            "properties": {
                "curie": {
                    "type": "string",
                    "pattern": "^([a-z0-9-]+):([a-z0-9\\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)$",
                    "minLength": 0,
                    "maxLength": 146
                },
                "id": {
                    "type": "string",
                    "pattern": "^[A-Za-z0-9:_\\-]+$",
                    "minLength": 0,
                    "maxLength": 255
                },
                "tag": {
                    "type": "string",
                    "pattern": "^([\\w\\/-]|[\\w-][\\w\\/-]*[\\w-])$",
                    "minLength": 0,
                    "maxLength": 255
                }
            },
            "required": [
                "curie",
                "id"
            ],
            "additionalProperties": false,
            "description": "A reference to the last event that changed the state of this node. E.g. \"acme:blog:event:article-published:60c71df0-fda8-11e5-bfb9-30342d363854\"",
            "pbj": {
                "type": "message-ref",
                "rule": "single"
            }
        },
        "title": {
            "type": "string",
            "minLength": 0,
            "maxLength": 255,
            "pbj": {
                "type": "string",
                "rule": "single"
            }
        },
        "type": {
            "type": "string",
            "default": "external",
            "enum": [
                "unknown",
                "external",
                "internal",
                "advertorial"
            ],
            "pbj": {
                "type": "string-enum",
                "rule": "single"
            }
        },
        "permalink_html_head": {
            "type": "string",
            "minLength": 0,
            "maxLength": 65535,
            "description": "A string containing code that is injected into the application's html head tag.",
            "pbj": {
                "type": "text",
                "rule": "single"
            }
        },
        "permalink_badge": {
            "type": "string",
            "minLength": 0,
            "maxLength": 65535,
            "description": "A string containing code that is injected into the application typically next to/near the title of the content. It will be wrapped in a div with the id and slug of the sponsor.",
            "pbj": {
                "type": "text",
                "rule": "single"
            }
        },
        "timeline_badge": {
            "type": "string",
            "minLength": 0,
            "maxLength": 65535,
            "description": "See description for \"permalink_badge\". This is very similar but in this case the page is rendering many pieces of content, e.g. blogroll.",
            "pbj": {
                "type": "text",
                "rule": "single"
            }
        }
    },
    "required": [
        "_id"
    ],
    "additionalProperties": true
}