sparkletown/sparkle

View on GitHub
scripts/schema.json

Summary

Maintainability
Test Coverage
{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "http://example.com/example.json",
  "type": "object",
  "title": "Config Root Schema",
  "description": "Co-reality Collective Party Config Schema. Made with https://jsonschema.net/.",
  "default": {},
  "examples": [
    {
      "start_utc_seconds": 1591466400,
      "duration_hours": 8.0,
      "unhosted_entry_video_url": "https://google.com/",
      "map_viewbox": "0 0 1547 863",
      "password": "ahoy",
      "admin_password": "tsunami",
      "profile_questions": [
        {
          "name": "islandCompanion",
          "text": "Who's your dream desert island companion?"
        },
        {
          "name": "gratefulFor",
          "text": "What do you feel greateful for?"
        },
        {
          "name": "likeAboutParties",
          "text": "What do you like about parties?"
        }
      ],
      "rooms": [
        {
          "title": "Sunset Room",
          "subtitle": "Sunset Room - Sunrises and Sunsets from all over the world",
          "about": "About this room",
          "image": "image.jpg",
          "on_list": true,
          "template": "jazzBar",
          "on_map": true,
          "button_text": "Check out the sunrise",
          "attendance_x": "21%",
          "attendance_y": "19%",
          "url": "https://google.com/",
          "external_url": "https://google.com/",
          "path": "M 84.58129496777747 147.3325613260158 C 74.37528653770637 177.3215997944872 51.751955765448486 204.2653458393395 37.567359924316406 232.52430725097656 C 21.192730462538776 265.1463168783794 24.953193122592097 321.9732437262433 40.4060173034668 352.8791198730469 C 47.36255981605471 366.7923074423528 75.84674504551731 372.86779216505875 89.43155670166016 366.0052490234375 C 100.97631241213233 360.17326650296076 104.7848193072451 346.87261013732825 115.01148986816406 339.1500549316406 C 140.89211748138842 319.60659019300437 169.99554990855057 289.1874329921948 202.18817138671875 281.13897705078125 C 221.4959437831372 276.3118536813844 272.9068084252108 264.17747603415893 280.9182434082031 242.1768035888672 C 292.6222187463639 210.0358290606722 260.3458251915703 202.59543345565748 237.9968719482422 193.8502655029297 C 201.1375083110179 179.42715932302738 170.7808344295013 163.46764827655855 130.93359375 156.7876434326172 C 128.07334364161693 156.3081501414114 80.12588500976562 144.94355095295097 80.12588500976562 155.3789825439453",
          "events": [
            {
              "start_minute": 0,
              "duration_minutes": 480,
              "host": "Michael & Chris",
              "name": "Real-life sunrise & sunset",
              "text": "Come share with us your sunrises and sunsets from all over the world.",
              "interactivity": "low"
            }
          ]
        }
      ]
    }
  ],
  "required": [
    "start_utc_seconds",
    "duration_hours",
    "password",
    "party_name",
    "unhosted_entry_video_url",
    "map_viewbox",
    "rooms",
    "profile_questions"
  ],
  "additionalProperties": true,
  "properties": {
    "start_utc_seconds": {
      "$id": "#/properties/start_utc_seconds",
      "type": "integer",
      "title": "The start_utc_seconds schema",
      "description": "UTC seconds past epoch when the event starts.",
      "default": 0,
      "examples": [1591466400]
    },
    "duration_hours": {
      "$id": "#/properties/duration_hours",
      "type": "number",
      "title": "The duration_hours schema",
      "description": "Duration of the event in hours.",
      "default": 0.0,
      "examples": [8.0]
    },
    "party_name": {
      "$id": "#/properties/party_name",
      "type": "string",
      "title": "The name of the next party",
      "description": "Name of the Co-Reality event",
      "default": "",
      "examples": ["The Boat Party"]
    },
    "unhosted_entry_video_url": {
      "$id": "#/properties/unhosted_entry_video_url",
      "type": "string",
      "title": "The unhosted_entry_video_url schema",
      "description": "URL to the video to show when the entrance is unhosted.",
      "default": "",
      "examples": ["https://google.com/"]
    },
    "map_viewbox": {
      "$id": "#/properties/map_viewbox",
      "type": "string",
      "title": "The map_viewbox schema",
      "description": "SVG viewbox for the event map's SVG overlay with clickable regions. Must be 0 0 (map image width) (map image height).",
      "default": "",
      "examples": ["0 0 1547 863"]
    },
    "password": {
      "$id": "#/properties/password",
      "type": "string",
      "title": "The password schema",
      "description": "Password for access to this event.",
      "default": "",
      "examples": ["ahoy"]
    },
    "admin_password": {
      "$id": "#/properties/admin_password",
      "type": "string",
      "title": "The admin_password schema",
      "description": "Password for access to the admin site for this event.",
      "default": "",
      "examples": ["tsunami"]
    },
    "profile_questions": {
      "$id": "#/properties/profile_questions",
      "type": "array",
      "title": "the profile questions",
      "description": "informartions users will give",
      "default": [],
      "examples": [
        {
          "name": "islandCompanion",
          "text": "Who's your dream desert island companion?"
        },
        {
          "name": "gratefulFor",
          "text": "What do you feel greateful for?"
        },
        {
          "name": "likeAboutParties",
          "text": "What do you like about parties?"
        }
      ]
    },
    "rooms": {
      "$id": "#/properties/rooms",
      "type": "array",
      "title": "The rooms schema",
      "description": "The list of rooms in the event.",
      "default": [],
      "examples": [
        [
          {
            "title": "Sunset Room",
            "subtitle": "Sunset Room - Sunrises and Sunsets from all over the world",
            "about": "About this room",
            "image": "image.jpg",
            "on_list": true,
            "on_map": true,
            "button_text": "Check out the sunrise",
            "attendance_x": "21%",
            "attendance_y": "19%",
            "url": "https://google.com/",
            "path": "M 84.58129496777747 147.3325613260158 C 74.37528653770637 177.3215997944872 51.751955765448486 204.2653458393395 37.567359924316406 232.52430725097656 C 21.192730462538776 265.1463168783794 24.953193122592097 321.9732437262433 40.4060173034668 352.8791198730469 C 47.36255981605471 366.7923074423528 75.84674504551731 372.86779216505875 89.43155670166016 366.0052490234375 C 100.97631241213233 360.17326650296076 104.7848193072451 346.87261013732825 115.01148986816406 339.1500549316406 C 140.89211748138842 319.60659019300437 169.99554990855057 289.1874329921948 202.18817138671875 281.13897705078125 C 221.4959437831372 276.3118536813844 272.9068084252108 264.17747603415893 280.9182434082031 242.1768035888672 C 292.6222187463639 210.0358290606722 260.3458251915703 202.59543345565748 237.9968719482422 193.8502655029297 C 201.1375083110179 179.42715932302738 170.7808344295013 163.46764827655855 130.93359375 156.7876434326172 C 128.07334364161693 156.3081501414114 80.12588500976562 144.94355095295097 80.12588500976562 155.3789825439453",
            "events": [
              {
                "start_minute": 0,
                "duration_minutes": 480,
                "host": "Michael & Chris",
                "name": "Real-life sunrise & sunset",
                "text": "Come share with us your sunrises and sunsets from all over the world.",
                "interactivity": "low"
              }
            ]
          }
        ]
      ],
      "additionalItems": true,
      "items": {
        "anyOf": [
          {
            "$id": "#/properties/rooms/items/anyOf/0",
            "type": "object",
            "title": "The first anyOf schema",
            "description": "A room in the event.",
            "default": {},
            "examples": [
              {
                "title": "Sunset Room",
                "subtitle": "Sunset Room - Sunrises and Sunsets from all over the world",
                "about": "About this room",
                "image": "image.jpg",
                "on_list": true,
                "on_map": true,
                "button_text": "Check out the sunrise",
                "attendance_x": "21%",
                "attendance_y": "19%",
                "url": "https://google.com/",
                "path": "M 84.58129496777747 147.3325613260158 C 74.37528653770637 177.3215997944872 51.751955765448486 204.2653458393395 37.567359924316406 232.52430725097656 C 21.192730462538776 265.1463168783794 24.953193122592097 321.9732437262433 40.4060173034668 352.8791198730469 C 47.36255981605471 366.7923074423528 75.84674504551731 372.86779216505875 89.43155670166016 366.0052490234375 C 100.97631241213233 360.17326650296076 104.7848193072451 346.87261013732825 115.01148986816406 339.1500549316406 C 140.89211748138842 319.60659019300437 169.99554990855057 289.1874329921948 202.18817138671875 281.13897705078125 C 221.4959437831372 276.3118536813844 272.9068084252108 264.17747603415893 280.9182434082031 242.1768035888672 C 292.6222187463639 210.0358290606722 260.3458251915703 202.59543345565748 237.9968719482422 193.8502655029297 C 201.1375083110179 179.42715932302738 170.7808344295013 163.46764827655855 130.93359375 156.7876434326172 C 128.07334364161693 156.3081501414114 80.12588500976562 144.94355095295097 80.12588500976562 155.3789825439453",
                "events": [
                  {
                    "start_minute": 0,
                    "duration_minutes": 8,
                    "host": "Michael & Chris",
                    "name": "Real-life sunrise & sunset",
                    "text": "Come share with us your sunrises and sunsets from all over the world.",
                    "interactivity": "low"
                  }
                ]
              }
            ],
            "required": [
              "title",
              "subtitle",
              "about",
              "image",
              "on_list",
              "on_map",
              "url",
              "path",
              "events"
            ],
            "additionalProperties": true,
            "properties": {
              "name": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/title",
                "type": "string",
                "title": "The title schema",
                "description": "Title of the room.",
                "default": "",
                "examples": ["Sunset Room"]
              },
              "title": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/subtitle",
                "type": "string",
                "title": "The subtitle schema",
                "description": "A subtitle to appear next to the room name.",
                "default": "",
                "examples": [
                  "Sunset Room - Sunrises and Sunsets from all over the world"
                ]
              },
              "about": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/about",
                "type": "string",
                "title": "The about schema",
                "description": "An explanation about the purpose of this instance.",
                "default": "",
                "examples": ["About this room"]
              },
              "image": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/image",
                "type": "string",
                "title": "The image schema",
                "description": "An explanation about the purpose of this instance.",
                "default": "",
                "examples": ["image.jpg"]
              },
              "on_list": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/on_list",
                "type": "boolean",
                "title": "The on_list schema",
                "description": "Whether the room appears in the room list on the website.",
                "default": false,
                "examples": [true]
              },
              "template": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/template",
                "type": "string",
                "title": "Style template",
                "description": "Page template used to display the room",
                "default": "",
                "examples": ["jazzbar"]
              },
              "on_map": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/on_map",
                "type": "boolean",
                "title": "The on_map schema",
                "description": "Whether the room appears on the map on the website.",
                "default": false,
                "examples": [true]
              },
              "button_text": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/button_text",
                "type": "string",
                "title": "The button_text schema",
                "description": "An explanation about the purpose of this instance.",
                "default": "",
                "examples": ["Check out the sunrise"]
              },
              "attendance_x": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/attendance_x",
                "type": "string",
                "title": "The attendance_x schema",
                "description": "The X percentage along the map to show the attendance indicator.",
                "default": "",
                "examples": ["21%"]
              },
              "attendance_y": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/attendance_y",
                "type": "string",
                "title": "The attendance_y schema",
                "description": "The X percentage along the map to show the attendance indicator.",
                "default": "",
                "examples": ["19%"]
              },
              "url": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/url",
                "type": "string",
                "title": "The url schema",
                "description": "URL for the room.",
                "default": "",
                "examples": ["https://google.com/"]
              },
              "external_url": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/external_url",
                "type": "string",
                "title": "The external_url schema",
                "description": "External URL for the room.",
                "default": "",
                "examples": ["https://google.com/"]
              },
              "path": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/path",
                "type": "string",
                "title": "The path schema",
                "description": "SVG path for the room's clickable region on the map.",
                "default": "",
                "examples": [
                  "M 84.58129496777747 147.3325613260158 C 74.37528653770637 177.3215997944872 51.751955765448486 204.2653458393395 37.567359924316406 232.52430725097656 C 21.192730462538776 265.1463168783794 24.953193122592097 321.9732437262433 40.4060173034668 352.8791198730469 C 47.36255981605471 366.7923074423528 75.84674504551731 372.86779216505875 89.43155670166016 366.0052490234375 C 100.97631241213233 360.17326650296076 104.7848193072451 346.87261013732825 115.01148986816406 339.1500549316406 C 140.89211748138842 319.60659019300437 169.99554990855057 289.1874329921948 202.18817138671875 281.13897705078125 C 221.4959437831372 276.3118536813844 272.9068084252108 264.17747603415893 280.9182434082031 242.1768035888672 C 292.6222187463639 210.0358290606722 260.3458251915703 202.59543345565748 237.9968719482422 193.8502655029297 C 201.1375083110179 179.42715932302738 170.7808344295013 163.46764827655855 130.93359375 156.7876434326172 C 128.07334364161693 156.3081501414114 80.12588500976562 144.94355095295097 80.12588500976562 155.3789825439453"
                ]
              },
              "events": {
                "$id": "#/properties/rooms/items/anyOf/0/properties/events",
                "type": "array",
                "title": "The events schema",
                "description": "List of events in the room during the overall event.",
                "default": [],
                "examples": [
                  [
                    {
                      "start_minute": 0,
                      "duration_minutes": 480,
                      "host": "Michael & Chris",
                      "name": "Real-life sunrise & sunset",
                      "text": "Come share with us your sunrises and sunsets from all over the world.",
                      "interactivity": "low"
                    }
                  ]
                ],
                "additionalItems": true,
                "items": {
                  "anyOf": [
                    {
                      "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0",
                      "type": "object",
                      "title": "The first anyOf schema",
                      "description": "The list of events in the room during the overall event.",
                      "default": {},
                      "examples": [
                        {
                          "start_minute": 0,
                          "duration_minutes": 8,
                          "host": "Michael & Chris",
                          "name": "Real-life sunrise & sunset",
                          "text": "Come share with us your sunrises and sunsets from all over the world.",
                          "interactivity": "low"
                        }
                      ],
                      "required": [
                        "start_minute",
                        "duration_minutes",
                        "host",
                        "name",
                        "text",
                        "interactivity"
                      ],
                      "additionalProperties": true,
                      "properties": {
                        "start_minute": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/start_minute",
                          "type": "number",
                          "title": "The start_minute schema",
                          "description": "The minute after the overall event starts that this event starts.",
                          "default": 0,
                          "examples": [0]
                        },
                        "duration_minutes": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/duration_minutes",
                          "type": "number",
                          "title": "The duration_minutes schema",
                          "description": "Event duration in minutes.",
                          "default": 0,
                          "examples": [480]
                        },
                        "host": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/host",
                          "type": "string",
                          "title": "The host schema",
                          "description": "Name(s) of the event's host(s).",
                          "default": "",
                          "examples": ["Michael & Chris"]
                        },
                        "name": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/name",
                          "type": "string",
                          "title": "The name schema",
                          "description": "Event name.",
                          "default": "",
                          "examples": ["Real-life sunrise & sunset"]
                        },
                        "text": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/text",
                          "type": "string",
                          "title": "The text schema",
                          "description": "Detailed description of the event.",
                          "default": "",
                          "examples": [
                            "Come share with us your sunrises and sunsets from all over the world."
                          ]
                        },
                        "interactivity": {
                          "$id": "#/properties/rooms/items/anyOf/0/properties/events/items/anyOf/0/properties/interactivity",
                          "type": "string",
                          "title": "The interactivity schema",
                          "description": "Interactivity level (low, medium, high), to help give guests an idea what to expect from the event.",
                          "default": "",
                          "examples": ["low"]
                        }
                      }
                    }
                  ],
                  "$id": "#/properties/rooms/items/anyOf/0/properties/events/items"
                }
              }
            }
          }
        ],
        "$id": "#/properties/rooms/items"
      }
    }
  }
}