Skip to content

Instantly share code, notes, and snippets.

@pjsier
Last active January 15, 2019 16:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pjsier/a91ab6fdaf32f7035e6818ea1746f755 to your computer and use it in GitHub Desktop.
Save pjsier/a91ab6fdaf32f7035e6818ea1746f755 to your computer and use it in GitHub Desktop.
Draft City Scrapers Meeting Schema
{
"$id": "https://cityscrapers.org/meeting.schema.json",
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Meeting",
"type": "object",
"definitions": {
"locations": {
"type": "object",
"description": "A map of location IDs (only unique to the meeting) and location information",
"patternProperties": {
".*": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"coordinates": {
"type": "string"
},
"cityscrapers.org/address": {
"type": "string"
}
}
}
}
},
"links": {
"type": "object",
"description": "A map of link IDs (only unique to the meeting) and links",
"properties": {
"cityscrapers.org/source": {
"type": "object",
"properties": {
"href": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string"
}
},
"required": ["href"]
}
},
"patternProperties": {
".*": {
"type": "object",
"properties": {
"href": {
"type": "string",
"format": "uri"
},
"title": {
"type": "string"
}
},
"required": ["href"]
}
},
"required": ["cityscrapers.org/source"]
}
},
"properties": {
"@type": {
"type": "string",
"description": "Type property as required by JSCalendar",
"enum": ["jsevent"]
},
"uid": {
"type": "string",
"description": "Unique identifier, typically UUID"
},
"title": {
"type": "string",
"description": "The title of the meeting"
},
"updated": {
"type": "string",
"description": "When this information was last updated/scraped, required in JSCalendar",
"format": "date-time"
},
"description": {
"type": "string",
"description": "A description of the specific meeting"
},
"isAllDay": {
"type": "boolean",
"description": "Whether the meeting occurs for the entire day"
},
"status": {
"type": "string",
"description": "The status of the meeting at the time it is scraped",
"enum": ["cancelled", "confirmed", "tentative", "passed"]
},
"start": {
"type": "string",
"description": "The datetime the meeting begins in local time",
"format": "date-time"
},
"timeZone": {
"type": "string",
"description": "The timezone identifier for the meeting"
},
"duration": {
"type": "string",
"description": "The datetime the meeting ends in local time"
},
"locations": {
"$ref": "#/definitions/locations"
},
"links": {
"$ref": "#/definitions/links"
},
"cityscrapers.org/id": {
"type": "string",
"description": "An ID based on the scraper slug, date and time of the meeting"
},
"cityscrapers.org/timeNotes": {
"type": "string",
"description": "Any additional notes about the start or end times"
},
"cityscrapers.org/agencyName": {
"type": "string",
"description": "The full name of the agency holding the meeting (i.e. Chicago Housing Authority"
},
"cityscrapers.org/classification": {
"type": "string",
"description": "The type of meeting from the list of options",
"enum": [
"Advisory Committee",
"Board",
"City Council",
"Commission",
"Committee",
"Forum",
"Police Beat",
"Not classified"
]
}
},
"required": [
"@type",
"uid",
"title",
"start",
"duration",
"links",
"cityscrapers.org/id",
"cityscrapers.org/agencyName"
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment