isp-0.1.json 3.8 KB

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