Browse Source

Add more information into isp.json (new schema version: 0.2).

pitchum 6 years ago
parent
commit
1878ecdd0d
3 changed files with 132 additions and 6 deletions
  1. 63 5
      ispformat/schema/0.2/isp.json
  2. 1 1
      ispformat/schema/__init__.py
  3. 68 0
      sample-v0.2.isp.json

+ 63 - 5
ispformat/schema/0.2/isp.json

@@ -37,6 +37,15 @@
                 "^.+$": { "type": "string", "format": "uri" }
             }
         },
+        "publicDocuments": {
+            "description": "Administrative or otherwise public documents concerning the organisation",
+            "type": "object",
+            "properties": {
+                "statutes":      { "type": "string", "format": "uri" },
+                "internalRules": { "type": "string", "format": "uri" }
+            },
+            "additionalProperties": false
+        },
         "email": {
             "description": "Contact email address",
             "type": "string",
@@ -67,9 +76,18 @@
             "minimum": 0
         },
         "subscriberCount": {
-            "description": "Number of subscribers to an internet access",
-            "type": "integer",
-            "minimum": 0
+            "description": "Number of subscribers by service",
+            "type": "object",
+            "patternProperties": {
+                "^(xdsl|vpn|wifi|fiber)$": { "type": "integer", "minimum": 0 }
+            },
+            "properties": {
+                "xdsl":  { "type": "integer", "minimum": 0 },
+                "vpn":   { "type": "integer", "minimum": 0 },
+                "wifi":  { "type": "integer", "minimum": 0 },
+                "fiber": { "type": "integer", "minimum": 0 }
+            },
+            "additionalProperties": false
         },
         "chatrooms": {
             "description": "URIs to the various chat-rooms",
@@ -90,10 +108,50 @@
             "type": "array",
             "items": { "$ref": "#/definitions/coveredArea" }
         },
+        "asn": {
+            "description": "The AS Number assigned by RIR",
+            "type": "integer",
+            "minimum": 0
+        },
+        "nlnogParticipant": {
+            "description": "Participating to the NL-NOG RING? cf. https://ring.nlnog.net/",
+            "type": "boolean"
+        },
+        "internetcube": {
+            "description": "Participating to the Internetcube project (collective purchases, install parties)",
+            "type": "boolean"
+        },
+        "arcepCode": {
+            "description": "The identifier assigned by the ARCEP",
+            "type": "string"
+        },
+        "ipv6Support": {
+            "description": "Level of IPV6 support. 0: none, 1: partial, 2: quite good, 3: full",
+            "type": "object",
+            "properties": {
+                "infra": {
+                    "description": "Servers can be reached in IPV6? (website, mail servers, DNS servers, ...)",
+                    "type": "integer",
+                    "minimum": 0,
+                    "maximum": 3
+                },
+                "subcribers": {
+                    "description": "Subscribers are provided with IPV6 connectivity",
+                    "type": "integer",
+                    "minimum": 0,
+                    "maximum": 3
+                }
+            }
+        },
+        "services": {
+            "description": "Misc services provided to members or even publicly",
+            "type": "array",
+            "items": { "type": "string" }
+        },
         "version": {
             "description": "Version of the specification implemented",
             "type": "number",
-            "enum": [0.1]
+            "enum": [0.2]
         }
     },
 
@@ -107,7 +165,7 @@
                 },
                 "technologies": {
                     "type": "array",
-                    "items": { "enum": [ "ftth", "fttb", "dsl", "wifi", "vpn", "cube" ] }
+                    "items": { "enum": [ "ftth", "fttb", "dsl", "wifi", "vpn" ] }
                 },
                 "area": {
                     "$ref": "http://json-schema.org/geojson/geojson.json#"

+ 1 - 1
ispformat/schema/__init__.py

@@ -18,7 +18,7 @@ versions = {
     0.2: load_schema('0.2'),
 }
 
-latest = versions[0.1]
+latest = versions[0.2]
 
 def deps_for_version(version):
     return {

+ 68 - 0
sample-v0.2.isp.json

@@ -0,0 +1,68 @@
+{
+ "version": 0.2,
+ "name": "Franciliens.net",
+ "website": "https://www.franciliens.net/",
+ "logoURL": "https://f.franciliens.net/communication/logo/logo_400x65.png",
+ "description": "Fournisseur d'acc\u00e8s Internet associatif en \u00cele-de-France",
+ "ffdnMemberSince": "2011-07-18",
+ "creationDate": "2010-10-22",
+ "memberCount": 121,
+ "subscriberCount": {
+    "xdsl": 17,
+    "vpn": 37
+  },
+ "arcepCode": "toto42???",
+ "chatrooms": [
+  "irc://irc.geeknode.org/franciliens.net",
+  "xmpp:discussion@salons.franciliens.net?join"
+ ],
+ "mainMailingList": "public@listes.franciliens.net",
+ "otherWebsites": {
+  "Suivi": "https://redmine.franciliens.net",
+  "Listes de discussion": "https://listes.franciliens.net"
+ },
+ "publicDocuments": {
+   "statutes": "http://f.franciliens.net/administratif/statuts.pdf",
+   "internalRules": "http://f.franciliens.net/administratif/reglement-interieur.pdf"
+ },
+ "ipv6Support": {
+   "infra": 0,
+   "subscribers": 0
+ },
+ "email": "bureau@franciliens.net",
+ "services": ["glous", "xmpp"],
+ "internetcube": true,
+ "progressStatus": 7,
+ "coordinates": {
+  "longitude": 2.34581,
+  "latitude": 48.8657
+ },
+ "coveredAreas": [
+  {
+   "name": "\u00cele-de-France",
+   "technologies": [
+    "dsl",
+    "vpn"
+   ],
+   "area": {
+    "coordinates": [
+     [
+      [ 1.742695, 49.179802],
+      [ 1.756131, 49.174877],
+      [ 2.937888, 49.077999],
+      [ 3.485188, 48.851910],
+      [ 3.420680, 48.415451],
+      [ 2.483238, 48.164516],
+      [ 1.930424, 48.403954],
+      [ 1.586621, 48.843204],
+      [ 1.577269, 48.844360],
+      [ 1.476460, 49.053707],
+      [ 1.738950, 49.192188],
+      [ 1.742695, 49.179802]
+     ]
+    ],
+    "type": "Polygon"
+   }
+  }
+ ]
+}