UNPKG

osm-community-index

Version:

An index of community resources for OpenStreetMap

268 lines (251 loc) 8.19 kB
{ "title": "Resource", "description": "An OpenStreetMap community resource", "type": "object", "additionalProperties": false, "required": [ "id", "type", "locationSet", "strings" ], "properties": { "id": { "description": "(required) A unique identifier for the resource", "type": "string", "pattern": "^[-_.A-Za-z0-9]+$" }, "type": { "description": "(required) Type of community resource", "type": "string", "enum": [ "aparat", "bluesky", "discord", "discourse", "facebook", "fediverse", "forum", "github", "gitlab", "group", "instagram", "irc", "linkedin", "mailinglist", "mastodon", "matrix", "meetup", "newsletter", "osm", "osm-lc", "reddit", "signal", "slack", "telegram", "threads", "tiktok", "twitter", "url", "wiki", "x", "xmpp", "youthmappers", "youtube", "zulip" ] }, "account": { "description": "(optional) Resource account string, required for some resource types", "examples": ["talk-af"], "type": "string" }, "locationSet": { "$comment": "See location-conflation documentation for compatible values: https://github.com/rapideditor/location-conflation#readme", "description": "(required) included and excluded locations for this item", "$ref": "#/definitions/locationSet" }, "languageCodes": { "description": "(optional) Array of ISO-639-1 (2 letter) or ISO-639-3 (3 letter) codes in lowercase", "type": "array", "uniqueItems": true, "items": { "type": "string", "pattern": "^[a-z]{2,3}(-[a-zA-Z]{2})?$" } }, "strings": { "description": "(required) Source text strings related to this community resource", "$comment": "All strings should be provided in English, and will be sent to Transifex for translation", "type": "object", "additionalProperties": false, "properties": { "community": { "description": "(optional) Community Name", "examples": ["OpenStreetMap Afghanistan"], "type": "string" }, "communityID": { "description": "(generated) A unique identifier generated automatically from the Community Name string", "$comment": "Only generated if community is present . See https://github.com/osmlab/osm-community-index/issues/616", "examples": ["openstreetmapafghanistan"], "type": "string", "pattern": "^[-_.A-Za-z0-9]+$" }, "name": { "description": "(optional) Display name for this community resource", "examples": ["Talk-af Mailing List"], "type": "string" }, "description": { "description": "(optional) One line description of the community resource", "type": "string" }, "extendedDescription": { "description": "(optional) Longer description of the community resource", "type": "string" }, "signupUrl": { "description": "(optional) A url link to sign up for the community resource", "type": "string" }, "url": { "description": "(optional) A url link to visit the community resource", "type": "string" } } }, "contacts": { "description": "(optional) People to contact about this community resource", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "object", "required": ["name", "email"], "properties": { "name": { "description": "The contact person's name", "type": "string" }, "email": { "description": "The contact person's email address", "type": "string", "format": "email" } } } }, "order": { "$comment": "When several resources with same geography are present, this controls the display order.", "description": "(optional) Suggested sort order for this resource (default = 0, higher numbers display more prominently)", "type": "number" }, "events": { "description": "(optional) Featured events for this resource", "type": "array", "uniqueItems": true, "items": { "type": "object", "required": [ "name", "description", "when", "where" ], "dependencies": { "i18n": { "required": ["id"] } }, "properties": { "i18n": { "enum": [ true ], "description": "(optional) if true, `name`, `description` and `where` will be translated", "type": "boolean" }, "id": { "description": "(required if i18n=true) A unique identifier for the event", "type": "string", "pattern": "^[-_.A-Za-z0-9]+$" }, "name": { "$comment": "In local language by default, in English if `i18n=true`", "description": "(required) Name of the event", "type": "string" }, "description": { "$comment": "In local language by default, in English if `i18n=true`", "description": "(required) One line description of the event", "type": "string" }, "where": { "$comment": "In local language by default, in English if `i18n=true`", "description": "(required) Where the event is", "type": "string" }, "when": { "description": "(required) When the event is (Should be a string parseable by Date.parse, and assumed to be local time zone for the event)", "type": "string" }, "url": { "description": "(optional) A url link for the event", "type": "string", "pattern": "(https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*))|(mailto:.+)" } } } } }, "definitions": { "countryCoder": { "$comment": "See country-coder documentation for compatible values: https://github.com/rapideditor/country-coder#readme", "description": "A country code (ISO 3166-1, United Nations M49, or anything recognized by country-coder)", "type": "string" }, "circularArea": { "description": "A circular area defined as [longitude, latitude, radius?]. If not specified, radius will default to 25km.", "type": "array", "minItems": 2, "maxItems": 3, "items": { "type": "number" } }, "geojsonFilename": { "description": "A filename for one of the custom geojson features in this project", "type": "string", "pattern": "^.*\\.geojson$" }, "locationSet": { "$comment": "See location-conflation documentation for compatible values: https://github.com/rapideditor/location-conflation#readme", "type": "object", "additionalProperties": false, "required": ["include"], "properties": { "include": { "description": "(required) locations included", "type": "array", "uniqueItems": true, "items": { "anyOf": [ { "$ref": "#/definitions/countryCoder" }, { "$ref": "#/definitions/circularArea" }, { "$ref": "#/definitions/geojsonFilename" } ] } }, "exclude": { "description": "(optional) locations excluded", "type": "array", "uniqueItems": true, "items": { "anyOf": [ { "$ref": "#/definitions/countryCoder" }, { "$ref": "#/definitions/circularArea" }, { "$ref": "#/definitions/geojsonFilename" } ] } } } } } }