isp.json 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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. "email": {
  40. "description": "Contact email address",
  41. "type": "string",
  42. "format": "email"
  43. },
  44. "mainMailingList": {
  45. "description": "Main public mailing-list",
  46. "type": "string",
  47. "format": "email"
  48. },
  49. "creationDate": {
  50. "description": "Date of creation for legal structure, in ISO8601 format",
  51. "type": "string"
  52. },
  53. "ffdnMemberSince": {
  54. "description": "Date at wich the ISP joined the Federation, in ISO8601 format",
  55. "type": "string"
  56. },
  57. "progressStatus": {
  58. "description": "Progression status of the ISP",
  59. "type": "integer",
  60. "minimum": 1,
  61. "maximum": 7
  62. },
  63. "memberCount": {
  64. "description": "Number of members",
  65. "type": "integer",
  66. "minimum": 0
  67. },
  68. "subscriberCount": {
  69. "description": "Number of subscribers to an internet access",
  70. "type": "integer",
  71. "minimum": 0
  72. },
  73. "chatrooms": {
  74. "description": "URIs to the various chat-rooms",
  75. "type": "array",
  76. "items": { "type": "string", "format": "uri" },
  77. "uniqueItems": true
  78. },
  79. "registeredOffice": {
  80. "description": "address of the registered office (siège social)",
  81. "$ref": "http://json-schema.org/address"
  82. },
  83. "coordinates": {
  84. "description": "Coordinates of the registered office",
  85. "$ref": "http://json-schema.org/geo"
  86. },
  87. "coveredAreas": {
  88. "description": "Array of covered area in GeoJSON format",
  89. "type": "array",
  90. "items": { "$ref": "#/definitions/coveredArea" }
  91. },
  92. "version": {
  93. "description": "Version of the specification implemented",
  94. "type": "number",
  95. "enum": [0.1]
  96. }
  97. },
  98. "definitions": {
  99. "coveredArea": {
  100. "type": "object",
  101. "required": ["name", "technologies"],
  102. "properties": {
  103. "name": {
  104. "type": "string"
  105. },
  106. "technologies": {
  107. "type": "array",
  108. "items": { "enum": [ "ftth", "fttb", "dsl", "wifi", "vpn" ] }
  109. },
  110. "area": {
  111. "$ref": "http://json-schema.org/geojson/geojson.json#"
  112. }
  113. }
  114. }
  115. }
  116. }