isp.json 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. {
  2. "$schema": "http://json-schema.org/draft-04/schema#",
  3. "$id": "http://ffdn.org/ispschema/draft-01/schema#",
  4. "title": "ISP",
  5. "description": "Object describing a local ISP",
  6. "type": "object",
  7. "required": ["name", "email", "memberCount", "subscriberCount", "coveredAreas", "version"],
  8. "properties": {
  9. "name": {
  10. "description": "The ISP's name",
  11. "type": "string"
  12. },
  13. "shortname": {
  14. "description": "Shorter name",
  15. "type": "string",
  16. "maxLength": 15
  17. },
  18. "description": {
  19. "description": "Short text describing the project",
  20. "type": "string"
  21. },
  22. "logoURL": {
  23. "description": "HTTP(S) URL of the ISP's logo",
  24. "type": "string",
  25. "format": "uri"
  26. },
  27. "website": {
  28. "description": "URL to the official website",
  29. "type": "string",
  30. "format": "uri"
  31. },
  32. "otherWebsites": {
  33. "description": "Additional websites hosted by the ISP (wiki, etherpad, ..)",
  34. "type": "object",
  35. "patternProperties": {
  36. "^.+$": { "type": "string", "format": "uri" }
  37. }
  38. },
  39. "publicDocuments": {
  40. "description": "Administrative or otherwise public documents concerning the organisation",
  41. "type": "object",
  42. "properties": {
  43. "statutes": { "type": "string", "format": "uri" },
  44. "internalRules": { "type": "string", "format": "uri" }
  45. },
  46. "additionalProperties": false
  47. },
  48. "email": {
  49. "description": "Contact email address",
  50. "type": "string",
  51. "format": "email"
  52. },
  53. "mainMailingList": {
  54. "description": "Main public mailing-list",
  55. "type": "string",
  56. "format": "email"
  57. },
  58. "creationDate": {
  59. "description": "Date of creation for legal structure, in ISO8601 format",
  60. "type": "string"
  61. },
  62. "ffdnMemberSince": {
  63. "description": "Date at wich the ISP joined the Federation, in ISO8601 format",
  64. "type": "string"
  65. },
  66. "progressStatus": {
  67. "description": "Progression status of the ISP",
  68. "type": "integer",
  69. "minimum": 1,
  70. "maximum": 7
  71. },
  72. "memberCount": {
  73. "description": "Number of members",
  74. "type": "integer",
  75. "minimum": 0
  76. },
  77. "subscriberCount": {
  78. "description": "Number of subscribers by service",
  79. "type": "object",
  80. "patternProperties": {
  81. "^(xdsl|vpn|wifi|fiber)$": { "type": "integer", "minimum": 0 }
  82. },
  83. "properties": {
  84. "xdsl": { "type": "integer", "minimum": 0 },
  85. "vpn": { "type": "integer", "minimum": 0 },
  86. "wifi": { "type": "integer", "minimum": 0 },
  87. "fiber": { "type": "integer", "minimum": 0 }
  88. },
  89. "additionalProperties": false
  90. },
  91. "chatrooms": {
  92. "description": "URIs to the various chat-rooms",
  93. "type": "array",
  94. "items": { "type": "string", "format": "uri" },
  95. "uniqueItems": true
  96. },
  97. "registeredOffice": {
  98. "description": "address of the registered office (siège social)",
  99. "$ref": "http://json-schema.org/address"
  100. },
  101. "coordinates": {
  102. "description": "Coordinates of the registered office",
  103. "$ref": "http://json-schema.org/geo"
  104. },
  105. "coveredAreas": {
  106. "description": "Array of covered area in GeoJSON format",
  107. "type": "array",
  108. "items": { "$ref": "#/definitions/coveredArea" }
  109. },
  110. "asn": {
  111. "description": "The AS Number assigned by RIR",
  112. "type": "integer",
  113. "minimum": 0
  114. },
  115. "nlnogParticipant": {
  116. "description": "Participating to the NL-NOG RING? cf. https://ring.nlnog.net/",
  117. "type": "boolean"
  118. },
  119. "internetcube": {
  120. "description": "Participating to the Internetcube project (collective purchases, install parties)",
  121. "type": "boolean"
  122. },
  123. "arcepCode": {
  124. "description": "The identifier assigned by the ARCEP",
  125. "type": "string"
  126. },
  127. "ipv6Support": {
  128. "description": "Level of IPV6 support. 0: none, 1: partial, 2: quite good, 3: full",
  129. "type": "object",
  130. "properties": {
  131. "infra": {
  132. "description": "Servers can be reached in IPV6? (website, mail servers, DNS servers, ...)",
  133. "type": "integer",
  134. "minimum": 0,
  135. "maximum": 3
  136. },
  137. "subcribers": {
  138. "description": "Subscribers are provided with IPV6 connectivity",
  139. "type": "integer",
  140. "minimum": 0,
  141. "maximum": 3
  142. }
  143. }
  144. },
  145. "services": {
  146. "description": "Misc services provided to members or even publicly",
  147. "type": "array",
  148. "items": { "type": "string" }
  149. },
  150. "version": {
  151. "description": "Version of the specification implemented",
  152. "type": "number",
  153. "enum": [0.2]
  154. }
  155. },
  156. "definitions": {
  157. "coveredArea": {
  158. "type": "object",
  159. "required": ["name", "technologies"],
  160. "properties": {
  161. "name": {
  162. "type": "string"
  163. },
  164. "technologies": {
  165. "type": "array",
  166. "items": { "enum": [ "ftth", "fttb", "dsl", "wifi", "vpn" ] }
  167. },
  168. "area": {
  169. "$ref": "http://json-schema.org/geojson/geojson.json#"
  170. }
  171. }
  172. }
  173. }
  174. }