diff --git a/.gitignore b/.gitignore index e2a8ede..85de062 100644 --- a/.gitignore +++ b/.gitignore @@ -1,65 +1,6 @@ -# Created by .ignore support plugin (hsz.mobi) -### JetBrains template -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm -# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 - -# User-specific stuff -.idea/**/workspace.xml -.idea/**/tasks.xml -.idea/**/usage.statistics.xml -.idea/**/dictionaries -.idea/**/shelf - -# Sensitive or high-churn files -.idea/**/dataSources/ -.idea/**/dataSources.ids -.idea/**/dataSources.local.xml -.idea/**/sqlDataSources.xml -.idea/**/dynamic.xml -.idea/**/uiDesigner.xml -.idea/**/dbnavigator.xml - -# Gradle -.idea/**/gradle.xml -.idea/**/libraries - -# Gradle and Maven with auto-import -# When using Gradle or Maven with auto-import, you should exclude module files, -# since they will be recreated, and may cause churn. Uncomment if using -# auto-import. -# .idea/modules.xml -# .idea/*.iml -# .idea/modules - -# CMake -cmake-build-*/ - -# Mongo Explorer plugin -.idea/**/mongoSettings.xml - -# File-based project format -*.iws - -# IntelliJ -out/ - -# mpeltonen/sbt-idea plugin -.idea_modules/ - -# JIRA plugin -atlassian-ide-plugin.xml - -# Cursive Clojure plugin -.idea/replstate.xml - -# Crashlytics plugin (for Android Studio and IntelliJ) -com_crashlytics_export_strings.xml -crashlytics.properties -crashlytics-build.properties -fabric.properties - -# Editor-based Rest Client -.idea/httpRequests - +# Jetbrains IntelliJ IDEA /.idea -/*.iml \ No newline at end of file +/*.iml + +# Freifunk API Generator: ignore config and redundant (manual copied) JSON schema files +/generator/*.json \ No newline at end of file diff --git a/generator/0.1.json b/generator/0.1.json deleted file mode 100644 index fdb089d..0000000 --- a/generator/0.1.json +++ /dev/null @@ -1,379 +0,0 @@ -{ "schema" : - { - "type":"object", - "description": "Freifunk Community API 0.1", - "required":false, - "properties":{ - "api": { - "title":"API", - "type":"string", - "description": "The Freifunk Community API version you use", - "enum" : ["0.1"], - "default" : "0.1", - "required":true - }, - "name": { - "title":"Name", - "type":"string", - "description": "The name of your community", - "required":true - }, - "metacommunity": { - "title":"Metacommunity", - "type":"string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required":false - }, - "location": { - "title":"Location", - "type":"object", - "description": "Position data such as a postal address or geographic coordinates", - "required":true, - "properties":{ - "city": { - "title":"City", - "type":"string", - "description": "name of your city or region", - "required":true - }, - "address": { - "type":"object", - "description": "The address of the place you meet", - "required":false, - "properties":{ - "Name": { - "title":"Name of your place", - "type":"string", - "description": "the name of place you meet", - "required":false - }, - "Street": { - "title":"Street", - "type":"string", - "description":"the street your meeting place", - "required":false - }, - "Zipcode": { - "title":"ZIP", - "type":"string", - "description":"the zip code of your meeting place", - "required":false - } - } - }, - "lat": { - "title":"Latitude", - "type":"number", - "description": "Latitude of your city", - "required":true - }, - "lon": { - "title":"Longitude", - "type":"number", - "description": "Longitude of your city", - "required":true - } - } - }, - "contact": { - "type":"object", - "required":true, - "properties":{ - "email": { - "title":"Email", - "type":"string", - "description": "Email address to which other people can contact your community", - "required":false - }, - "facebook": { - "title":"facebook", - "type":"string", - "description":"URL to your community's facebook account", - "required":false - }, - "identica": { - "title":"Identica", - "type":"string", - "description": "URL to your community's identica account", - "required":false - }, - "irc": { - "title":"IRC", - "type":"string", - "description":"your community's irc channel", - "required":false - }, - "jabber": { - "title":"Jabber", - "type":"string", - "description":"a jabber account someone reads", - "required":false - }, - "ml": { - "title":"Mailinglist", - "type":"string", - "description": "The email address of your mailing list. If you use google groups then the email looks like your-group@googlegroups.com", - "required":false - }, - "phone": { - "title":"Phone", - "type":"string", - "description":"if your community has a phone number", - "required":false - }, - "googleplus": { - "title":"Google+", - "type":"string", - "description":"URL to your community's g+ account", - "required":false - }, - "twitter": { - "title":"Twitter", - "type":"string", - "description":"URL to your community's twitter account", - "required":false - } - } - }, - "url": { - "title":"Homepage", - "type":"string", - "description": "The main website", - "required":true - }, - "events": { - "type":"array", - "description": "These are events something like 'X has entered/triggered/did Y at timestamp Z'", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "extra": { - "title":"Extra information", - "type":"string", - "description": "An custom text field", - "required":false - }, - "title": { - "title":"Title", - "type":"string", - "description": "name of the event", - "required":false - }, - "timestamp": { - "title":"Timestamp", - "type":"number", - "description": "Unix timestamp when the event happens", - "required":false - }, - "location": { - "title":"Location", - "type":"string", - "description": "location of the event", - "required":false - } - } - } - - - }, - "feeds": { - "type":"array", - "description":"Feeds you provide your community", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "name": { - "title":"Feed name", - "type":"string", - "description":"name of the feed", - "required":false - }, - "category": { - "title":"Feed category", - "type":"string", - "enum":["blog","forum","wiki","others",""], - "default":"", - "description":"category of the feed like blog entries, forum messages, wiki articles, ...", - "required":false - }, - "type": { - "title":"Feed type", - "type":"string", - "description":"type of the feed like rss, atom, xml", - "required":false - }, - "url": { - "title":"URL", - "type":"string", - "description":"url of the feed", - "required":false - } - } - } - - - }, - "state": { - "type":"object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required":true, - "properties":{ - "nodes": { - "title":"Active Nodes", - "type":"integer", - "description": "number of active nodes", - "required":false - }, - "lastchange": { - "title":"Last Change", - "type":"number", - "description": "At what (unix) timestamp has your community status lastly changed?", - "required":true - }, - "message": { - "title":"Message", - "type":"string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required":false - } - } - }, - "techDetails": { - "type":"object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required":false, - "properties":{ - "stoererhaftung":{ - "title":"Störerhaftung", - "description": "how the German störerhaftung is handled", - "required":false, - "type":"string" - }, - "bootstrap": { - "title":"Bootstrap", - "type":"string", - "description": "how to deal with fresh routers", - "required":false - }, - "firmware": { - "type":"object", - "required":false, - "properties":{ - "url": { - "title":"Firmware download and docs", - "type":"string", - "description": "link to your firmware images or docs", - "required":false - }, - "name": { - "title":"Firmware Name", - "type":"string", - "description": "name of your firmware", - "required":false - } - } - }, - "keyexchange": { - "type":"string", - "description": "needs to be defined", - "required":false - }, - "networks": { - "title":"Networks", - "type":"object", - "description": "networks used by your community", - "required":false, - "properties":{ - "ipv6": { - "type":"array", - "description": "ipv6 networks used by your community", - "required":false, - "items": { - "type":"object", - "title": "ipv6 network object", - "required":false, - "properties":{ - "prefixlength": { - "type":"integer", - "description":"prefix length", - "required":false - }, - "prefix": { - "type":"string", - "description": "ipv6 network prefix", - "required":false - } - } - } - }, - "ipv4": { - "type":"array", - "description": "ipv4 networks used by your community", - "required":false, - "items": - { - "type":"object", - "title": "ipv4 network object", - "required":false, - "properties":{ - "netmask": { - "type":"integer", - "description":"the netmask valid for this network", - "required":false - }, - "network": { - "type":"string", - "description": "network name (e.g. 10.63.x.y)", - "required":false - } - } - } - - - } - } - }, - "routing": { - "title":"Routing protocol", - "description": "routing protocol used within your community", - "required":false, - "enum" : ["","OLSR","BATMAN","Babel","802.11s"], - "default":"" - }, - "splashpage": { - "title":"Splash Page", - "type":"string", - "description": "what kind of splashpage does your community use?", - "required":false - }, - "topodata": { - "title":"Topology data", - "type":"string", - "description": "link to your topology data (dot-files? needs to be defined)", - "required":false - }, - "updatemode": { - "title":"Updatemode", - "type":"string", - "description": "how do you deploy firmware updates?", - "required":false - }, - "vpn": { - "title":"VPN", - "type":"string", - "description": "implementation of inner city vpn", - "required":false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.2.0.json b/generator/0.2.0.json deleted file mode 100644 index 552002d..0000000 --- a/generator/0.2.0.json +++ /dev/null @@ -1,412 +0,0 @@ -{ "schema" : - { - "type":"object", - "description": "Freifunk Community API 0.2.0", - "required":false, - "properties":{ - "api": { - "title":"API", - "type":"string", - "description": "The Freifunk Community API version you use", - "enum" : ["0.1","0.2.0"], - "default" : "0.2.0", - "required":true - }, - "name": { - "title":"Name", - "type":"string", - "description": "The name of your community", - "required":true - }, - "metacommunity": { - "title":"Metacommunity", - "type":"string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required":false - }, - "location": { - "title":"Location", - "type":"object", - "description": "Position data such as a postal address or geographic coordinates", - "required":true, - "properties":{ - "city": { - "title":"City", - "type":"string", - "description": "name of your city or region", - "required":true - }, - "address": { - "type":"object", - "description": "The address of the place you meet", - "required":false, - "properties":{ - "Name": { - "title":"Name of your place", - "type":"string", - "description": "the name of place you meet", - "required":false - }, - "Street": { - "title":"Street", - "type":"string", - "description":"the street your meeting place", - "required":false - }, - "Zipcode": { - "title":"ZIP", - "type":"string", - "description":"the zip code of your meeting place", - "required":false - } - } - }, - "lat": { - "title":"Latitude", - "type":"number", - "description": "Latitude of your city", - "required":true - }, - "lon": { - "title":"Longitude", - "type":"number", - "description": "Longitude of your city", - "required":true - } - } - }, - "contact": { - "type":"object", - "required":true, - "properties":{ - "email": { - "title":"Email", - "type":"string", - "description": "Email address to which other people can contact your community", - "required":false - }, - "facebook": { - "title":"facebook", - "type":"string", - "description":"URL to your community's facebook account", - "required":false - }, - "identica": { - "title":"Identica", - "type":"string", - "description": "URL to your community's identica account", - "required":false - }, - "irc": { - "title":"IRC", - "type":"string", - "description":"your community's irc channel", - "required":false - }, - "jabber": { - "title":"Jabber", - "type":"string", - "description":"a jabber account someone reads", - "required":false - }, - "ml": { - "title":"Mailinglist", - "type":"string", - "description": "The email address of your mailing list. If you use google groups then the email looks like your-group@googlegroups.com", - "required":false - }, - "phone": { - "title":"Phone", - "type":"string", - "description":"if your community has a phone number", - "required":false - }, - "googleplus": { - "title":"Google+", - "type":"string", - "description":"URL to your community's g+ account", - "required":false - }, - "twitter": { - "title":"Twitter", - "type":"string", - "description":"URL to your community's twitter account", - "required":false - } - } - }, - "url": { - "title":"Homepage", - "type":"string", - "description": "The main website", - "required":true - }, - "events": { - "title":"Events", - "type":"string", - "description": "URL to your calendar ics file that can be imported to a global calendar", - "required":false - }, - "timeline": { - "type":"array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "decription": { - "title":"Description", - "type":"string", - "description": "description of your lifetime event", - "required":false - }, - "timestamp": { - "title":"Timestamp", - "type":"string", - "description": "ISO timestamp when the event happened", - "required":false - } - } - } - - - }, - "feeds": { - "type":"array", - "description":"Feeds you provide your community", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "name": { - "title":"Feed name", - "type":"string", - "description":"name of the feed", - "required":false - }, - "category": { - "title":"Feed category", - "type":"string", - "enum":["blog","forum","wiki","others",""], - "default":"", - "description":"category of the feed like blog entries, forum messages, wiki articles, ...", - "required":false - }, - "type": { - "title":"Feed type", - "type":"string", - "description":"type of the feed like rss, atom, xml", - "required":false - }, - "url": { - "title":"URL", - "type":"string", - "description":"url of the feed", - "required":false - } - } - } - - - }, - "state": { - "type":"object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required":true, - "properties":{ - "nodes": { - "title":"Active Nodes", - "type":"integer", - "description": "number of active nodes", - "required":false - }, - "lastchange": { - "title":"Last Change", - "type":"number", - "description": "At what (unix) timestamp has your community status lastly changed?", - "required":true - }, - "message": { - "title":"Message", - "type":"string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required":false - } - } - }, - "nodeMaps": { - "type":"array", - "description": "maps of nodes or topology your community provides", - "required":false, - "items":{ - "type":"object", - "required":false, - "properties": { - "url": { - "title":"Url of the map", - "type":"string", - "description":"the url where the map is located", - "required":false - }, - "interval": { - "title":"interval", - "type":"string", - "description":"how often the map will be refreshed", - "required":false - }, - "technicalType": { - "title":"map technical type", - "type":"string", - "description":"the kind of map is used", - "enum":["", "ffmap", "olsr-dot","openwifimap"], - "default":"", - "required":false - }, - "mapType": { - "title":"map type human readable", - "type":"string", - "description":"the kind of data the map provides", - "enum":["","geographical","structural","list/status"], - "default":"", - "required":false - } - } - } - }, - "techDetails": { - "type":"object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required":false, - "properties":{ - "stoererhaftung":{ - "title":"Störerhaftung", - "description": "how the German störerhaftung is handled", - "required":false, - "type":"string" - }, - "bootstrap": { - "title":"Bootstrap", - "type":"string", - "description": "how to deal with fresh routers", - "required":false - }, - "firmware": { - "type":"object", - "required":false, - "properties":{ - "url": { - "title":"Firmware download and docs", - "type":"string", - "description": "link to your firmware images or docs", - "required":false - }, - "name": { - "title":"Firmware Name", - "type":"string", - "description": "name of your firmware", - "required":false - } - } - }, - "keyexchange": { - "type":"string", - "description": "needs to be defined", - "required":false - }, - "networks": { - "title":"Networks", - "type":"object", - "description": "networks used by your community", - "required":false, - "properties":{ - "ipv6": { - "type":"array", - "description": "ipv6 networks used by your community", - "required":false, - "items": { - "type":"object", - "title": "ipv6 network object", - "required":false, - "properties":{ - "prefixlength": { - "type":"integer", - "description":"prefix length", - "required":false - }, - "prefix": { - "type":"string", - "description": "ipv6 network prefix", - "required":false - } - } - } - }, - "ipv4": { - "type":"array", - "description": "ipv4 networks used by your community", - "required":false, - "items": - { - "type":"object", - "title": "ipv4 network object", - "required":false, - "properties":{ - "netmask": { - "type":"integer", - "description":"the netmask valid for this network", - "required":false - }, - "network": { - "type":"string", - "description": "network name (e.g. 10.63.x.y)", - "required":false - } - } - } - - - } - } - }, - "routing": { - "title":"Routing protocol", - "description": "routing protocol used within your community", - "required":false, - "enum" : ["","OLSR","BATMAN","Babel","802.11s"], - "default":"" - }, - "splashpage": { - "title":"Splash Page", - "type":"string", - "description": "what kind of splashpage does your community use?", - "required":false - }, - "topodata": { - "title":"Topology data", - "type":"string", - "description": "link to your topology data (dot-files? needs to be defined)", - "required":false - }, - "updatemode": { - "title":"Updatemode", - "type":"string", - "description": "how do you deploy firmware updates?", - "required":false - }, - "vpn": { - "title":"VPN", - "type":"string", - "description": "implementation of inner city vpn", - "required":false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.2.1.json b/generator/0.2.1.json deleted file mode 100644 index 23340c8..0000000 --- a/generator/0.2.1.json +++ /dev/null @@ -1,465 +0,0 @@ -{ "schema" : - { - "type":"object", - "description": "Freifunk Community API 0.2.1", - "required":false, - "properties":{ - "api": { - "title":"API", - "type":"string", - "description": "The Freifunk Community API version you use", - "enum" : ["0.1","0.2.0","0.2.1"], - "default" : "0.2.1", - "required":true - }, - "name": { - "title":"Name", - "type":"string", - "description": "The name of your community", - "required":true - }, - "metacommunity": { - "title":"Metacommunity", - "type":"string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required":false - }, - "location": { - "title":"Location", - "type":"object", - "description": "Position data such as a postal address or geographic coordinates", - "required":true, - "properties":{ - "city": { - "title":"City", - "type":"string", - "description": "name of your city or region", - "required":true - }, - "address": { - "type":"object", - "description": "The address of the place you meet", - "required":false, - "properties":{ - "Name": { - "title":"Name of your place", - "type":"string", - "description": "the name of place you meet", - "required":false - }, - "Street": { - "title":"Street", - "type":"string", - "description":"the street your meeting place", - "required":false - }, - "Zipcode": { - "title":"ZIP", - "type":"string", - "description":"the zip code of your meeting place", - "required":false - } - } - }, - "lat": { - "title":"Latitude", - "type":"number", - "description": "Latitude of your city", - "required":true - }, - "lon": { - "title":"Longitude", - "type":"number", - "description": "Longitude of your city", - "required":true - } - } - }, - "contact": { - "type":"object", - "required":true, - "properties":{ - "email": { - "title":"Email", - "type":"string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required":false - }, - "facebook": { - "title":"facebook", - "type":"string", - "pattern" : "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description":"URL to your community's facebook account (https://facebook.com/...)", - "required":false - }, - "identica": { - "title":"Identica", - "type":"string", - "description": "URL to your community's identica account", - "required":false - }, - "irc": { - "title":"IRC", - "type":"string", - "description":"your community's irc channel", - "required":false - }, - "jabber": { - "title":"Jabber", - "type":"string", - "description":"a jabber account someone reads", - "required":false - }, - "ml": { - "title":"Mailinglist", - "type":"string", - "description": "The email address of your mailing list or a link to the mailinglist info page ", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required":false - }, - "phone": { - "title":"Phone", - "type":"string", - "description":"if your community has a phone number", - "required":false - }, - "googleplus": { - "title":"Google+", - "type":"string", - "description":"URL to your community's g+ account", - "required":false - }, - "twitter": { - "title" : "Twitter", - "type" : "string", - "pattern" : "^@[A-Za-z0-9]{1,15}", - "description":"Your community's twitter name (starts with @)", - "required":false - } - } - }, - "url": { - "title":"Homepage", - "type":"string", - "pattern" : "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website", - "required":true - }, - "timeline": { - "type":"array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "decription": { - "title":"Description", - "type":"string", - "description": "description of your lifetime event", - "required":false - }, - "timestamp": { - "title":"Timestamp", - "type":"string", - "description": "ISO timestamp when the event happened", - "required":false - } - } - } - - - }, - "feeds": { - "type":"array", - "description":"Feeds you provide your community", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "name": { - "title":"Feed name", - "type":"string", - "description":"name of the feed", - "required":false - }, - "category": { - "title":"Feed category", - "type":"string", - "enum":["blog","forum","ics","wiki","others",""], - "default":"", - "description":"category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required":false - }, - "type": { - "title":"Feed type", - "type":"string", - "description":"type of the feed like rss, atom, xml", - "required":false - }, - "url": { - "title":"URL", - "type":"string", - "description":"url of the feed", - "required":false - } - } - } - - - }, - "state": { - "type":"object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required":true, - "properties":{ - "nodes": { - "title":"Active Nodes", - "type":"integer", - "description": "number of active nodes", - "required":false - }, - "lastchange": { - "title":"Last Change", - "type":"string", - "description": "At what iso timestamp has your community status lastly changed?", - "default" : 0, - "required":true - }, - "message": { - "title":"Message", - "type":"string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required":false - } - } - }, - "nodeMaps": { - "type":"array", - "description": "maps of nodes or topology your community provides", - "required":false, - "items":{ - "type":"object", - "required":false, - "properties": { - "url": { - "title":"Url of the map", - "type":"string", - "description":"the url where the map is located", - "required":false - }, - "interval": { - "title":"interval", - "type":"string", - "description":"how often the map will be refreshed", - "required":false - }, - "technicalType": { - "title":"map technical type", - "type":"string", - "description":"the kind of map is used", - "enum":["", "ffmap", "olsr-dot","openwifimap"], - "default":"", - "required":false - }, - "mapType": { - "title":"map type human readable", - "type":"string", - "description":"the kind of data the map provides", - "enum":["","geographical","structural","list/status"], - "default":"", - "required":false - } - } - } - }, - "services" : { - "type" : "array", - "description" : "services provided by your community", - "required" : false, - "items" : { - "type" : "object", - "required" : false, - "properties" : { - "serviceName" : { - "title" : "Service Name", - "type" : "string", - "description" : "name of your service (e.g. jabber...)", - "required" : false - }, - "serviceDescription" : { - "title" : "Service Description", - "type" : "string", - "description" : "describe your service", - "required" : false - }, - "externalUri" : { - "title" : "External URI", - "type" : "string", - "description" : "URI to use your service from the internet", - "required" : false - }, - "internalUri" : { - "title" : "Internal URI", - "type" : "string", - "description" : "URI to use your service from freifunk or icvpn-networks", - "required" : false - } - } - } - }, - "techDetails": { - "type":"object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required":false, - "properties":{ - "stoererhaftung":{ - "title":"Störerhaftung", - "description": "how the German störerhaftung is handled", - "required":false, - "type":"string" - }, - "bootstrap": { - "title":"Bootstrap", - "type":"string", - "description": "how to deal with fresh routers", - "required":false - }, - "firmware": { - "type":"object", - "required":false, - "properties":{ - "url": { - "title":"Firmware download and docs", - "type":"string", - "description": "link to your firmware images or docs", - "required":false - }, - "name": { - "title":"Firmware Name", - "type":"string", - "description": "name of your firmware", - "required":false - } - } - }, - "keyexchange": { - "type":"string", - "description": "needs to be defined", - "required":false - }, - "tld": { - "title":"Top Level Domain", - "description": "the top level domain used by your community", - "type":"object", - "required":false, - "properties":{ - "domainname": { - "type":"string", - "description":"the top level domain name (e.g. ffhh, ffol)", - "pattern":"^[A-Za-z]{2,}$", - "required":false, - "title":"Top Level Domain Name" - }, - "nameserver": { - "type":"array", - "title":"TLD Nameserver", - "description":"Nameservers servings zones of your top level domain", - "required":false, - "items":{ - "type":"string", - "pattern":"^[A-Za-z0-9äöüÄÖUß_\\-\\.]*$", - "required":false - } - } - } - }, - "networks": { - "title":"Networks", - "type":"object", - "description": "networks used by your community", - "required":false, - "properties":{ - "ipv6": { - "type":"array", - "description": "ipv6 networks used by your community", - "required":false, - "items": { - "type":"object", - "title": "ipv6 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern" : "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required":false - } - } - } - }, - "ipv4": { - "type":"array", - "description": "ipv4 networks used by your community", - "required":false, - "items": - { - "type":"object", - "title": "ipv4 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern" : "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required":false - } - } - } - - - } - } - }, - "routing": { - "title":"Routing protocol", - "description": "routing protocol used within your community", - "required":false, - "enum" : ["","OLSR","BATMAN","Babel","802.11s"], - "default":"" - }, - "splashpage": { - "title":"Splash Page", - "type":"string", - "description": "what kind of splashpage does your community use?", - "required":false - }, - "topodata": { - "title":"Topology data", - "type":"string", - "description": "link to your topology data (dot-files? needs to be defined)", - "required":false - }, - "updatemode": { - "title":"Updatemode", - "type":"string", - "description": "how do you deploy firmware updates?", - "required":false - }, - "vpn": { - "title":"VPN", - "type":"string", - "description": "implementation of inner city vpn", - "required":false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.3.0.json b/generator/0.3.0.json deleted file mode 100644 index 96e67ea..0000000 --- a/generator/0.3.0.json +++ /dev/null @@ -1,472 +0,0 @@ -{ "schema" : - { - "type":"object", - "description": "Freifunk Community API 0.3.0", - "required":false, - "properties":{ - "api": { - "title":"API", - "type":"string", - "description": "The Freifunk Community API version you use", - "enum" : ["0.1","0.2.0","0.2.1","0.3.0"], - "default" : "0.3.0", - "required":true - }, - "name": { - "title":"Name", - "type":"string", - "description": "The name of your community", - "required":true - }, - "metacommunity": { - "title":"Metacommunity", - "type":"string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required":false - }, - "location": { - "title":"Location", - "type":"object", - "description": "Position data such as a postal address or geographic coordinates", - "required":true, - "properties":{ - "city": { - "title":"City", - "type":"string", - "description": "name of your city or region", - "required":true - }, - "country": { - "title":"Country", - "type":"string", - "description": "Your country", - "required":false - }, - "address": { - "type":"object", - "description": "The address of the place you meet", - "required":false, - "properties":{ - "Name": { - "title":"Name of your place", - "type":"string", - "description": "the name of place you meet", - "required":false - }, - "Street": { - "title":"Street", - "type":"string", - "description":"the street your meeting place", - "required":false - }, - "Zipcode": { - "title":"ZIP", - "type":"string", - "description":"the zip code of your meeting place", - "required":false - } - } - }, - "lat": { - "title":"Latitude", - "type":"number", - "description": "Latitude of your city", - "required":true - }, - "lon": { - "title":"Longitude", - "type":"number", - "description": "Longitude of your city", - "required":true - } - } - }, - "contact": { - "type":"object", - "required":true, - "properties":{ - "email": { - "title":"Email", - "type":"string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required":false - }, - "facebook": { - "title":"facebook", - "type":"string", - "pattern" : "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description":"URL to your community's facebook account (https://facebook.com/...)", - "required":false - }, - "identica": { - "title":"Identica", - "type":"string", - "description": "URL to your community's identica account", - "required":false - }, - "irc": { - "title":"IRC", - "type":"string", - "pattern":"^irc://.*", - "description":"your community's irc channel, starts with irc://", - "required":false - }, - "jabber": { - "title":"Jabber", - "type":"string", - "description":"a jabber account someone reads", - "required":false - }, - "ml": { - "title":"Mailinglist", - "type":"string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required":false - }, - "phone": { - "title":"Phone", - "type":"string", - "description":"if your community has a phone number", - "required":false - }, - "googleplus": { - "title":"Google+", - "type":"string", - "description":"URL to your community's g+ account", - "required":false - }, - "twitter": { - "title" : "Twitter", - "type" : "string", - "pattern" : "^@[A-Za-z0-9]{1,15}", - "description":"Your community's twitter name (starts with @)", - "required":false - } - } - }, - "url": { - "title":"Homepage", - "type":"string", - "pattern" : "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required":true - }, - "timeline": { - "type":"array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "decription": { - "title":"Description", - "type":"string", - "description": "description of your lifetime event", - "required":false - }, - "timestamp": { - "title":"Timestamp", - "type":"string", - "description": "ISO timestamp when the event happened", - "required":false - } - } - } - - - }, - "feeds": { - "type":"array", - "description":"Feeds you provide your community", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "name": { - "title":"Feed name", - "type":"string", - "description":"name of the feed", - "required":false - }, - "category": { - "title":"Feed category", - "type":"string", - "enum":["blog","forum","ics","wiki","others",""], - "default":"", - "description":"category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required":false - }, - "type": { - "title":"Feed type", - "type":"string", - "description":"type of the feed like rss, atom, xml", - "required":false - }, - "url": { - "title":"URL", - "type":"string", - "description":"url of the feed", - "required":false - } - } - } - - - }, - "state": { - "type":"object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required":true, - "properties":{ - "nodes": { - "title":"Active Nodes", - "type":"integer", - "description": "number of active nodes", - "required":false - }, - "lastchange": { - "title":"Last Change", - "type":"string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default" : 0, - "required":true - }, - "message": { - "title":"Message", - "type":"string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required":false - } - } - }, - "nodeMaps": { - "type":"array", - "description": "maps of nodes or topology your community provides", - "required":false, - "items":{ - "type":"object", - "required":false, - "properties": { - "url": { - "title":"Url of the map", - "type":"string", - "description":"the url where the map is located", - "required":false - }, - "interval": { - "title":"interval", - "type":"string", - "description":"how often the map will be refreshed", - "required":false - }, - "technicalType": { - "title":"map technical type", - "type":"string", - "description":"the kind of map is used", - "enum":["", "ffmap", "olsr-dot","openwifimap"], - "default":"", - "required":false - }, - "mapType": { - "title":"map type human readable", - "type":"string", - "description":"the kind of data the map provides", - "enum":["","geographical","structural","list/status"], - "default":"", - "required":false - } - } - } - }, - "services" : { - "type" : "array", - "description" : "services provided by your community", - "required" : false, - "items" : { - "type" : "object", - "required" : false, - "properties" : { - "serviceName" : { - "title" : "Service Name", - "type" : "string", - "description" : "name of your service (e.g. jabber...)", - "required" : false - }, - "serviceDescription" : { - "title" : "Service Description", - "type" : "string", - "description" : "describe your service", - "required" : false - }, - "externalUri" : { - "title" : "External URI", - "type" : "string", - "description" : "URI to use your service from the internet", - "required" : false - }, - "internalUri" : { - "title" : "Internal URI", - "type" : "string", - "description" : "URI to use your service from freifunk or icvpn-networks", - "required" : false - } - } - } - }, - "techDetails": { - "type":"object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required":false, - "properties":{ - "stoererhaftung":{ - "title":"Störerhaftung", - "description": "how the German störerhaftung is handled", - "required":false, - "type":"string" - }, - "bootstrap": { - "title":"Bootstrap", - "type":"string", - "description": "how to deal with fresh routers", - "required":false - }, - "firmware": { - "type":"object", - "required":false, - "properties":{ - "url": { - "title":"Firmware download and docs", - "type":"string", - "description": "link to your firmware images or docs", - "required":false - }, - "name": { - "title":"Firmware Name", - "type":"string", - "description": "name of your firmware", - "required":false - } - } - }, - "keyexchange": { - "type":"string", - "description": "needs to be defined", - "required":false - }, - "tld": { - "title":"Top Level Domain", - "description": "the top level domain used by your community", - "type":"object", - "required":false, - "properties":{ - "domainname": { - "type":"string", - "description":"the top level domain name (e.g. ffhh, ffol)", - "pattern":"^[A-Za-z]{2,}$", - "required":false, - "title":"Top Level Domain Name" - }, - "nameserver": { - "type":"array", - "title":"TLD Nameserver", - "description":"Nameservers servings zones of your top level domain", - "required":false, - "items":{ - "type":"string", - "pattern":"^[A-Za-z0-9äöüÄÖUß_\\-\\.]*$", - "required":false - } - } - } - }, - "networks": { - "title":"Networks", - "type":"object", - "description": "networks used by your community", - "required":false, - "properties":{ - "ipv6": { - "type":"array", - "description": "ipv6 networks used by your community", - "required":false, - "items": { - "type":"object", - "title": "ipv6 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern" : "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required":false - } - } - } - }, - "ipv4": { - "type":"array", - "description": "ipv4 networks used by your community", - "required":false, - "items": - { - "type":"object", - "title": "ipv4 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern" : "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required":false - } - } - } - - - } - } - }, - "routing": { - "title":"Routing protocol", - "description": "routing protocol used within your community", - "required":false, - "enum" : ["","OLSR","BATMAN","Babel","802.11s","batman-adv","bmx","OLSRv2"], - "default":"" - }, - "splashpage": { - "title":"Splash Page", - "type":"string", - "description": "what kind of splashpage does your community use?", - "required":false - }, - "topodata": { - "title":"Topology data", - "type":"string", - "description": "link to your topology data (dot-files? needs to be defined)", - "required":false - }, - "updatemode": { - "title":"Updatemode", - "type":"string", - "description": "how do you deploy firmware updates?", - "required":false - }, - "vpn": { - "title":"VPN", - "type":"string", - "description": "implementation of inner city vpn", - "required":false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.3.1.json b/generator/0.3.1.json deleted file mode 100644 index 69896a0..0000000 --- a/generator/0.3.1.json +++ /dev/null @@ -1,509 +0,0 @@ -{ "schema" : - { - "type":"object", - "description": "Freifunk Community API 0.3.1", - "required":false, - "properties":{ - "api": { - "title":"API", - "type":"string", - "description": "The Freifunk Community API version you use", - "enum" : ["0.1","0.2.0","0.2.1","0.3.0","0.3.1"], - "default" : "0.3.1", - "required":true - }, - "name": { - "title":"Name", - "type":"string", - "description": "The name of your community", - "required":true - }, - "metacommunity": { - "title":"Metacommunity", - "type":"string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required":false - }, - "location": { - "title":"Location", - "type":"object", - "description": "Position data such as a postal address or geographic coordinates", - "required":true, - "properties":{ - "city": { - "title":"City", - "type":"string", - "description": "name of your city or region", - "required":true - }, - "country": { - "title":"Country", - "type":"string", - "description": "Your country", - "required":false - }, - "address": { - "type":"object", - "description": "The address of the place you meet", - "required":false, - "properties":{ - "Name": { - "title":"Name of your place", - "type":"string", - "description": "the name of place you meet", - "required":false - }, - "Street": { - "title":"Street", - "type":"string", - "description":"the street your meeting place", - "required":false - }, - "Zipcode": { - "title":"ZIP", - "type":"string", - "description":"the zip code of your meeting place", - "required":false - } - } - }, - "lat": { - "title":"Latitude", - "type":"number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required":true - }, - "lon": { - "title":"Longitude", - "type":"number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required":true - } - } - }, - "contact": { - "type":"object", - "required":true, - "properties":{ - "email": { - "title":"Email", - "type":"string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required":false - }, - "facebook": { - "title":"facebook", - "type":"string", - "pattern" : "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description":"URL to your community's facebook account (https://facebook.com/...)", - "required":false - }, - "identica": { - "title":"Identica", - "type":"string", - "pattern" : "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required":false - }, - "irc": { - "title":"IRC", - "type":"string", - "pattern":"^irc://.*", - "description":"your community's irc channel, starts with irc://", - "required":false - }, - "jabber": { - "title":"Jabber", - "type":"string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description":"a jabber account someone reads (account@jabberserver.tld)", - "required":false - }, - "ml": { - "title":"Mailinglist", - "type":"string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required":false - }, - "phone": { - "title":"Phone", - "type":"string", - "description":"if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required":false - }, - "googleplus": { - "title":"Google+", - "type":"string", - "description":"URL to your community's g+ account (https://plus.google.com/...)", - "pattern" : "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required":false - }, - "twitter": { - "title" : "Twitter", - "type" : "string", - "pattern" : "^@[A-Za-z0-9]{1,15}", - "description":"Your community's twitter name (starts with @)", - "required":false - }, - "webform": { - "title" : "Webform", - "type" : "string", - "description":"URL to your community's contact form (http{s}://...)", - "pattern" : "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required":false - } - } - }, - "url": { - "title":"Homepage", - "type":"string", - "pattern" : "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required":true - }, - "timeline": { - "type":"array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "decription": { - "title":"Description", - "type":"string", - "description": "description of your lifetime event", - "required":false - }, - "timestamp": { - "title":"Timestamp", - "type":"string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required":false - } - } - } - }, - "feeds": { - "type":"array", - "description":"Feeds you provide your community", - "required":false, - "items": - { - "type":"object", - "required":false, - "properties":{ - "name": { - "title":"Feed name", - "type":"string", - "description":"name of the feed", - "required":false - }, - "category": { - "title":"Feed category", - "type":"string", - "enum":["blog","forum","ics","podcast","wiki","others",""], - "default":"", - "description":"category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required":false - }, - "type": { - "title":"Feed type", - "type":"string", - "description":"type of the feed like rss, atom, xml", - "required":false - }, - "url": { - "title":"URL", - "type":"string", - "description":"url of the feed", - "required":false - } - } - } - }, - "state": { - "type":"object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required":true, - "properties":{ - "nodes": { - "title":"Active Nodes", - "type":"integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required":false - }, - "lastchange": { - "title":"Last Change", - "type":"string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default" : 0, - "required":true - }, - "message": { - "title":"Message", - "type":"string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required":false - }, - "description": { - "title":"Description", - "type":"string", - "description": "Describe your community in a few lines", - "required":false - }, - "focus": { - "title":"Focus", - "type":"array", - "description": "What's the focus of your local community?", - "required":false, - "items":{ - "type":"string", - "title":"option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type":"array", - "description": "maps of nodes or topology your community provides", - "required":false, - "items":{ - "type":"object", - "required":false, - "properties": { - "url": { - "title":"Url of the map", - "type":"string", - "description":"the url where the map is located", - "required":false - }, - "interval": { - "title":"interval", - "type":"string", - "description":"how often the map will be refreshed", - "required":false - }, - "technicalType": { - "title":"map technical type", - "type":"string", - "description":"the kind of map is used", - "enum":["", "ffmap", "ffsomething", "olsr-dot","openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default":"", - "required":false - }, - "mapType": { - "title":"map type human readable", - "type":"string", - "description":"the kind of data the map provides", - "enum":["","geographical","structural","list/status"], - "default":"", - "required":false - } - } - } - }, - "services" : { - "type" : "array", - "description" : "services provided by your community", - "required" : false, - "items" : { - "type" : "object", - "required" : false, - "properties" : { - "serviceName" : { - "title" : "Service Name", - "type" : "string", - "description" : "name of your service (e.g. jabber...)", - "required" : false - }, - "serviceDescription" : { - "title" : "Service Description", - "type" : "string", - "description" : "describe your service", - "required" : false - }, - "externalUri" : { - "title" : "External URI", - "type" : "string", - "description" : "URI to use your service from the internet", - "required" : false - }, - "internalUri" : { - "title" : "Internal URI", - "type" : "string", - "description" : "URI to use your service from freifunk or icvpn-networks", - "required" : false - } - } - } - }, - "techDetails": { - "type":"object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required":false, - "properties":{ - "stoererhaftung":{ - "title":"Störerhaftung", - "description": "how the German störerhaftung is handled", - "required":false, - "type":"string" - }, - "bootstrap": { - "title":"Bootstrap", - "type":"string", - "description": "how to deal with fresh routers", - "required":false - }, - "firmware": { - "type":"object", - "required":false, - "properties":{ - "url": { - "title":"Firmware download and docs", - "type":"string", - "description": "link to your firmware images or docs", - "required":false - }, - "name": { - "title":"Firmware Name", - "type":"string", - "description": "name of your firmware", - "required":false - } - } - }, - "keyexchange": { - "type":"string", - "description": "needs to be defined", - "required":false - }, - "dns": { - "title":"DNS Servers", - "descripition":"dns servers for domains used by your community", - "type":"array", - "items":{ - "type":"object", - "required":false, - "properties":{ - "domainname": { - "type":"string", - "description":"the domain name (e.g. ffhh, ffol)", - "pattern":"^[A-Za-z]{2,}$", - "required":false, - "title":"Domain Name" - }, - "nameserver": { - "type":"array", - "title":"Nameserver", - "description":"Nameservers servings zones of your domain", - "required":false, - "items":{ - "type":"string", - "pattern":"^[A-Za-z0-9äöüÄÖUß_\\-\\.]*$", - "required":false - } - } - } - } - }, - "networks": { - "title":"Networks", - "type":"object", - "description": "networks used by your community", - "required":false, - "properties":{ - "ipv6": { - "type":"array", - "title":"IPv6 networks", - "description": "ipv6 networks used by your community", - "required":false, - "items": { - "type":"object", - "title": "ipv6 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern" : "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required":false - } - } - } - }, - "ipv4": { - "type":"array", - "description": "ipv4 networks used by your community", - "required":false, - "items": - { - "type":"object", - "title": "ipv4 network object", - "required":false, - "properties":{ - "network": { - "type":"string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern" : "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required":false - } - } - } - } - } - }, - "routing": { - "title":"Routing protocol", - "description": "routing protocol used within your community", - "required":false, - "type": "array", - "items":{ - "type":"string", - "title":"option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "splashpage": { - "title":"Splash Page", - "type":"string", - "description": "what kind of splashpage does your community use?", - "required":false - }, - "updatemode": { - "title":"Updatemode", - "type":"string", - "description": "how do you deploy firmware updates?", - "required":false - }, - "vpn": { - "title":"VPN", - "type":"string", - "description": "implementation of inner city vpn", - "required":false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.3.2.json b/generator/0.3.2.json deleted file mode 100644 index d7554ae..0000000 --- a/generator/0.3.2.json +++ /dev/null @@ -1,515 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.3.2", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2"], - "default": "0.3.2", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "decription": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "stoererhaftung": { - "title": "Störerhaftung", - "description": "how the German störerhaftung is handled", - "required": false, - "type": "string" - }, - "bootstrap": { - "title": "Bootstrap", - "type": "string", - "description": "how to deal with fresh routers", - "required": false - }, - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download and docs", - "type": "string", - "description": "link to your firmware images or docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "keyexchange": { - "type": "string", - "description": "needs to be defined", - "required": false - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]*$", - "required": false - } - } - } - } - }, - "networks": { - "title": "Networks", - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocol", - "description": "routing protocol used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "splashpage": { - "title": "Splash Page", - "type": "string", - "description": "what kind of splashpage does your community use?", - "required": false - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - }, - "vpn": { - "title": "VPN", - "type": "string", - "description": "implementation of inner city vpn", - "required": false - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.0.json b/generator/0.4.0.json deleted file mode 100644 index 2053e5c..0000000 --- a/generator/0.4.0.json +++ /dev/null @@ -1,516 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.0", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0"], - "default": "0.4.0", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "decription": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.1.json b/generator/0.4.1.json deleted file mode 100644 index 493bdd1..0000000 --- a/generator/0.4.1.json +++ /dev/null @@ -1,516 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.1", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1"], - "default": "0.4.1", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, ISO-2, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "decription": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.10.json b/generator/0.4.10.json deleted file mode 100644 index 0bb2726..0000000 --- a/generator/0.4.10.json +++ /dev/null @@ -1,669 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.10", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.10"], - "default": "0.4.10", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" : "ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "vpnaccess": { - "title": "VPN Access", - "type": "string", - "enum" : ["", "automatic", "fwimage", "mail", "webform", "else"], - "default" : "", - "description": "How to access your VPN services", - "required": false - }, - "registrationurl": { - "title": "VPN Registration URL", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your website to request a new VPN key", - "required": false - }, - "orgrestrictions": { - "title": "Organizational Restrictions", - "type": "string", - "description": "Are there any organizational restrictions when using/installing your firmware?", - "required": false - }, - "techrestrictions": { - "title": "Technical Restrictions", - "type": "string", - "description": "Are there any technical restrictions like hardware?", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.11.json b/generator/0.4.11.json deleted file mode 100644 index eff9a5c..0000000 --- a/generator/0.4.11.json +++ /dev/null @@ -1,695 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.11", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.10", "0.4.11"], - "default": "0.4.11", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" : "ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "socialprojects": { - "title": "Refugees and social support projects", - "type": "object", - "required": false, - "properties": { - "number" : { - "title": "Number of projects", - "type": "number", - "description": "Number of projects supported by your Community", - "required": false - }, - "website" : { - "title": "URL of your infopage", - "type": "string", - "description": "A link to a web site where people can find an overview over your projects", - "required": false - }, - "contact" : { - "title": "Contact email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Please provide an email address to contact you on refugees and social projects", - "required": false - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "vpnaccess": { - "title": "VPN Access", - "type": "string", - "enum" : ["", "automatic", "fwimage", "mail", "webform", "else"], - "default" : "", - "description": "How to access your VPN services", - "required": false - }, - "registrationurl": { - "title": "VPN Registration URL", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your website to request a new VPN key", - "required": false - }, - "orgrestrictions": { - "title": "Organizational Restrictions", - "type": "string", - "description": "Are there any organizational restrictions when using/installing your firmware?", - "required": false - }, - "techrestrictions": { - "title": "Technical Restrictions", - "type": "string", - "description": "Are there any technical restrictions like hardware?", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.12.json b/generator/0.4.12.json deleted file mode 100644 index abe4176..0000000 --- a/generator/0.4.12.json +++ /dev/null @@ -1,695 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.12", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.10", "0.4.11", "0.4.12"], - "default": "0.4.12", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9_\\-]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" : "ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "socialprojects": { - "title": "Refugees and social support projects", - "type": "object", - "required": false, - "properties": { - "number" : { - "title": "Number of projects", - "type": "number", - "description": "Number of projects supported by your Community", - "required": false - }, - "website" : { - "title": "URL of your infopage", - "type": "string", - "description": "A link to a web site where people can find an overview over your projects", - "required": false - }, - "contact" : { - "title": "Contact email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Please provide an email address to contact you on refugees and social projects", - "required": false - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "vpnaccess": { - "title": "VPN Access", - "type": "string", - "enum" : ["", "automatic", "fwimage", "mail", "webform", "else"], - "default" : "", - "description": "How to access your VPN services", - "required": false - }, - "registrationurl": { - "title": "VPN Registration URL", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your website to request a new VPN key", - "required": false - }, - "orgrestrictions": { - "title": "Organizational Restrictions", - "type": "string", - "description": "Are there any organizational restrictions when using/installing your firmware?", - "required": false - }, - "techrestrictions": { - "title": "Technical Restrictions", - "type": "string", - "description": "Are there any technical restrictions like hardware?", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.13.json b/generator/0.4.13.json deleted file mode 100644 index 115c1dd..0000000 --- a/generator/0.4.13.json +++ /dev/null @@ -1,709 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API X.X.X", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.10", "0.4.11", "0.4.12", "0.4.13"], - "default": "0.4.13", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9_\\-]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" : "ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "socialprojects": { - "title": "Refugees and social support projects", - "type": "object", - "required": false, - "properties": { - "number" : { - "title": "Number of projects", - "type": "number", - "description": "Number of projects supported by your Community", - "required": false - }, - "website" : { - "title": "URL of your infopage", - "type": "string", - "description": "A link to a web site where people can find an overview over your projects", - "required": false - }, - "contact" : { - "title": "Contact email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Please provide an email address to contact you on refugees and social projects", - "required": false - } - } - }, - "privacy" : { - "title" : "Privacy Policy", - "type" : "object", - "required" : false, - "properties" : { - "policyurl" : { - "title" : "Privacy Policy URL", - "description" : "URL to your privacy policy description", - "type" : "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required" : false - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "vpnaccess": { - "title": "VPN Access", - "type": "string", - "enum" : ["", "automatic", "fwimage", "mail", "webform", "else"], - "default" : "", - "description": "How to access your VPN services", - "required": false - }, - "registrationurl": { - "title": "VPN Registration URL", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your website to request a new VPN key", - "required": false - }, - "orgrestrictions": { - "title": "Organizational Restrictions", - "type": "string", - "description": "Are there any organizational restrictions when using/installing your firmware?", - "required": false - }, - "techrestrictions": { - "title": "Technical Restrictions", - "type": "string", - "description": "Are there any technical restrictions like hardware?", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers serving zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.14.json b/generator/0.4.14.json deleted file mode 100644 index 21887a3..0000000 --- a/generator/0.4.14.json +++ /dev/null @@ -1,709 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.14", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9", "0.4.10", "0.4.11", "0.4.12", "0.4.13", "0.4.14"], - "default": "0.4.14", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community, if your local community belongs to a bigger one", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "Name of your city", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "The name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "The street address of your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "The zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "Your community's ICR channel; starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "A jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "If your community has a phone number (e.g. +49 1234 567890 based on the E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9_\\-]{1,15}", - "description": "Your community's Twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "Description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp of the event's date (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "URL to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "Name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "Category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "Type of the feed like RSS, Atom, XML", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "URL of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "Number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what ISO 8601 timestamp has your community status lastly changed?", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "Maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "URL of the map", - "type": "string", - "description": "The URL where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "How often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "The kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer", "hopglass"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "The kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "Services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "Name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "Describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from Freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "Support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description": "ID of your project, Betterplace-IDs are multiple digits and can be found within the URL", - "required": false - } - } - } - } - } - } - } - }, - "socialprojects": { - "title": "Refugees and social support projects", - "type": "object", - "required": false, - "properties": { - "number" : { - "title": "Number of projects", - "type": "number", - "description": "Number of projects supported by your Community", - "required": false - }, - "website" : { - "title": "URL of your infopage", - "type": "string", - "description": "A link to a web site where people can find an overview over your projects", - "required": false - }, - "contact" : { - "title": "Contact email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Please provide an email address to contact you on refugees and social projects", - "required": false - } - } - }, - "privacy" : { - "title" : "Privacy Policy", - "type" : "object", - "required" : false, - "properties" : { - "policyurl" : { - "title" : "Privacy Policy URL", - "description" : "URL to your privacy policy description", - "type" : "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required" : false - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "Technical details of your community's Freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "Link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "Link to your firmware docs", - "required": false - }, - "vpnaccess": { - "title": "VPN Access", - "type": "string", - "enum" : ["", "automatic", "fwimage", "mail", "webform", "else"], - "default" : "", - "description": "How to access your VPN services", - "required": false - }, - "registrationurl": { - "title": "VPN Registration URL", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your website to request a new VPN key", - "required": false - }, - "orgrestrictions": { - "title": "Organizational Restrictions", - "type": "string", - "description": "Are there any organizational restrictions when using/installing your firmware?", - "required": false - }, - "techrestrictions": { - "title": "Technical Restrictions", - "type": "string", - "description": "Are there any technical restrictions like hardware?", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "Name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "DNS servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "The domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "Networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "IPv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "IPv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "IPv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "IPv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "Routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "How do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.2.json b/generator/0.4.2.json deleted file mode 100644 index 56cad76..0000000 --- a/generator/0.4.2.json +++ /dev/null @@ -1,590 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.2", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2"], - "default": "0.4.2", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "decription": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "array", - "title": "Donations", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.3.json b/generator/0.4.3.json deleted file mode 100644 index 13e02ed..0000000 --- a/generator/0.4.3.json +++ /dev/null @@ -1,628 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.3", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3"], - "default": "0.4.3", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "decription": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "description": "ISO timestamp when the event happened (format yyyy-mm-dd)", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.4.json b/generator/0.4.4.json deleted file mode 100644 index 3138422..0000000 --- a/generator/0.4.4.json +++ /dev/null @@ -1,635 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.4", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4"], - "default": "0.4.4", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.5.json b/generator/0.4.5.json deleted file mode 100644 index a7b9edb..0000000 --- a/generator/0.4.5.json +++ /dev/null @@ -1,635 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.5", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5"], - "default": "0.4.5", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.6.json b/generator/0.4.6.json deleted file mode 100644 index 0bda09c..0000000 --- a/generator/0.4.6.json +++ /dev/null @@ -1,641 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.6", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6"], - "default": "0.4.6", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.7.json b/generator/0.4.7.json deleted file mode 100644 index f53e025..0000000 --- a/generator/0.4.7.json +++ /dev/null @@ -1,642 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API X.X.X", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7"], - "default": "0.4.7", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^irc://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.8.json b/generator/0.4.8.json deleted file mode 100644 index 7b6b24c..0000000 --- a/generator/0.4.8.json +++ /dev/null @@ -1,642 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API X.X.X", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8"], - "default": "0.4.8", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/0.4.9.json b/generator/0.4.9.json deleted file mode 100644 index fc1e6a8..0000000 --- a/generator/0.4.9.json +++ /dev/null @@ -1,642 +0,0 @@ -{ - "schema": { - "type": "object", - "description": "Freifunk Community API 0.4.9", - "required": false, - "properties": { - "api": { - "title": "API", - "type": "string", - "description": "The Freifunk Community API version you use", - "enum": ["0.1", "0.2.0", "0.2.1", "0.3.0", "0.3.1", "0.3.2", "0.4.0", "0.4.1", "0.4.2", "0.4.3", "0.4.4", "0.4.5", "0.4.6", "0.4.7", "0.4.8", "0.4.9"], - "default": "0.4.9", - "required": true - }, - "name": { - "title": "Name", - "type": "string", - "description": "The name of your community", - "required": true - }, - "metacommunity": { - "title": "Metacommunity", - "type": "string", - "description": "The name of your meta community. if you local community belongs to a bigger community", - "required": false - }, - "location": { - "title": "Location", - "type": "object", - "description": "Position data such as a postal address or geographic coordinates", - "required": true, - "properties": { - "city": { - "title": "City", - "type": "string", - "description": "name of your city or region", - "required": true - }, - "country": { - "title": "Country", - "type": "string", - "description": "Your country, list taken from http://countrylist.net/de/", - "enum": ["", "AF","AX","AL","DZ","AS","AD","AO","AI","AQ","AG","AR","AM","AW","AC","AU","AT","AZ","BS","BH","BD","BB","BY","BE","BZ","BJ","BM","BT","BO","BA","BW","BV","BR","IO","BN","BG","BF","BI","KH","CM","CA","IC","CV","KY","CF","TD","CL","CN","CX","CC","CO","KM","CG","CD","CK","CR","CI","HR","CU","CY","CZ","DK","DG","DJ","DM","DO","EC","EG","SV","GQ","ER","EE","ET","EU","FK","FO","FJ","FI","FR","GF","PF","TF","GA","GM","GE","DE","GH","GI","GR","GL","GD","GP","GU","GT","GG","GN","GW","GY","HT","HM","VA","HN","HK","HU","IS","IN","ID","IR","IQ","IE","IM","IL","IT","JM","JP","JE","JO","KZ","KE","KI","KP","KR","KW","KG","LA","LV","LB","LS","LR","LY","LI","LT","LU","MO","MK","MG","MW","MY","MV","ML","MT","MH","MQ","MR","MU","YT","MX","FM","MD","MC","MN","ME","MS","MA","MZ","MM","NA","NR","NP","NL","AN","NC","NZ","NI","NE","NG","NU","NF","MP","NO","OM","PK","PW","PS","PA","PG","PY","PE","PH","PN","PL","PT","PR","QA","RE","RO","RU","RW","SH","KN","LC","PM","VC","WS","SM","ST","SA","NT","SN","CS","SC","SL","SG","SK","SI","SB","SO","ZA","GS","SU","ES","LK","SD","SR","SJ","SZ","SE","CH","SY","TW","TJ","TZ","TH","TL","TG","TK","TO","TT","TA","TN","TR","TM","TC","TV","UG","UA","AE","GB","US","UY","UZ","VU","VE","VN","VG","VI","WF","EH","YE","ZM","ZW"], - "default": "", - "required": false - }, - "address": { - "type": "object", - "description": "The address of the place you meet", - "required": false, - "properties": { - "Name": { - "title": "Name of your place", - "type": "string", - "description": "the name of place you meet", - "required": false - }, - "Street": { - "title": "Street", - "type": "string", - "description": "the street your meeting place", - "required": false - }, - "Zipcode": { - "title": "ZIP", - "type": "string", - "description": "the zip code of your meeting place", - "required": false - } - } - }, - "lat": { - "title": "Latitude", - "type": "number", - "description": "Latitude of your city in decimal degrees (e.g. 51.12345)", - "required": true - }, - "lon": { - "title": "Longitude", - "type": "number", - "description": "Longitude of your city in decimal degrees (e.g. 11.6789)", - "required": true - } - } - }, - "contact": { - "type": "object", - "required": true, - "properties": { - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to which other people can contact your community (user@domain.com)", - "required": false - }, - "facebook": { - "title": "facebook", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)facebook\\.com/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's facebook account (https://facebook.com/...)", - "required": false - }, - "identica": { - "title": "Identica", - "type": "string", - "pattern": "^(http|https)://([a-z\\-]*\\.|)identi\\.ca/[A-Za-z0-9ÄÖÜäöüß\\-_\\.]+", - "description": "URL to your community's identica account (https://identi.ca/...)", - "required": false - }, - "irc": { - "title": "IRC", - "type": "string", - "pattern": "^(irc|ircs)://.*", - "description": "your community's irc channel, starts with irc://", - "required": false - }, - "jabber": { - "title": "Jabber", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}(\\?join){0,1}$", - "description": "a jabber account someone reads (account@jabberserver.tld)", - "required": false - }, - "ml": { - "title": "Mailinglist", - "type": "string", - "description": "The email address (user@domain.com) of your mailing list or a link to the mailinglist info page (http{s}://...)", - "pattern": "^([A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}|(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+)$", - "required": false - }, - "phone": { - "title": "Phone", - "type": "string", - "description": "if your community has a phone number (e.g. +49 1234 567890 based on E.123 notation)", - "required": false - }, - "googleplus": { - "title": "Google+", - "type": "string", - "description": "URL to your community's g+ account (https://plus.google.com/...)", - "pattern": "^(http|https)://plus\\.google\\.com/[A-Za-z0-9ÄÖÜäöüß\\+\\-\\./_]+", - "required": false - }, - "twitter": { - "title": "Twitter", - "type": "string", - "pattern": "^@[A-Za-z0-9]{1,15}", - "description": "Your community's twitter name (starts with @)", - "required": false - }, - "webform": { - "title": "Webform", - "type": "string", - "description": "URL to your community's contact form (http{s}://...)", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "required": false - } - } - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The main website (http{s}://...)", - "required": true - }, - "timeline": { - "type": "array", - "description": "These are lifetime events something like date of birth (and rebirth :-) of your community or other important milestones ", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "description": { - "title": "Description", - "type": "string", - "description": "description of your lifetime event", - "required": false - }, - "timestamp": { - "title": "Timestamp", - "type": "string", - "pattern": "^([0-9]{4})(?:-?W([0-9]+)(?:-?([0-9]+)D?)?|(?:-([0-9]+))?-([0-9]+))(?:[T ]([0-9]+):([0-9]+)(?::([0-9]+)(?:\\.([0-9]+))?)?)?(?:Z(-?[0-9]*))?", - "description": "ISO 8601 timestamp when the event happened (format yyyy-mm-dd)", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url to details of this timeline-element", - "required": false - } - } - } - }, - "feeds": { - "type": "array", - "description": "Feeds you provide your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "name": { - "title": "Feed name", - "type": "string", - "description": "name of the feed", - "required": false - }, - "category": { - "title": "Feed category", - "type": "string", - "enum": ["blog", "forum", "ics", "podcast", "wiki", "others", ""], - "default": "", - "description": "category of the feed like blog entries, calendars, forum messages, wiki articles, ...", - "required": false - }, - "type": { - "title": "Feed type", - "type": "string", - "description": "type of the feed like rss, atom, xml", - "required": false - }, - "url": { - "title": "URL", - "type": "string", - "description": "url of the feed", - "required": false - } - } - } - }, - "state": { - "type": "object", - "description": "A collection of status-related data. Actual open/closed status, icons, last change timestamp etc.", - "required": true, - "properties": { - "nodes": { - "title": "Active Nodes", - "type": "integer", - "description": "number of active nodes. This field is predestined to be updated regularly, please see sample solutions for Gluon or OLSR", - "required": false - }, - "lastchange": { - "title": "Last Change", - "type": "string", - "description": "At what iso timestamp has your community status lastly changed? (ISO 8601 timestamp)", - "default": 0, - "required": true - }, - "message": { - "title": "Message", - "type": "string", - "description": "A free-form string something like 'open for public', 'members only' or whatever you want it to be)", - "required": false - }, - "description": { - "title": "Description", - "type": "string", - "description": "Describe your community in a few lines", - "required": false - }, - "focus": { - "title": "Focus", - "type": "array", - "description": "What's the focus of your local community?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "infrastructure/backbone", - "Public Free Wifi", - "Social Community Building", - "Local services and content", - "Free internet access" - ] - } - } - } - }, - "nodeMaps": { - "type": "array", - "description": "maps of nodes or topology your community provides", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Url of the map", - "type": "string", - "description": "the url where the map is located", - "required": false - }, - "interval": { - "title": "interval", - "type": "string", - "description": "how often the map will be refreshed", - "required": false - }, - "technicalType": { - "title": "map technical type", - "type": "string", - "description": "the kind of map is used", - "enum": ["", "ffmap", "ffsomething", "olsr-dot", "openwifimap", "netmon", "libremap", "nodewatcher", "kml", "nodelist", "meshviewer"], - "default": "", - "required": false - }, - "mapType": { - "title": "map type human readable", - "type": "string", - "description": "the kind of data the map provides", - "enum": ["", "geographical", "structural", "list/status"], - "default": "", - "required": false - } - } - } - }, - "services": { - "type": "array", - "description": "services provided by your community", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "serviceName": { - "title": "Service Name", - "type": "string", - "description": "name of your service (e.g. jabber...)", - "required": false - }, - "serviceDescription": { - "title": "Service Description", - "type": "string", - "description": "describe your service", - "required": false - }, - "externalUri": { - "title": "External URI", - "type": "string", - "description": "URI to use your service from the internet", - "required": false - }, - "internalUri": { - "title": "Internal URI", - "type": "string", - "description": "URI to use your service from freifunk or icvpn-networks", - "required": false - } - } - } - }, - "support": { - "type": "object", - "description": "support for your community, e.g. by a local club, and donations via campaigns e.g. by betterplace.de", - "required": false, - "properties": { - "club": { - "title": "Supporting Club", - "type": "object", - "required": false, - "properties": { - "name" : { - "title": "Club Name", - "type": "string", - "description": "Name of the Club", - "required": false - }, - "street" : { - "title": "Street", - "type": "string", - "description": "Address - Street", - "required": false - }, - "zip" : { - "title": "zip", - "type": "string", - "description": "Address - ZIP", - "required": false - }, - "city" : { - "title": "City", - "type": "string", - "description": "Address - City", - "required": false - }, - "url": { - "title": "Homepage", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "The club's website (http{s}://...)", - "required": false - }, - "email": { - "title": "Email", - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖUß_\\-\\.]+@[A-Za-z0-9äöüÄÖUß_\\-\\.]+\\.[A-Za-z]{2,}$", - "description": "Email address to contact the club (user@domain.com)", - "required": false - }, - "board" : { - "title": "Board Members", - "type": "array", - "description": "Who are board members of the club?", - "required": false, - "items": { - "type": "string", - "title": "name", - "required": false - } - } - } - }, - "donations": { - "type": "object", - "title": "Donations", - "required": false, - "properties": { - "bankaccount": { - "type": "object", - "title": "Bank Account", - "required": false, - "properties": { - "IBAN": { - "type": "string", - "title": "IBAN", - "required": false - }, - "BIC": { - "type": "string", - "title": "BIC", - "required": false - }, - "usage": { - "type": "string", - "title": "Usage of the donation", - "description": "Please use this string as transfer-purpose to define a special usage of your donation.", - "required": false - } - } - }, - "campaigns": { - "title": "Campagins", - "type": "array", - "required": false, - "items": { - "type": "object", - "required": false, - "properties": { - "provider": { - "title": "Campaign Provider", - "type": "string", - "description": "Where do you host your donations?", - "enum": ["", "betterplace", "boost"], - "default": "", - "required": false - }, - "projectid": { - "title": "Project ID", - "type": "string", - "description" :"ID of your project, betterplace ids are multiple digits and can be found within the url", - "required": false - } - } - } - } - } - } - } - }, - "techDetails": { - "type": "object", - "id": "http://wiki.freifunk.net/Freifunk_Firmware/%C3%9Cbersicht_Communities", - "description": "technical details of your community's freifunk implementation", - "required": false, - "properties": { - "firmware": { - "type": "object", - "required": false, - "properties": { - "url": { - "title": "Firmware download", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware images", - "required": false - }, - "docs": { - "title": "Firmware Documents", - "type": "string", - "pattern": "^(http|https)://[A-Za-z0-9ÄÖÜäöüß\\-_\\./]+", - "description": "link to your firmware docs", - "required": false - }, - "name": { - "title": "Firmware Name", - "type": "string", - "description": "name of your firmware", - "required": false - } - } - }, - "dns": { - "title": "DNS Servers", - "descripition": "dns servers for domains used by your community", - "type": "array", - "items": { - "type": "object", - "required": false, - "properties": { - "domainname": { - "type": "string", - "description": "the domain name (e.g. ffhh, ffol)", - "pattern": "^[A-Za-z0-9äöüÄÖÜß\\.\\-\\_]{2,}$", - "required": false, - "title": "Domain Name" - }, - "nameserver": { - "type": "array", - "title": "Nameserver", - "description": "Nameservers servings zones of your domain", - "required": false, - "items": { - "type": "string", - "pattern": "^[A-Za-z0-9äöüÄÖÜß_\\-\\.:]*$", - "required": false - } - } - } - } - }, - "networks": { - "type": "object", - "description": "networks used by your community", - "required": false, - "properties": { - "ipv6": { - "type": "array", - "title": "IPv6 networks", - "description": "ipv6 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv6 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv6 network network (e.g.2620:0:2d0:200::7/32) in CIDR notation", - "pattern": "^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*(\\/(\\d|\\d\\d|1[0-1]\\d|12[0-8]))$", - "required": false - } - } - } - }, - "ipv4": { - "type": "array", - "description": "ipv4 networks used by your community", - "required": false, - "items": { - "type": "object", - "title": "ipv4 network object", - "required": false, - "properties": { - "network": { - "type": "string", - "description": "ipv4 network name (e.g. 10.w.x.y/z) in CIDR notation", - "pattern": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/(\\d|[1-2]\\d|3[0-2]))$", - "required": false - } - } - } - } - } - }, - "routing": { - "title": "Routing protocols", - "description": "routing protocols used within your community", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "802.11s", - "Babel", - "batman-adv", - "bmx6", - "bmxd", - "cjdns", - "OLSR", - "OLSRv2" - ] - } - }, - "legals": { - "title": "Legal Issues", - "description": "What do you use to handle legal issues, e.g. the German Störerhaftung or restrictions in your country?", - "required": false, - "type": "array", - "items": { - "type": "string", - "title": "option", - "enum": [ - "nothing", - "vpnnational", - "vpninternational", - "zappscript", - "p2pblock", - "splashpage", - "termsconditions", - "anonymizer", - "institutions" - ] - } - }, - "updatemode": { - "title": "Updatemode", - "type": "array", - "description": "how do you deploy firmware updates?", - "required": false, - "items": { - "type": "string", - "title": "option", - "enum": [ - "none", - "manual", - "autoupdate" - ] - } - } - } - } - }, - "$schema" : "http://json-schema.org/draft-03/schema#" - } -} diff --git a/generator/README.md b/generator/README.md index e0e368f..9b20044 100644 --- a/generator/README.md +++ b/generator/README.md @@ -14,4 +14,6 @@ For the complete JSON schema, visit [here](https://github.com/freifunk/api.freif To create an instance of the generator, follow these simple steps : * clone the repo `git clone https://github.com/freifunk/api.freifunk.net.git` * create the configuration file, name it `config.json` and put it in the current folder. A sample configuration file is available for you to make a copy. +* copy all spec files run: "cd generator && ./downloadSpecs.sh" +* let your local webserver point its document root to /generator/ * Visit the generator at `localhost/[..]/api.freifunk.net/generator` diff --git a/generator/downloadSpecs.sh b/generator/downloadSpecs.sh new file mode 100755 index 0000000..a22f0a8 --- /dev/null +++ b/generator/downloadSpecs.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +#This script downloads most up-to-date Freifunk JSON Schema files from github.com/freifunk/api.freifunk.net/tree/master/specs +#We dislike redundancy as it introduces maintenance complexity, so this script avoids mirroring files in this git repo. + +echo "Cleanup left-overs from previous runs..." +rm ./*.json + +echo "Getting directory listing from github..." +curl -L https://api.github.com/repos/freifunk/api.freifunk.net/contents/specs > list.json + +echo "Get Download URLs (filter for Freifunk JSON Schema files)..." +urls=$(jq -r '.[] | select(.name|test("^([0-9]*.){0,1}[0-9]+.[0-9]+.json$")) | .download_url' < list.json) + +# multi-line value should by design be splitted line-by-line, ignore shell check: +# shellcheck disable=SC2068 +for downloadUrl in ${urls[@]} +do + echo "Downloading: ${downloadUrl}" + wget -q "$downloadUrl" +done + +rm list.json \ No newline at end of file