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