From 90eb48987ed30ecbee4f4c0e1fbeca544fdd3784 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 24 Apr 2024 18:18:58 +0300 Subject: [PATCH 01/16] add v2.1.0 schema with initial smaple schema --- v2.1.0/admin-schema.json | 698 ++++++++++++++++++ v2.1.0/tasks-schema.json | 1441 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 2139 insertions(+) create mode 100644 v2.1.0/admin-schema.json create mode 100644 v2.1.0/tasks-schema.json diff --git a/v2.1.0/admin-schema.json b/v2.1.0/admin-schema.json new file mode 100644 index 0000000..060b935 --- /dev/null +++ b/v2.1.0/admin-schema.json @@ -0,0 +1,698 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/admin-schema.json", + "title": "Schema for Modeling Hub administrative settings", + "description": "This JSON file provides a schema for modeling hub administrative information.", + "type": "object", + "properties": { + "schema_version": { + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/admin-schema.json"], + "type": "string", + "format": "uri" + }, + "name": { + "description": "The name of the hub.", + "type": "string", + "examples": ["US COVID-19 Forecast Hub​"] + }, + "maintainer": { + "description": "The entity that maintains and runs the hub.", + "type": "string", + "examples": ["The Consortium of Infectious Disease Modeling Hubs"] + }, + "contact": { + "description": "The name and email of a human being who serves as a point of contact for the hub.", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "repository_host": { + "description": "The name of the web host for the hub repository", + "type": "string", + "enum": [ + "GitHub" + ] + }, + "repository_url": { + "description": "The url for the hub repository.", + "type": "string", + "examples": ["https://github.com/reichlab/covid19-forecast-hub"] + }, + "zoltar_project_id": { + "description": "The project id of the Hub in Zoltar", + "type": "integer", + "examples": [44] + }, + "hub_models": { + "description": "Array of ensemble and baseline models produced by the hub", + "type": "array", + "items": { + "type": "object", + "properties": { + "team_abbr": { + "description": "Abbreviated team name of the hub", + "type": "string", + "pattern": "^[a-zA-Z0-9_+]+$", + "maxLength": 16 + }, + "model_abbr": { + "description": "Abbreviated name of the model", + "type": "string", + "pattern": "^[a-zA-Z0-9_+]+$", + "maxLength": 16 + }, + "model_type": { + "description": "The type of model: baseline or ensemble", + "type": "string", + "enum": [ + "baseline", + "ensemble" + ] + } + } + } + }, + "citation": { + "description": "One or more citations for the hub.", + "type": "string", + "examples": ["Cramer, E.Y., Huang, Y., Wang, Y. et al. The United States COVID-19 Forecast Hub dataset. Sci Data 9, 462 (2022). https://doi.org/10.1038/s41597-022-01517-w"] + }, + "file_format": { + "description": "Accepted file formats of model output files.", + "examples": [ + ["arrow", "parquet"], + ["csv"] + ], + "type": "array", + "items": { + "type": "string", + "enum": [ + "csv", + "parquet", + "arrow" + ] + } + }, + "timezone": { + "description": "Hub timezone in TZ database name format. Used primarily for determining exact time of submission deadlines.", + "examples": [ + "Africa/Cairo", + "America/Sao_Paulo", + "Asia/Bangkok", + "US/Eastern", + "Europe/Berlin" + ], + "type": "string", + "enum": [ + "Africa/Abidjan", + "Africa/Accra", + "Africa/Addis_Ababa", + "Africa/Algiers", + "Africa/Asmara", + "Africa/Asmera", + "Africa/Bamako", + "Africa/Bangui", + "Africa/Banjul", + "Africa/Bissau", + "Africa/Blantyre", + "Africa/Brazzaville", + "Africa/Bujumbura", + "Africa/Cairo", + "Africa/Casablanca", + "Africa/Ceuta", + "Africa/Conakry", + "Africa/Dakar", + "Africa/Dar_es_Salaam", + "Africa/Djibouti", + "Africa/Douala", + "Africa/El_Aaiun", + "Africa/Freetown", + "Africa/Gaborone", + "Africa/Harare", + "Africa/Johannesburg", + "Africa/Juba", + "Africa/Kampala", + "Africa/Khartoum", + "Africa/Kigali", + "Africa/Kinshasa", + "Africa/Lagos", + "Africa/Libreville", + "Africa/Lome", + "Africa/Luanda", + "Africa/Lubumbashi", + "Africa/Lusaka", + "Africa/Malabo", + "Africa/Maputo", + "Africa/Maseru", + "Africa/Mbabane", + "Africa/Mogadishu", + "Africa/Monrovia", + "Africa/Nairobi", + "Africa/Ndjamena", + "Africa/Niamey", + "Africa/Nouakchott", + "Africa/Ouagadougou", + "Africa/Porto-Novo", + "Africa/Sao_Tome", + "Africa/Timbuktu", + "Africa/Tripoli", + "Africa/Tunis", + "Africa/Windhoek", + "America/Adak", + "America/Anchorage", + "America/Anguilla", + "America/Antigua", + "America/Araguaina", + "America/Argentina/Buenos_Aires", + "America/Argentina/Catamarca", + "America/Argentina/ComodRivadavia", + "America/Argentina/Cordoba", + "America/Argentina/Jujuy", + "America/Argentina/La_Rioja", + "America/Argentina/Mendoza", + "America/Argentina/Rio_Gallegos", + "America/Argentina/Salta", + "America/Argentina/San_Juan", + "America/Argentina/San_Luis", + "America/Argentina/Tucuman", + "America/Argentina/Ushuaia", + "America/Aruba", + "America/Asuncion", + "America/Atikokan", + "America/Atka", + "America/Bahia", + "America/Bahia_Banderas", + "America/Barbados", + "America/Belem", + "America/Belize", + "America/Blanc-Sablon", + "America/Boa_Vista", + "America/Bogota", + "America/Boise", + "America/Buenos_Aires", + "America/Cambridge_Bay", + "America/Campo_Grande", + "America/Cancun", + "America/Caracas", + "America/Catamarca", + "America/Cayenne", + "America/Cayman", + "America/Chicago", + "America/Chihuahua", + "America/Coral_Harbour", + "America/Cordoba", + "America/Costa_Rica", + "America/Creston", + "America/Cuiaba", + "America/Curacao", + "America/Danmarkshavn", + "America/Dawson", + "America/Dawson_Creek", + "America/Denver", + "America/Detroit", + "America/Dominica", + "America/Edmonton", + "America/Eirunepe", + "America/El_Salvador", + "America/Ensenada", + "America/Fort_Nelson", + "America/Fort_Wayne", + "America/Fortaleza", + "America/Glace_Bay", + "America/Godthab", + "America/Goose_Bay", + "America/Grand_Turk", + "America/Grenada", + "America/Guadeloupe", + "America/Guatemala", + "America/Guayaquil", + "America/Guyana", + "America/Halifax", + "America/Havana", + "America/Hermosillo", + "America/Indiana/Indianapolis", + "America/Indiana/Knox", + "America/Indiana/Marengo", + "America/Indiana/Petersburg", + "America/Indiana/Tell_City", + "America/Indiana/Vevay", + "America/Indiana/Vincennes", + "America/Indiana/Winamac", + "America/Indianapolis", + "America/Inuvik", + "America/Iqaluit", + "America/Jamaica", + "America/Jujuy", + "America/Juneau", + "America/Kentucky/Louisville", + "America/Kentucky/Monticello", + "America/Knox_IN", + "America/Kralendijk", + "America/La_Paz", + "America/Lima", + "America/Los_Angeles", + "America/Louisville", + "America/Lower_Princes", + "America/Maceio", + "America/Managua", + "America/Manaus", + "America/Marigot", + "America/Martinique", + "America/Matamoros", + "America/Mazatlan", + "America/Mendoza", + "America/Menominee", + "America/Merida", + "America/Metlakatla", + "America/Mexico_City", + "America/Miquelon", + "America/Moncton", + "America/Monterrey", + "America/Montevideo", + "America/Montreal", + "America/Montserrat", + "America/Nassau", + "America/New_York", + "America/Nipigon", + "America/Nome", + "America/Noronha", + "America/North_Dakota/Beulah", + "America/North_Dakota/Center", + "America/North_Dakota/New_Salem", + "America/Nuuk", + "America/Ojinaga", + "America/Panama", + "America/Pangnirtung", + "America/Paramaribo", + "America/Phoenix", + "America/Port_of_Spain", + "America/Port-au-Prince", + "America/Porto_Acre", + "America/Porto_Velho", + "America/Puerto_Rico", + "America/Punta_Arenas", + "America/Rainy_River", + "America/Rankin_Inlet", + "America/Recife", + "America/Regina", + "America/Resolute", + "America/Rio_Branco", + "America/Rosario", + "America/Santa_Isabel", + "America/Santarem", + "America/Santiago", + "America/Santo_Domingo", + "America/Sao_Paulo", + "America/Scoresbysund", + "America/Shiprock", + "America/Sitka", + "America/St_Barthelemy", + "America/St_Johns", + "America/St_Kitts", + "America/St_Lucia", + "America/St_Thomas", + "America/St_Vincent", + "America/Swift_Current", + "America/Tegucigalpa", + "America/Thule", + "America/Thunder_Bay", + "America/Tijuana", + "America/Toronto", + "America/Tortola", + "America/Vancouver", + "America/Virgin", + "America/Whitehorse", + "America/Winnipeg", + "America/Yakutat", + "America/Yellowknife", + "Antarctica/Casey", + "Antarctica/Davis", + "Antarctica/DumontDUrville", + "Antarctica/Macquarie", + "Antarctica/Mawson", + "Antarctica/McMurdo", + "Antarctica/Palmer", + "Antarctica/Rothera", + "Antarctica/South_Pole", + "Antarctica/Syowa", + "Antarctica/Troll", + "Antarctica/Vostok", + "Arctic/Longyearbyen", + "Asia/Aden", + "Asia/Almaty", + "Asia/Amman", + "Asia/Anadyr", + "Asia/Aqtau", + "Asia/Aqtobe", + "Asia/Ashgabat", + "Asia/Ashkhabad", + "Asia/Atyrau", + "Asia/Baghdad", + "Asia/Bahrain", + "Asia/Baku", + "Asia/Bangkok", + "Asia/Barnaul", + "Asia/Beirut", + "Asia/Bishkek", + "Asia/Brunei", + "Asia/Calcutta", + "Asia/Chita", + "Asia/Choibalsan", + "Asia/Chongqing", + "Asia/Chungking", + "Asia/Colombo", + "Asia/Dacca", + "Asia/Damascus", + "Asia/Dhaka", + "Asia/Dili", + "Asia/Dubai", + "Asia/Dushanbe", + "Asia/Famagusta", + "Asia/Gaza", + "Asia/Harbin", + "Asia/Hebron", + "Asia/Ho_Chi_Minh", + "Asia/Hong_Kong", + "Asia/Hovd", + "Asia/Irkutsk", + "Asia/Istanbul", + "Asia/Jakarta", + "Asia/Jayapura", + "Asia/Jerusalem", + "Asia/Kabul", + "Asia/Kamchatka", + "Asia/Karachi", + "Asia/Kashgar", + "Asia/Kathmandu", + "Asia/Katmandu", + "Asia/Khandyga", + "Asia/Kolkata", + "Asia/Krasnoyarsk", + "Asia/Kuala_Lumpur", + "Asia/Kuching", + "Asia/Kuwait", + "Asia/Macao", + "Asia/Macau", + "Asia/Magadan", + "Asia/Makassar", + "Asia/Manila", + "Asia/Muscat", + "Asia/Nicosia", + "Asia/Novokuznetsk", + "Asia/Novosibirsk", + "Asia/Omsk", + "Asia/Oral", + "Asia/Phnom_Penh", + "Asia/Pontianak", + "Asia/Pyongyang", + "Asia/Qatar", + "Asia/Qostanay", + "Asia/Qyzylorda", + "Asia/Rangoon", + "Asia/Riyadh", + "Asia/Saigon", + "Asia/Sakhalin", + "Asia/Samarkand", + "Asia/Seoul", + "Asia/Shanghai", + "Asia/Singapore", + "Asia/Srednekolymsk", + "Asia/Taipei", + "Asia/Tashkent", + "Asia/Tbilisi", + "Asia/Tehran", + "Asia/Tel_Aviv", + "Asia/Thimbu", + "Asia/Thimphu", + "Asia/Tokyo", + "Asia/Tomsk", + "Asia/Ujung_Pandang", + "Asia/Ulaanbaatar", + "Asia/Ulan_Bator", + "Asia/Urumqi", + "Asia/Ust-Nera", + "Asia/Vientiane", + "Asia/Vladivostok", + "Asia/Yakutsk", + "Asia/Yangon", + "Asia/Yekaterinburg", + "Asia/Yerevan", + "Atlantic/Azores", + "Atlantic/Bermuda", + "Atlantic/Canary", + "Atlantic/Cape_Verde", + "Atlantic/Faeroe", + "Atlantic/Faroe", + "Atlantic/Jan_Mayen", + "Atlantic/Madeira", + "Atlantic/Reykjavik", + "Atlantic/South_Georgia", + "Atlantic/St_Helena", + "Atlantic/Stanley", + "Australia/ACT", + "Australia/Adelaide", + "Australia/Brisbane", + "Australia/Broken_Hill", + "Australia/Canberra", + "Australia/Currie", + "Australia/Darwin", + "Australia/Eucla", + "Australia/Hobart", + "Australia/LHI", + "Australia/Lindeman", + "Australia/Lord_Howe", + "Australia/Melbourne", + "Australia/North", + "Australia/NSW", + "Australia/Perth", + "Australia/Queensland", + "Australia/South", + "Australia/Sydney", + "Australia/Tasmania", + "Australia/Victoria", + "Australia/West", + "Australia/Yancowinna", + "Brazil/Acre", + "Brazil/DeNoronha", + "Brazil/East", + "Brazil/West", + "Canada/Atlantic", + "Canada/Central", + "Canada/Eastern", + "Canada/Mountain", + "Canada/Newfoundland", + "Canada/Pacific", + "Canada/Saskatchewan", + "Canada/Yukon", + "Chile/Continental", + "Chile/EasterIsland", + "Europe/Amsterdam", + "Europe/Andorra", + "Europe/Astrakhan", + "Europe/Athens", + "Europe/Belfast", + "Europe/Belgrade", + "Europe/Berlin", + "Europe/Bratislava", + "Europe/Brussels", + "Europe/Bucharest", + "Europe/Budapest", + "Europe/Busingen", + "Europe/Chisinau", + "Europe/Copenhagen", + "Europe/Dublin", + "Europe/Gibraltar", + "Europe/Guernsey", + "Europe/Helsinki", + "Europe/Isle_of_Man", + "Europe/Istanbul", + "Europe/Jersey", + "Europe/Kaliningrad", + "Europe/Kiev", + "Europe/Kirov", + "Europe/Kyiv", + "Europe/Lisbon", + "Europe/Ljubljana", + "Europe/London", + "Europe/Luxembourg", + "Europe/Madrid", + "Europe/Malta", + "Europe/Mariehamn", + "Europe/Minsk", + "Europe/Monaco", + "Europe/Moscow", + "Europe/Nicosia", + "Europe/Oslo", + "Europe/Paris", + "Europe/Podgorica", + "Europe/Prague", + "Europe/Riga", + "Europe/Rome", + "Europe/Samara", + "Europe/San_Marino", + "Europe/Sarajevo", + "Europe/Saratov", + "Europe/Simferopol", + "Europe/Skopje", + "Europe/Sofia", + "Europe/Stockholm", + "Europe/Tallinn", + "Europe/Tirane", + "Europe/Tiraspol", + "Europe/Ulyanovsk", + "Europe/Uzhgorod", + "Europe/Vaduz", + "Europe/Vatican", + "Europe/Vienna", + "Europe/Vilnius", + "Europe/Volgograd", + "Europe/Warsaw", + "Europe/Zagreb", + "Europe/Zaporozhye", + "Europe/Zurich", + "Indian/Antananarivo", + "Indian/Chagos", + "Indian/Christmas", + "Indian/Cocos", + "Indian/Comoro", + "Indian/Kerguelen", + "Indian/Mahe", + "Indian/Maldives", + "Indian/Mauritius", + "Indian/Mayotte", + "Indian/Reunion", + "Mexico/BajaNorte", + "Mexico/BajaSur", + "Mexico/General", + "Pacific/Apia", + "Pacific/Auckland", + "Pacific/Bougainville", + "Pacific/Chatham", + "Pacific/Chuuk", + "Pacific/Easter", + "Pacific/Efate", + "Pacific/Enderbury", + "Pacific/Fakaofo", + "Pacific/Fiji", + "Pacific/Funafuti", + "Pacific/Galapagos", + "Pacific/Gambier", + "Pacific/Guadalcanal", + "Pacific/Guam", + "Pacific/Honolulu", + "Pacific/Johnston", + "Pacific/Kanton", + "Pacific/Kiritimati", + "Pacific/Kosrae", + "Pacific/Kwajalein", + "Pacific/Majuro", + "Pacific/Marquesas", + "Pacific/Midway", + "Pacific/Nauru", + "Pacific/Niue", + "Pacific/Norfolk", + "Pacific/Noumea", + "Pacific/Pago_Pago", + "Pacific/Palau", + "Pacific/Pitcairn", + "Pacific/Pohnpei", + "Pacific/Ponape", + "Pacific/Port_Moresby", + "Pacific/Rarotonga", + "Pacific/Saipan", + "Pacific/Samoa", + "Pacific/Tahiti", + "Pacific/Tarawa", + "Pacific/Tongatapu", + "Pacific/Truk", + "Pacific/Wake", + "Pacific/Wallis", + "Pacific/Yap", + "US/Alaska", + "US/Aleutian", + "US/Arizona", + "US/Central", + "US/East-Indiana", + "US/Eastern", + "US/Hawaii", + "US/Indiana-Starke", + "US/Michigan", + "US/Mountain", + "US/Pacific", + "US/Samoa" + ] + }, + "model_output_dir": { + "description": "Relative path, with respect to the root of hub, to directory containing model output data. If property not supplied, the default path `model_output/` assumed", + "default": "model_output", + "examples": [ + "forecasts", + "data/model_output" + ], + "type": "string" + }, + "cloud": { + "description": "Optional settings for cloud-enabled hubs", + "type": "object", + "properties": { + "enabled": {"type": "boolean"}, + "host": { + "type": "object", + "required": ["name", "storage_service", "storage_location"], + "properties": { + "name": { + "description": "Name of the cloud storage provider.", + "type": "string", + "enum": ["aws"] + }, + "storage_service": { + "description": "Name of the cloud service used as backend storage", + "type": "string", + "enum": ["s3"] + }, + "storage_location": { + "description": "Cloud storage location, excluding prefix (for example, AWS S3 bucket name).", + "type": "string" + } + } + } + }, + "if": { + "properties": { + "enabled": {"const": true} + } + }, + "then": { + "required": ["host"] + }, + "examples": [ + { + "enabled": true, + "host": { + "name": "aws", + "storage_service": "s3", + "storage_location": "hub-s3-bucket-name" + } + } + ] + } + }, + "required": [ + "schema_version", + "name", + "maintainer", + "contact", + "repository_url", + "file_format", + "timezone" + ], + "additionalProperties": false +} diff --git a/v2.1.0/tasks-schema.json b/v2.1.0/tasks-schema.json new file mode 100644 index 0000000..7eb874a --- /dev/null +++ b/v2.1.0/tasks-schema.json @@ -0,0 +1,1441 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/tasks-schema.json", + "title": "Schema for Modeling Hub model task definitions", + "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", + "type": "object", + "properties": { + "schema_version": { + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/tasks-schema.json"], + "type": "string", + "format": "uri" + }, + "rounds": { + "description": "Array of modeling round properties", + "type": "array", + "items": { + "type": "object", + "description": "Individual modeling round properties", + "properties": { + "round_id_from_variable": { + "description": "Whether the round identifier is encoded by a task id variable in the data.", + "type": "boolean" + }, + "round_id": { + "description": "Round identifier. If round_id_from_variable = true, round_id should be the name of a task id variable present in all sets of modeling task specifications", + "examples": [ + "round-1", + "2022-11-05", + "origin_date" + ], + "type": "string" + }, + "round_name": { + "description": "An optional round name. This can be useful for internal referencing of rounds, for examples, when a date is used as round_id but hub maintainers and teams also refer to rounds as round-1, round-2 etc.", + "examples": [ + "round-1" + ], + "type": "string" + }, + "model_tasks": { + "type": "array", + "description": "Array defining round-specific modeling tasks. Can contain one or more groups of modeling tasks per round where each group is defined by a distinct combination of values of task id variables.", + "items": { + "type": "object", + "properties": { + "task_ids": { + "description": "Group of valid values of task id variables. A set of valid tasks corresponding to this group is formed by taking all combinations of these values.", + "type": "object", + "properties": { + "origin_date": { + "description": "An object containing arrays of required and optional unique origin dates. Origin date defines the starting point that can be used for calculating a target_date via the formula target_date = origin_date + horizon x time_units_per_horizon (e.g., with weekly data, target_date is calculated as origin_date + horizon x 7 days)", + "examples": [{ + "required": null, + "optional": [ + "2022-11-05", + "2022-11-12", + "2022-11-19" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of origin date unique identifiers that must be present for submission to be valid. Can be null if no origin dates are required and all valid origin dates are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + }, + "optional": { + "description": "Array of valid but not required unique origin date identifiers. Can be null if all origin dates are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "forecast_date": { + "description": "An object containing arrays of required and optional unique forecast dates. Forecast date usually defines the date that a model is run to produce a forecast.", + "examples": [{ + "required": null, + "optional": [ + "2022-11-05", + "2022-11-12", + "2022-11-19" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of forecast date unique identifiers that must be present for submission to be valid. Can be null if no forecast dates are required and all valid forecast dates are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + }, + "optional": { + "description": "Array of valid but not required unique forecast date identifiers. Can be null if all forecast dates are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "scenario_id": { + "description": "An object containing arrays of required and optional unique identifiers of each valid scenario.", + "examples": [{ + "required": null, + "optional": [ + 1, + 2, + 3, + 4 + ] + }, + { + "required": null, + "optional": [ + "A-2021-03-28", + "B-2021-03-28", + "A-2021-04-05", + "B-2021-04-05" + ] + } + ], + "type": "object", + "properties": { + "required": { + "description": "Array of identifiers of scenarios that must be present in a valid submission. Can be null if no scenario ids are required and all valid ids are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": [ + "integer", + "string" + ] + } + }, + "optional": { + "description": "Array of identifiers of valid but not required scenarios. Can be null if all scenarios are required and are specified in the required property.", + "type": [ + "null", + "array" + ], + "uniqueItems": true, + "items": { + "type": [ + "integer", + "string" + ] + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "location": { + "description": "An object containing arrays of required and optional unique identifiers for each valid location, e.g. country codes, FIPS state or county level code etc.", + "examples": [{ + "required": "US", + "optional": [ + "01", + "02", + "04", + "05", + "06", + "08", + "09", + "10", + "11", + "12", + "13", + "15", + "16", + "17", + "18", + "19", + "20", + "21", + "22", + "23", + "24", + "25", + "26", + "27", + "28", + "29", + "30", + "31", + "32", + "33", + "34", + "35", + "36", + "37", + "38", + "39", + "40", + "41", + "42", + "44", + "45", + "46", + "47", + "48", + "49", + "50", + "51", + "53", + "54", + "55", + "56" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of location unique identifiers that must be present for submission to be valid. Can be null if no locations are required and all valid locations are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique location identifiers. Can be null if all locations are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "target": { + "description": "An object containing arrays of required and optional unique identifiers for each valid target. Usually represents a single task ID target key variable.", + "type": "object", + "examples": [{ + "required": null, + "optional": [ + "inc hosp", + "inc case", + "inc death" + ] + }, { + "required": ["peak week inc hosp"], + "optional": null + }], + "properties": { + "required": { + "description": "Array of target unique identifiers that must be present for submission to be valid. Can be null if no targets are required and all valid targets are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique target identifiers. Can be null if all targets are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "target_variable": { + "description": "An object containing arrays of required and optional unique identifiers for each valid target variable. Usually forms part of a pair of task ID target key variables (along with target_outcome) which combine to define individual targets.", + "type": "object", + "examples": [{ + "required": null, + "optional": ["hosp", "death", "case"] + }, { + "required": ["hosp"], + "optional": ["case"] + }], + "properties": { + "required": { + "description": "Array of target variable unique identifiers that must be present for submission to be valid. Can be null if no target variables are required and all valid target variables are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique target variable identifiers. Can be null if all target variables are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "target_outcome": { + "description": "An object containing arrays of required and optional unique identifiers for each valid target outcome. Usually forms part of a pair of task ID target key variables (along with target_variable) which combine to define individual targets.", + "type": "object", + "examples": [{ + "required": ["inc"], + "optional": null + }, { + "required": ["inc"], + "optional": ["cum"] + }], + "properties": { + "required": { + "description": "Array of target outcome unique identifiers that must be present for submission to be valid. Can be null if no target outcomes are required and all valid target outcomes are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique target outcome identifiers. Can be null if all target outcomes are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "target_date": { + "description": "An object containing arrays of required and optional unique target dates. For short-term forecasts, the target_date specifies the date of occurrence of the outcome of interest. For instance, if models are requested to forecast the number of hospitalizations that will occur on 2022-07-15, the target_date is 2022-07-15", + "examples": [{ + "required": null, + "optional": [ + "2022-11-12", + "2022-11-19", + "2022-11-26" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of target date unique identifiers that must be present for submission to be valid. Can be null if no target dates are required and all valid target dates are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + }, + "optional": { + "description": "Array of valid but not required unique target date identifiers. Can be null if all target dates are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "target_end_date": { + "description": "An object containing arrays of required and optional unique target end dates. For short-term forecasts, the target_end_date specifies the date of occurrence of the outcome of interest. For instance, if models are requested to forecast the number of hospitalizations that will occur on 2022-07-15, the target_end_date is 2022-07-15", + "examples": [{ + "required": null, + "optional": [ + "2022-11-12", + "2022-11-19", + "2022-11-26" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of target end date unique identifiers that must be present for submission to be valid. Can be null if no target end dates are required and all valid target end dates are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + }, + "optional": { + "description": "Array of valid but not required unique target end date identifiers. Can be null if all target end dates are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string", + "format": "date" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "horizon": { + "description": "An object containing arrays of required and optional unique horizons. Horizons define the difference between the target_date and the origin_date in time units specified by the hub (e.g., may be days, weeks, or months)", + "examples": [{ + "required": null, + "optional": [ + 1, + 2, + 3, + 4 + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of horizon unique identifiers that must be present for submission to be valid. Can be null if no horizons are required and all valid horizons are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": [ + "integer", + "string" + ] + } + }, + "optional": { + "description": "Array of valid but not required unique horizon identifiers. Can be null if all horizons are required and are specified in the required property.", + "type": [ + "null", + "array" + ], + "uniqueItems": true, + "items": { + "type": [ + "integer", + "string" + ] + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "age_group": { + "type": "object", + "description": "An object containing arrays of required and optional unique identifiers for age groups", + "examples": [{ + "required": [ + "0-5", + "6-18", + "19-24", + "25-64", + "65+" + ], + "optional": null + }], + "properties": { + "required": { + "description": "Array of age group unique identifiers that must be present for submission to be valid. Can be null if no age groups are required and all valid age groups are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique age group identifiers. Can be null if all age group are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + } + }, + "additionalProperties": { + "type": "object", + "description": "An object containing arrays of required and optional unique values for a custom Task ID", + "properties": { + "required": { + "description": "Array of custom Task ID unique values that must be present for submission to be valid. Can be null if no values are required and all valid values are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true + }, + "optional": { + "description": "Array of valid but not required unique custom Task ID values. Can be null if all values are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true + } + }, + "required": [ + "required", + "optional" + ] + } + }, + "output_type": { + "type": "object", + "description": "Object defining valid model output types for a given modeling task. The name of each property corresponds to valid values in column 'output_type' while the 'output_type_id' property of each output type defines the valid values of the 'output_type_id' column and the 'value' property defines the valid values of the 'value' column for a given output type.", + "properties": { + "mean": { + "type": "object", + "description": "Object defining the mean of the predictive distribution output type.", + "properties": { + "output_type_id": { + "description": "output_type_id is not meaningful for a mean output_type. The property is primarily used to determine whether mean is a required or optional output type through properties required and optional. If mean is a required output type, the required property must be an array containing the single string element 'NA' and the optional property must be set to null. If mean is an optional output type, the optional property must be an array containing the single string element 'NA' and the required property must be set to null", + "examples": [{ + "required": [ + "NA" + ], + "optional": null + }, + { + "required": null, + "optional": [ + "NA" + ] + } + ], + "type": "object", + "oneOf": [{ + "properties": { + "required": { + "description": "When mean is required, property set to single element 'NA' array", + "type": "array", + "items": { + "const": "NA", + "maxItems": 1 + } + }, + "optional": { + "description": "When mean is required, property set to null", + "type": "null" + } + } + }, + { + "properties": { + "required": { + "description": "When mean is optional, property set to null", + "type": "null" + }, + "optional": { + "description": "When mean is optional, property set to single element 'NA' array", + "type": "array", + "items": { + "const": "NA", + "maxItems": 1 + } + } + } + } + ], + "required": [ + "required", + "optional" + ] + }, + "value": { + "type": "object", + "description": "Object defining the characteristics of valid mean values.", + "examples": [{ + "type": "double", + "minimum": 0 + }], + "properties": { + "type": { + "description": "Data type of mean values.", + "type": "string", + "enum": [ + "double", + "integer" + ] + }, + "minimum": { + "description": "The minimum inclusive valid mean value", + "type": [ + "number", + "integer" + ] + }, + "maximum": { + "description": "the maximum inclusive valid mean value", + "type": [ + "number", + "integer" + ] + } + }, + "required": [ + "type" + ] + } + }, + "required": [ + "output_type_id", + "value" + ] + }, + "median": { + "type": "object", + "description": "Object defining the median of the predictive distribution output type", + "properties": { + "output_type_id": { + "description": "output_type_id is not meaningful for a median output_type. The property is primarily used to determine whether median is a required or optional output type through properties required and optional. If median is a required output type, the required property must be an array containing the single string element 'NA' and the optional property must be set to null. If median is an optional output type, the optional property must be an array containing the single string element 'NA' and the required property must be set to null", + "examples": [{ + "required": [ + "NA" + ], + "optional": null + }, + { + "required": null, + "optional": [ + "NA" + ] + } + ], + "type": "object", + "oneOf": [{ + "properties": { + "required": { + "description": "When median is required, property set to single element 'NA' array", + "type": "array", + "items": { + "const": "NA", + "maxItems": 1 + } + }, + "optional": { + "description": "When median is required, property set to null", + "type": "null" + } + } + }, + { + "properties": { + "required": { + "description": "When median is optional, property set to null", + "type": "null" + }, + "optional": { + "description": "When median is optional, property set to single element 'NA' array", + "type": "array", + "items": { + "const": "NA", + "maxItems": 1 + } + } + } + } + ], + "required": [ + "required", + "optional" + ] + }, + "value": { + "type": "object", + "description": "Object defining the characteristics of valid median values", + "examples": [{ + "type": "double", + "minimum": 0 + }], + "properties": { + "type": { + "description": "Data type of median values", + "type": "string", + "enum": [ + "double", + "integer" + ] + }, + "minimum": { + "description": "The minimum inclusive valid median value", + "type": [ + "number", + "integer" + ] + }, + "maximum": { + "description": "the maximum inclusive valid median value", + "type": [ + "number", + "integer" + ] + } + }, + "required": [ + "type" + ] + } + }, + "required": [ + "output_type_id", + "value" + ] + }, + "quantile": { + "description": "Object defining the quantiles of the predictive distribution output type.", + "type": "object", + "properties": { + "output_type_id": { + "description": "Object containing required and optional arrays defining the probability levels at which quantiles of the predictive distribution will be recorded.", + "examples": [{ + "required": [ + 0.25, + 0.5, + 0.75 + ], + "optional": [ + 0.1, + 0.2, + 0.3, + 0.4, + 0.6, + 0.7, + 0.8, + 0.9 + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of unique probability levels between 0 and 1 that must be present for submission to be valid. Can be null if no probability levels are required and all valid probability levels are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + }, + "optional": { + "description": "Array of valid but not required unique probability levels. Can be null if all probability levels are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "value": { + "type": "object", + "description": "Object defining the characteristics of valid quantiles of the predictive distribution at a given probability level.", + "properties": { + "type": { + "description": "Data type of quantile values.", + "examples": [ + "double" + ], + "type": "string", + "enum": [ + "double", + "integer" + ] + }, + "minimum": { + "description": "The minimum inclusive valid quantile value (optional).", + "examples": [ + 0 + ], + "type": [ + "number", + "integer" + ] + }, + "maximum": { + "description": "The maximum inclusive valid quantile value (optional).", + "type": [ + "number", + "integer" + ] + } + }, + "required": [ + "type" + ] + } + }, + "required": [ + "output_type_id", + "value" + ] + }, + "cdf": { + "description": "Object defining the cumulative distribution function of the predictive distribution output type.", + "type": "object", + "properties": { + "output_type_id": { + "description": "Object containing required and optional arrays defining possible values of the target variable at which values of the cumulative distribution function of the predictive distribution will be recorded.", + "examples": [{ + "required": [ + 10.0, + 20.0 + ], + "optional": null + }, + { + "required": [ + "EW202240", + "EW202241", + "EW202242", + "EW202243", + "EW202244", + "EW202245", + "EW202246", + "EW202247" + ], + "optional": null + } + ], + "type": "object", + "properties": { + "required": { + "description": "Array of unique target values that must be present for submission to be valid. Can be null if no target values are required and all valid target values are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "oneOf": [{ + "type": [ + "number", + "integer" + ], + "minimum": 0 + }, + { + "type": "string", + "pattern": "^EW[0-9]{6}", + "minLength": 8, + "maxLength": 8 + } + ] + } + }, + "optional": { + "description": "Array of valid but not required unique target values. Can be null if all target values are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "oneOf": [{ + "type": [ + "number", + "integer" + ], + "minimum": 0 + }, + { + "type": "string", + "pattern": "^EW[0-9]{6}", + "minLength": 8, + "maxLength": 8 + } + ] + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "value": { + "type": "object", + "description": "Object defining the characteristics of valid values of the cumulative distribution function at a given target value.", + "properties": { + "type": { + "description": "Data type of cumulative distribution function values.", + "examples": [ + "double" + ], + "const": "double" + }, + "minimum": { + "description": "The minimum inclusive valid cumulative distribution function value. Must be 0.", + "const": 0 + }, + "maximum": { + "description": "The maximum inclusive valid cumulative distribution function value. Must be 1.", + "const": 1 + } + }, + "required": [ + "type", + "minimum", + "maximum" + ] + } + }, + "required": [ + "output_type_id", + "value" + ] + }, + "pmf": { + "description": "Object defining a probability mass function for a discrete variable output type. Includes nominal, binary and ordinal variable types.", + "type": "object", + "properties": { + "output_type_id": { + "description": "Object containing required and optional arrays specifying valid categories of a discrete variable.", + "examples": [{ + "required": null, + "optional": [ + "low", + "moderate", + "high", + "extreme" + ] + }], + "type": "object", + "properties": { + "required": { + "description": "Array of unique categories of a discrete variable that must be present for submission to be valid. Can be null if no categories are required and all valid categories are specified in the optional property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + }, + "optional": { + "description": "Array of valid but not required unique categories of a discrete variable. Can be null if all categories are required and are specified in the required property.", + "type": [ + "array", + "null" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + } + }, + "required": [ + "required", + "optional" + ] + }, + "value": { + "type": "object", + "description": "Object defining valid values of the probability mass function of the predictive distribution for a given category of a discrete outcome variable.", + "examples": [{ + "type": "double", + "minimum": 0, + "maximum": 1 + }], + "properties": { + "type": { + "description": "Data type of the probability mass function values.", + "const": "double" + }, + "minimum": { + "description": "The minimum inclusive valid probability mass function value. Must be 0.", + "const": 0 + }, + "maximum": { + "description": "The maximum inclusive valid probability mass function value. Must be 1.", + "const": 1 + } + }, + "required": [ + "type", + "minimum", + "maximum" + ] + } + }, + "required": [ + "output_type_id", + "value" + ] + }, + "sample": { + "description": "Object defining a sample output type.", + "type": "object", + "properties": { + "output_type_id_params": { + "description": "Object containing parameters specifying how samples where drawn.", + "examples": [{ + "output_type_id_params": { + "is_required": true, + "type": "integer", + "min_samples_per_task": 100, + "max_samples_per_task": 100 + } + }, { + "output_type_id_params": { + "is_required": false, + "type": "character", + "max_length": 6, + "min_samples_per_task": 100, + "max_samples_per_task": 500, + "compound_taskid_set" : ["origin_date", "horizon", "location", "variant"] + } + }], + "type": "object", + "properties": { + "is_required": { + "description": "Boolean. Whether inclusion of samples are required for the submission to be valid", + "type": "boolean" + }, + "type": { + "description": "Data type of sample indices.", + "type": "string", + "enum": [ + "character", + "integer" + ] + }, + "max_length": { + "description": "Required only if 'type' is 'character'. Positive integer representing the maximum number of characters in a sample index. Ignored if 'type' is 'integer'.", + "type": "integer", + "minimum": 1 + }, + "min_samples_per_task": { + "description": "The minimum number of samples per individual task.", + "type": "integer", + "minimum": 1 + }, + "max_samples_per_task": { + "description": "The maximum number of samples per individual task.", + "type": "integer", + "minimum": 1 + }, + "compound_taskid_set": { + "description": "Optional. Specifies whether validation should factor in the presence of a compound modeling task. Each item of the array must be a task id variable name. If unspecified, defaults to all task ID variables.", + "type": [ + "array" + ], + "uniqueItems": true, + "items": { + "type": "string" + } + + } + }, + "required": [ + "is_required", + "type", + "min_samples_per_task", + "max_samples_per_task" + ], + "if": { + "properties": { + "type": { "const": "character" } + } + }, + "then": { + "required": ["max_length"] + } + }, + "value": { + "type": "object", + "description": "Object defining valid values of samples from the predictive distribution for a given sample index. Depending on the Hub specification, samples with the same sample index (specified by the output_type_id) may be assumed to correspond to a joint distribution across multiple levels of the task id variables. See Hub documentation for details.", + "properties": { + "type": { + "description": "Data type of sample value from the predictive distribution.", + "examples": [{ + "type": "double" + }], + "type": "string", + "enum": [ + "double", + "integer" + ] + }, + "minimum": { + "description": "The minimum inclusive valid sample value from the predictive distribution" + }, + "maximum": { + "description": "The maximum inclusive valid sample value from the predictive distribution" + } + }, + "required": [ + "type" + ] + } + }, + "required": [ + "output_type_id_params", + "value" + ] + } + }, + "additionalProperties": false + }, + "target_metadata": { + "description": "Array of objects containing metadata about each unique target, one object for each unique target value.", + "type": "array", + "items": { + "type": "object", + "description": "Object containg metadata about a single unique target.", + "properties": { + "target_id": { + "description": "Short description that uniquely identifies the target.", + "examples": [ + "inc hosp", + "peak week hosp" + ], + "type": "string", + "maxLength": 30 + }, + "target_name": { + "description": "A longer human readable target description that could be used, for example, as a visualisation axis label.", + "examples": [ + "Weekly incident influenza hospitalizations", + "Peak week for incident influenza hospitalizations" + ], + "type": "string", + "maxLength": 100 + }, + "target_units": { + "description": "Unit of observation of the target.", + "examples": [ + "rate per 100,000 population", + "count", + "date" + ], + "type": "string", + "maxLength": 100 + }, + "target_keys": { + "description": "Should be either null, in the case where the target is not specified as a task_id and is specified solely through the target_id target_metadata property or an object with one or more properties, the names of which match task_id variable(s) named within the same model_tasks object. Each property should have one specified value. Each value, or the combination of values if multiple keys are specified, define a single target value.", + "examples": [{ + "target": "inc hosp" + }, + { + "target": "peak week hosp" + }, + { + "target_variable": "hosp", + "target_outcome": "inc" + }, + { + "target_variable": "case", + "target_outcome": "peak week" + }, + null + ], + "type": [ + "object", + "null" + ] + }, + "description": { + "description": "a verbose description of the target that might include information such as the target_measure above, or definitions of a 'rate' or similar.", + "type": "string" + }, + "target_type": { + "description": "Target statistical data type", + "examples": [ + "discrete", + "ordinal" + ], + "type": "string", + "enum": [ + "continuous", + "discrete", + "date", + "binary", + "nominal", + "ordinal", + "compositional" + ] + }, + "is_step_ahead": { + "description": "Whether the target is part of a sequence of values", + "examples": [ + true, + false + ], + "type": "boolean" + }, + "time_unit": { + "description": " if is_step_ahead is true, then this is required and defines the unit of time steps. if is_step_ahead is false, then this should be left out and/or will be ignored if present.", + "examples": [ + "week" + ], + "type": "string", + "enum": [ + "day", + "week", + "month" + ] + } + }, + "required": [ + "target_id", + "target_name", + "target_units", + "target_type", + "target_keys", + "is_step_ahead" + ], + "additionalProperties": false, + "if": { + "properties": { + "is_step_ahead": { + "const": true + } + } + }, + "then": { + "required": [ + "time_unit" + ] + } + } + } + }, + "required": [ + "task_ids", + "output_type", + "target_metadata" + ] + } + }, + "submissions_due": { + "description": "Object defining the dates by which model forecasts must be submitted to the hub.", + "examples": [{ + "start": "2022-06-07", + "end": "2022-07-20" + }, + { + "relative_to": "origin_date", + "start": -4, + "end": 2 + } + ], + "type": "object", + "oneOf": [{ + "properties": { + "relative_to": { + "description": "Name of task id variable in relation to which submission start and end dates are calculated.", + "type": "string" + }, + "start": { + "description": "Difference in days between start and origin date.", + "type": "integer" + }, + "end": { + "description": "Difference in days between end and origin date.", + "type": "integer" + } + }, + "required": [ + "relative_to", + "start", + "end" + ] + }, + { + "properties": { + "start": { + "description": "Submission start date.", + "type": "string", + "format": "date" + }, + "end": { + "description": "Submission end date.", + "type": "string", + "format": "date" + } + }, + "required": [ + "start", + "end" + ] + } + ], + "required": [ + "start", + "end" + ] + }, + "last_data_date": { + "description": "The last date with recorded data in the data set used as input to a model.", + "examples": [ + "2022-07-18" + ], + "type": "string", + "format": "date" + }, + "file_format": { + "description": "Accepted file formats of model output files for the round. Overrides the file formats provided in admin.json.", + "examples": [ + ["arrow", "parquet"], + ["csv"] + ], + "type": "array", + "items": { + "type": "string", + "enum": [ + "csv", + "parquet", + "arrow" + ] + } + } + }, + "required": [ + "round_id_from_variable", + "round_id", + "model_tasks", + "submissions_due" + ], + "additionalProperties": false + } + } + }, + "required": [ + "rounds", + "schema_version" + ], + "additionalProperties": false +} From d89e889810e558fbb11a5eb8180548c867b33927 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Mon, 29 Apr 2024 15:32:51 +0300 Subject: [PATCH 02/16] Bump relesease version to breaking v3.0.0 --- {v2.1.0 => v3.0.0}/admin-schema.json | 4 ++-- {v2.1.0 => v3.0.0}/tasks-schema.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) rename {v2.1.0 => v3.0.0}/admin-schema.json (99%) rename {v2.1.0 => v3.0.0}/tasks-schema.json (99%) diff --git a/v2.1.0/admin-schema.json b/v3.0.0/admin-schema.json similarity index 99% rename from v2.1.0/admin-schema.json rename to v3.0.0/admin-schema.json index 060b935..6d4168a 100644 --- a/v2.1.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/admin-schema.json", + "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/admin-schema.json"], + "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/admin-schema.json"], "type": "string", "format": "uri" }, diff --git a/v2.1.0/tasks-schema.json b/v3.0.0/tasks-schema.json similarity index 99% rename from v2.1.0/tasks-schema.json rename to v3.0.0/tasks-schema.json index 7eb874a..dfa8bdb 100644 --- a/v2.1.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.1.0/tasks-schema.json"], + "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/tasks-schema.json"], "type": "string", "format": "uri" }, From 4c239503918f72d01e7cd9a2bacb1edc8fcd5a80 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Mon, 29 Apr 2024 15:37:56 +0300 Subject: [PATCH 03/16] Add v3.0.0 breaking change description to news --- NEWS.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS.md b/NEWS.md index 675bf1c..5e42f82 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,7 @@ +# v3.0.0 + +* Breaking change: introduction of new `sample` output type id schema specification in `tasks.json`. The main breaking change is the removal of the `output_type_id` property in `sample`. Instead, the collection of samples is defined through a new `output_type_id_params` object. + # v2.0.1 * Non-breaking change: introduced an optional `cloud` group to `admin-schema.json` to support cloud-enabled Hubs: From ef43d29636156f700b50e4947dc03a7743ddd503 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Tue, 30 Apr 2024 16:46:44 +0300 Subject: [PATCH 04/16] Add missing sample value type specifications --- v3.0.0/tasks-schema.json | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/v3.0.0/tasks-schema.json b/v3.0.0/tasks-schema.json index dfa8bdb..1f1ee5a 100644 --- a/v3.0.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1190,10 +1190,18 @@ ] }, "minimum": { - "description": "The minimum inclusive valid sample value from the predictive distribution" + "description": "The minimum inclusive valid sample value from the predictive distribution.", + "type": [ + "number", + "integer" + ] }, "maximum": { - "description": "The maximum inclusive valid sample value from the predictive distribution" + "description": "The maximum inclusive valid sample value from the predictive distribution.", + "type": [ + "number", + "integer" + ] } }, "required": [ From 8f9cee36fe5d6674542aaafa5ea13bbab1415c61 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 1 May 2024 11:20:16 +0300 Subject: [PATCH 05/16] Split repository_url property into org name and repository name. Resolves #67 --- NEWS.md | 3 ++- v3.0.0/admin-schema.json | 32 +++++++++++++++++++++----------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/NEWS.md b/NEWS.md index 5e42f82..9aeaf61 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ # v3.0.0 -* Breaking change: introduction of new `sample` output type id schema specification in `tasks.json`. The main breaking change is the removal of the `output_type_id` property in `sample`. Instead, the collection of samples is defined through a new `output_type_id_params` object. +* Breaking change: introduction of new `sample` output type id schema specification in `tasks.json`. The main breaking change is the removal of the `output_type_id` property in `sample`. Instead, the collection of samples is defined through a new `output_type_id_params` object (#70). +* Breaking change: The `repository_url` and `repository_host` properties in `admin.json` have been deprecated in favour of a sigle `repository` object with separate `host`, `owner` and `name` properties (#67). # v2.0.1 diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index 6d4168a..23ef56a 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -34,17 +34,27 @@ } } }, - "repository_host": { - "description": "The name of the web host for the hub repository", - "type": "string", - "enum": [ - "GitHub" - ] - }, - "repository_url": { - "description": "The url for the hub repository.", - "type": "string", - "examples": ["https://github.com/reichlab/covid19-forecast-hub"] + "repository": { + "description": "Details of the hub repository.", + "examples": [{ + "host": "github", + "owner": "Infectious-Disease-Modeling-Hubs", + "name": "example-simple-forecast-hub" + }], + "type": "object", + "properties": { + "host": { + "description": "The name of the web host for the hub repository", + "type": "string", + "enum": ["github"] + }, + "owner": { + "type": "string" + }, + "name": { + "type": "string" + } + } }, "zoltar_project_id": { "description": "The project id of the Hub in Zoltar", From 5cf6babaf3e776842b83de0b37ff6b9f128abd27 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 1 May 2024 11:23:02 +0300 Subject: [PATCH 06/16] Minor description improvement --- v3.0.0/admin-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index 23ef56a..f80d640 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -35,7 +35,7 @@ } }, "repository": { - "description": "Details of the hub repository.", + "description": "Object containing details of the hub repository.", "examples": [{ "host": "github", "owner": "Infectious-Disease-Modeling-Hubs", From a7f81a6c7c4135601e1ce506659a2b25657b265d Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 1 May 2024 18:33:45 +0300 Subject: [PATCH 07/16] Correct type --- v3.0.0/tasks-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3.0.0/tasks-schema.json b/v3.0.0/tasks-schema.json index 1f1ee5a..5698510 100644 --- a/v3.0.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1100,7 +1100,7 @@ "type": "object", "properties": { "output_type_id_params": { - "description": "Object containing parameters specifying how samples where drawn.", + "description": "Object containing parameters specifying how samples were drawn.", "examples": [{ "output_type_id_params": { "is_required": true, From 65226c87d50832f02e4f93ea56dafe8434eab739 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Tue, 7 May 2024 10:44:02 +0300 Subject: [PATCH 08/16] Update v3.0.0/tasks-schema.json Co-authored-by: Evan Ray --- v3.0.0/tasks-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3.0.0/tasks-schema.json b/v3.0.0/tasks-schema.json index 5698510..3814996 100644 --- a/v3.0.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1121,7 +1121,7 @@ "type": "object", "properties": { "is_required": { - "description": "Boolean. Whether inclusion of samples are required for the submission to be valid", + "description": "Boolean. Whether inclusion of samples is required for the submission to be valid", "type": "boolean" }, "type": { From 25af54ab197848cbe1344ae3eb826567420785ce Mon Sep 17 00:00:00 2001 From: kjsato Date: Thu, 16 May 2024 14:42:40 -0400 Subject: [PATCH 09/16] corrected 'repository_url' to 'repository' as 'required' --- v3.0.0/admin-schema.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index f80d640..50f3b2e 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -700,7 +700,7 @@ "name", "maintainer", "contact", - "repository_url", + "repository", "file_format", "timezone" ], From 96c8b4c9ff7d1c7c77ac364a0a5a4dbd85ac8a8c Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Fri, 7 Jun 2024 14:35:45 -0400 Subject: [PATCH 10/16] remove hub_models property in admin.json --- NEWS.md | 1 + v3.0.0/admin-schema.json | 29 ----------------------------- 2 files changed, 1 insertion(+), 29 deletions(-) diff --git a/NEWS.md b/NEWS.md index 9aeaf61..4be7d85 100644 --- a/NEWS.md +++ b/NEWS.md @@ -2,6 +2,7 @@ * Breaking change: introduction of new `sample` output type id schema specification in `tasks.json`. The main breaking change is the removal of the `output_type_id` property in `sample`. Instead, the collection of samples is defined through a new `output_type_id_params` object (#70). * Breaking change: The `repository_url` and `repository_host` properties in `admin.json` have been deprecated in favour of a sigle `repository` object with separate `host`, `owner` and `name` properties (#67). +* Breaking change: The optional `hub_models` property in `admin.json` has been removed as it's schema could create conflicts with the `model_abbr` and `team_abbr` schema specification in the hub administered `model-metadata-schema.json (#77). # v2.0.1 diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index 50f3b2e..72cbe59 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -61,35 +61,6 @@ "type": "integer", "examples": [44] }, - "hub_models": { - "description": "Array of ensemble and baseline models produced by the hub", - "type": "array", - "items": { - "type": "object", - "properties": { - "team_abbr": { - "description": "Abbreviated team name of the hub", - "type": "string", - "pattern": "^[a-zA-Z0-9_+]+$", - "maxLength": 16 - }, - "model_abbr": { - "description": "Abbreviated name of the model", - "type": "string", - "pattern": "^[a-zA-Z0-9_+]+$", - "maxLength": 16 - }, - "model_type": { - "description": "The type of model: baseline or ensemble", - "type": "string", - "enum": [ - "baseline", - "ensemble" - ] - } - } - } - }, "citation": { "description": "One or more citations for the hub.", "type": "string", From d975e2cfc7bfb3ab60c41aa31f908fe3fce36b97 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Fri, 7 Jun 2024 14:44:42 -0400 Subject: [PATCH 11/16] Update default value for model_output_directory. Resolves #63 --- v3.0.0/admin-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index 72cbe59..b8b855b 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -612,8 +612,8 @@ ] }, "model_output_dir": { - "description": "Relative path, with respect to the root of hub, to directory containing model output data. If property not supplied, the default path `model_output/` assumed", - "default": "model_output", + "description": "Relative path, with respect to the root of hub, to directory containing model output data. If property not supplied, the default path `model-output` assumed", + "default": "model-output", "examples": [ "forecasts", "data/model_output" From 02bba66f133ef55019dc10a98c0ffa230c474007 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Fri, 7 Jun 2024 14:48:13 -0400 Subject: [PATCH 12/16] Allow additional properties at the round item level. Resolves #74 --- NEWS.md | 1 + v3.0.0/tasks-schema.json | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 4be7d85..57060ad 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,7 @@ * Breaking change: introduction of new `sample` output type id schema specification in `tasks.json`. The main breaking change is the removal of the `output_type_id` property in `sample`. Instead, the collection of samples is defined through a new `output_type_id_params` object (#70). * Breaking change: The `repository_url` and `repository_host` properties in `admin.json` have been deprecated in favour of a sigle `repository` object with separate `host`, `owner` and `name` properties (#67). * Breaking change: The optional `hub_models` property in `admin.json` has been removed as it's schema could create conflicts with the `model_abbr` and `team_abbr` schema specification in the hub administered `model-metadata-schema.json (#77). +* Additional properties are now allowed at the round item property level (#74). # v2.0.1 diff --git a/v3.0.0/tasks-schema.json b/v3.0.0/tasks-schema.json index 3814996..7326f06 100644 --- a/v3.0.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1437,7 +1437,7 @@ "model_tasks", "submissions_due" ], - "additionalProperties": false + "additionalProperties": true } } }, From ac0a80fe32bdf02c4720186a001ea994e935d7ec Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Fri, 7 Jun 2024 14:53:22 -0400 Subject: [PATCH 13/16] add instruction to update hubTemplate with new versions. Resolves #78 --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index 4b9c075..ff4fcf0 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,4 @@ After making a new release to the schema repository, ensure `hubDocs` are also a - Merging into `main` should be accompanied by creating an associated formal release in the repository. - Update `HubDocs` site with any additional relevant information associated with the new schema release. - Create a new release on `hubDocs` using the same version number but without the `v` (e.g. `v0.0.1` would be released as `0.0.1` on `hubDocs`). - - - +- Update the [`hubTemplate`](https://github.com/Infectious-Disease-Modeling-Hubs/hubTemplate) config to reflect the most up to date schema. Create a new release using the same version# From 58ec18dc333eca370261018e253e34d4fd08c2fa Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Mon, 17 Jun 2024 12:42:59 +0300 Subject: [PATCH 14/16] Rename org --- README.md | 8 ++++---- v0.0.0.9/admin-schema.json | 2 +- v0.0.0.9/model-schema.json | 2 +- v0.0.0.9/tasks-schema.json | 2 +- v0.0.1/admin-schema.json | 6 +++--- v0.0.1/tasks-schema.json | 6 +++--- v1.0.0/admin-schema.json | 6 +++--- v1.0.0/tasks-schema.json | 6 +++--- v2.0.0/admin-schema.json | 6 +++--- v2.0.0/tasks-schema.json | 6 +++--- v2.0.1/admin-schema.json | 6 +++--- v2.0.1/tasks-schema.json | 6 +++--- v3.0.0/admin-schema.json | 8 ++++---- v3.0.0/tasks-schema.json | 6 +++--- 14 files changed, 38 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index ff4fcf0..7cefa4b 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # Modeling Hub Schemas -[![JSON Schema Valid](https://github.com/Infectious-Disease-Modeling-Hubs/schemas/actions/workflows/check-json-schema-valid.yaml/badge.svg)](https://github.com/Infectious-Disease-Modeling-Hubs/schemas/actions/workflows/check-json-schema-valid.yaml) +[![JSON Schema Valid](https://github.com/hubverse-org/schemas/actions/workflows/check-json-schema-valid.yaml/badge.svg)](https://github.com/hubverse-org/schemas/actions/workflows/check-json-schema-valid.yaml) -This repository houses JSON schemas for [the Consortium of Infectious Disease Modeling Hubs](https://github.com/Infectious-Disease-Modeling-Hubs). These schemas define the specifications for the configuration files that are required to be present in a modeling hub. Full documentation about modeling hubs can be found at [the Modeling Hub documentation site](https://hubdocs.readthedocs.io/en/latest/), with some [specific documentation about the schema files](https://hubdocs.readthedocs.io/en/latest/format/hub-metadata.html). +This repository houses JSON schemas for [the Consortium of Infectious Disease Modeling Hubs](https://github.com/hubverse-org). These schemas define the specifications for the configuration files that are required to be present in a modeling hub. Full documentation about modeling hubs can be found at [the Modeling Hub documentation site](https://hubdocs.readthedocs.io/en/latest/), with some [specific documentation about the schema files](https://hubdocs.readthedocs.io/en/latest/format/hub-metadata.html). # Versioning @@ -13,7 +13,7 @@ Wen creating new versions and making changes to the schema file, make sure to re ## Schema documentation -The [`HubDocs`](https://github.com/Infectious-Disease-Modeling-Hubs/hubDocs/tree/main) documentation site is the primary location for documenting schema usage. It is also [versioned by using releases](https://docs.readthedocs.io/en/stable/versions.html) and should track releases in this repository. +The [`HubDocs`](https://github.com/hubverse-org/hubDocs/tree/main) documentation site is the primary location for documenting schema usage. It is also [versioned by using releases](https://docs.readthedocs.io/en/stable/versions.html) and should track releases in this repository. After making a new release to the schema repository, ensure `hubDocs` are also appropriately updated and an associated new release in the `hubDocs` repository also created. @@ -24,4 +24,4 @@ After making a new release to the schema repository, ensure `hubDocs` are also a - Merging into `main` should be accompanied by creating an associated formal release in the repository. - Update `HubDocs` site with any additional relevant information associated with the new schema release. - Create a new release on `hubDocs` using the same version number but without the `v` (e.g. `v0.0.1` would be released as `0.0.1` on `hubDocs`). -- Update the [`hubTemplate`](https://github.com/Infectious-Disease-Modeling-Hubs/hubTemplate) config to reflect the most up to date schema. Create a new release using the same version# +- Update the [`hubTemplate`](https://github.com/hubverse-org/hubTemplate) config to reflect the most up to date schema. Create a new release using the same version# diff --git a/v0.0.0.9/admin-schema.json b/v0.0.0.9/admin-schema.json index d32c874..ec4acba 100644 --- a/v0.0.0.9/admin-schema.json +++ b/v0.0.0.9/admin-schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://github.com/Infectious-Disease-Modeling-Hubs/schemas/blob/main/v0.0.0.9/admin-schema.json", + "$id": "https://github.com/hubverse-org/schemas/blob/main/v0.0.0.9/admin-schema.json", "title": "Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", diff --git a/v0.0.0.9/model-schema.json b/v0.0.0.9/model-schema.json index 1ae83c4..14c125c 100644 --- a/v0.0.0.9/model-schema.json +++ b/v0.0.0.9/model-schema.json @@ -1,6 +1,6 @@ { "$schema": "http://json-schema.org/draft-07/schema", - "$id": "https://github.com/Infectious-Disease-Modeling-Hubs/schemas/blob/main/v0.0.0.9/model-schema.json", + "$id": "https://github.com/hubverse-org/schemas/blob/main/v0.0.0.9/model-schema.json", "title": "ForecastHub model metadata", "description": "This is the schema of the model metadata file, please refer to https://github.com/epiforecasts/covid19-forecast-hub-europe/wiki/Metadata[an] for more information.", "type": "object", diff --git a/v0.0.0.9/tasks-schema.json b/v0.0.0.9/tasks-schema.json index bfa8eef..ce687b0 100644 --- a/v0.0.0.9/tasks-schema.json +++ b/v0.0.0.9/tasks-schema.json @@ -1,6 +1,6 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://github.com/Infectious-Disease-Modeling-Hubs/schemas/blob/main/v0.0.0.9/tasks-schema.json", + "$id": "https://github.com/hubverse-org/schemas/blob/main/v0.0.0.9/tasks-schema.json", "title": "Hub model task definitions", "type": "object", "properties": { diff --git a/v0.0.1/admin-schema.json b/v0.0.1/admin-schema.json index 5ec3739..eff15d3 100644 --- a/v0.0.1/admin-schema.json +++ b/v0.0.1/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/admin-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/admin-schema.json"], + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/admin-schema.json"], "type": "string", "format": "uri" }, diff --git a/v0.0.1/tasks-schema.json b/v0.0.1/tasks-schema.json index f277802..170c61f 100644 --- a/v0.0.1/tasks-schema.json +++ b/v0.0.1/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/tasks-schema.json"], + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/tasks-schema.json"], "type": "string", "format": "uri" }, diff --git a/v1.0.0/admin-schema.json b/v1.0.0/admin-schema.json index e681813..05c64c3 100644 --- a/v1.0.0/admin-schema.json +++ b/v1.0.0/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v1.0.0/admin-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v1.0.0/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/admin-schema.json"], + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/admin-schema.json"], "type": "string", "format": "uri" }, diff --git a/v1.0.0/tasks-schema.json b/v1.0.0/tasks-schema.json index c961c80..e507341 100644 --- a/v1.0.0/tasks-schema.json +++ b/v1.0.0/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v1.0.0/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v1.0.0/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/tasks-schema.json"], + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/tasks-schema.json"], "type": "string", "format": "uri" }, diff --git a/v2.0.0/admin-schema.json b/v2.0.0/admin-schema.json index 3e92cca..e104ea5 100644 --- a/v2.0.0/admin-schema.json +++ b/v2.0.0/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.0.0/admin-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v2.0.0/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/admin-schema.json"], + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/admin-schema.json"], "type": "string", "format": "uri" }, diff --git a/v2.0.0/tasks-schema.json b/v2.0.0/tasks-schema.json index 8b452bb..6a08e38 100644 --- a/v2.0.0/tasks-schema.json +++ b/v2.0.0/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.0.0/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v2.0.0/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/tasks-schema.json"], + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/tasks-schema.json"], "type": "string", "format": "uri" }, diff --git a/v2.0.1/admin-schema.json b/v2.0.1/admin-schema.json index df6a150..7afbd69 100644 --- a/v2.0.1/admin-schema.json +++ b/v2.0.1/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.0.1/admin-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v2.0.1/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/admin-schema.json"], + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/admin-schema.json"], "type": "string", "format": "uri" }, diff --git a/v2.0.1/tasks-schema.json b/v2.0.1/tasks-schema.json index b6c60c6..4c393c0 100644 --- a/v2.0.1/tasks-schema.json +++ b/v2.0.1/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v2.0.1/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v2.0.1/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v0.0.1/tasks-schema.json"], + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v0.0.1/tasks-schema.json"], "type": "string", "format": "uri" }, diff --git a/v3.0.0/admin-schema.json b/v3.0.0/admin-schema.json index b8b855b..617cca0 100644 --- a/v3.0.0/admin-schema.json +++ b/v3.0.0/admin-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/admin-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v3.0.0/admin-schema.json", "title": "Schema for Modeling Hub administrative settings", "description": "This JSON file provides a schema for modeling hub administrative information.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/admin-schema.json"], + "description": "URL to a version of the Modeling Hub schema admin-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version an 'admin.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v3.0.0/admin-schema.json"], "type": "string", "format": "uri" }, @@ -38,7 +38,7 @@ "description": "Object containing details of the hub repository.", "examples": [{ "host": "github", - "owner": "Infectious-Disease-Modeling-Hubs", + "owner": "hubverse-org", "name": "example-simple-forecast-hub" }], "type": "object", diff --git a/v3.0.0/tasks-schema.json b/v3.0.0/tasks-schema.json index 7326f06..cdc635f 100644 --- a/v3.0.0/tasks-schema.json +++ b/v3.0.0/tasks-schema.json @@ -1,13 +1,13 @@ { "$schema": "https://json-schema.org/draft/2020-12/schema", - "$id": "https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/tasks-schema.json", + "$id": "https://raw.githubusercontent.com/hubverse-org/schemas/main/v3.0.0/tasks-schema.json", "title": "Schema for Modeling Hub model task definitions", "description": "This is the schema of the tasks.json configuration file that defines the tasks within a modeling hub.", "type": "object", "properties": { "schema_version": { - "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/Infectious-Disease-Modeling-Hubs/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", - "examples": ["https://raw.githubusercontent.com/Infectious-Disease-Modeling-Hubs/schemas/main/v3.0.0/tasks-schema.json"], + "description": "URL to a version of the Modeling Hub schema tasks-schema.json file (see https://github.com/hubverse-org/schemas). Used to declare the schema version a 'tasks.json' file is written for and for config file validation. The URL provided should be the URL to the raw content of the schema file on GitHub.", + "examples": ["https://raw.githubusercontent.com/hubverse-org/schemas/main/v3.0.0/tasks-schema.json"], "type": "string", "format": "uri" }, From c77ad631161e43315b725ee2b214ac3fd50390f7 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 19 Jun 2024 08:51:36 +0300 Subject: [PATCH 15/16] Fix typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bcdc2c4..cb2606f 100644 --- a/README.md +++ b/README.md @@ -27,4 +27,4 @@ After making a new release to the schema repository, ensure `hubDocs` are also a - Merging into `main` should be accompanied by creating an associated formal release in the repository. - Update `HubDocs` site with any additional relevant information associated with the new schema release. - Create a new release on `hubDocs` using the same version number but without the `v` (e.g. `v0.0.1` would be released as `0.0.1` on `hubDocs`). -- Update the [`hubTemplate`](https://github.com/hubverse-org/hubTemplate) config to reflect the most up to date schema. Create a new release using the same version# +- Update the [`hubTemplate`](https://github.com/hubverse-org/hubTemplate) config to reflect the most up to date schema. Create a new release using the same version. From e23d99ed68ded1742480e65ed657e71b3f8bd909 Mon Sep 17 00:00:00 2001 From: Anna Krystalli Date: Wed, 19 Jun 2024 08:52:54 +0300 Subject: [PATCH 16/16] Add note about orgname change --- NEWS.md | 1 + 1 file changed, 1 insertion(+) diff --git a/NEWS.md b/NEWS.md index 57060ad..7f601f7 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,6 +4,7 @@ * Breaking change: The `repository_url` and `repository_host` properties in `admin.json` have been deprecated in favour of a sigle `repository` object with separate `host`, `owner` and `name` properties (#67). * Breaking change: The optional `hub_models` property in `admin.json` has been removed as it's schema could create conflicts with the `model_abbr` and `team_abbr` schema specification in the hub administered `model-metadata-schema.json (#77). * Additional properties are now allowed at the round item property level (#74). +* Host organisation name changed in schema `id` properties to `hubverse-org` throughout all schema versions. # v2.0.1