sparkletown/sparkle

View on GitHub
scripts/venue-schema.json

Summary

Maintainability
Test Coverage
{
  "$schema": "http://json-schema.org/draft-07/schema",
  "$id": "http://example.com/example.json",
  "type": "object",
  "title": "Venue Schema",
  "description": "Co-reality Collective Party Config Schema. Made with https://jsonschema.net/.",
  "properties": {
    "name": {
      "type": "string"
    },
    "template": {
      "type": "string"
    },
    "data": {
      "$schema": "http://json-schema.org/draft-07/schema",
      "$id": "http://example.com/example.json",
      "type": "object",
      "title": "Venue 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": {
        "host": {
          "type": "object",
          "properties": {
            "name": {
              "type": "string"
            },
            "icon": {
              "type": "string"
            },
            "url": {
              "type": "string"
            }
          }
        },
        "description": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string"
            },
            "program_url": {
              "type": "string"
            }
          }
        },
        "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"
          }
        }
      }
    }
  }
}