json_schema: {
      "$id": "https://example.com/address.schema.json",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "description": "Gemstate groups",
      "type": "array",
      "items": {
          "type": "object",
          "required": [
              "name",
              "id",
              "locality",
              "addedDate"
          ],
          "additionalProperties": false,
          "properties": {
              "name": {
                  "description": "Full name of the group",
                  "type": "string"
              },
              "id": {
                  "description": "Unique identifier for the group. Feel free to leave this empty string when submitting PR; a value that works well with gemstate.io will be assigned by approver.",
                  "type": "string"
              },
              "locality": {
                  "description": "Incorporated city/town where this group typically meets in-person, 'Online' if the group doesn't meet in-person, or 'Idaho' if no specific location",
                  "type": "string"
              },
              "addedDate": {
                  "description": "Date the group was added to this list, intended to help people find new groups. (ISO 8601 format)",
                  "format": "date",
                  "type": "string"
              },
              "description": {
                  "description": "Optional brief description of the group",
                  "type": "string"
              },
              "tla": {
                  "description": "Optional acronym used by the group, e.g. Boise Software Developers Group members always call themselves BSDG.",
                  "type": "string"
              },
              "url": {
                  "description": "Optional (strongly encouraged) URL providing more information about the group, and ideally about the next meeting time & place",
                  "type": "string"
              },
              "meetupComGroupName": {
                  "description": "If meetup.com is used for scheduling, the group name (seen in URLs as https://www.meetup.com/<meetupComGroupName>/",
                  "type": "string"
              },
              "eventbriteOrganizerId": {
                  "description": "If eventbrite.com is used for scheduling, the Eventbrite organizer ID (typically a number?)",
                  "type": "string"
              },
              "eventbriteKeywords": {
                  "description": "If eventbrite.com is used, a list of keywords used to narrow the events to those specific to this group",
                  "type": "array",
                  "items": {
                      "type": "string"
                  }
              },
              "iCalendarUrl": {
                  "description": "If a generic web calendar is used for scheduling, its iCalendar/RFC5545 URL (e.g. the .ical URLs provided for public Google Calendars)",
                  "type": "string"
              },
              "abandonedDate": {
                  "type": "string",
                  "format": "date",
                  "description": "If a group's no longer meeting, add this to record the last date it was known. This could be helpful in determining past interest, rather than deleting the group entirely. (ISO 8601 format)"
              },
              "schedCom": {
                  "description": "If sched.com is used to help people choose sessions within big events, add an item per event here",
                  "type": "array",
                  "items": {
                      "type": "object",
                      "required": [
                          "name"
                      ]
                  },
                  "additionalProperties": false,
                  "properties": {
                      "name": {
                          "type": "string",
                          "description": "Conference name (seen in sched.com URLs as https://<conference_name>.sched.com)"
                      }
                  }
              }
          }
      }
  }