json_schema: {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "id": "http://nodeinfo.diaspora.software/ns/schema/1.0#",
      "description": "NodeInfo schema version 1.0.",
      "type": "object",
      "additionalProperties": false,
      "required": [
          "version",
          "software",
          "protocols",
          "services",
          "openRegistrations",
          "usage",
          "metadata"
      ],
      "properties": {
          "version": {
              "description": "The schema version, must be 1.0.",
              "enum": [
                  "1.0"
              ]
          },
          "software": {
              "description": "Metadata about server software in use.",
              "type": "object",
              "additionalProperties": false,
              "required": [
                  "name",
                  "version"
              ],
              "properties": {
                  "name": {
                      "description": "The canonical name of this server software.",
                      "enum": [
                          "diaspora",
                          "friendica",
                          "redmatrix"
                      ]
                  },
                  "version": {
                      "description": "The version of this server software.",
                      "type": "string"
                  }
              }
          },
          "protocols": {
              "description": "The protocols supported on this server.",
              "type": "object",
              "additionalProperties": false,
              "required": [
                  "inbound",
                  "outbound"
              ],
              "properties": {
                  "inbound": {
                      "description": "The protocols this server can receive traffic for.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                          "enum": [
                              "buddycloud",
                              "diaspora",
                              "friendica",
                              "gnusocial",
                              "libertree",
                              "mediagoblin",
                              "pumpio",
                              "redmatrix",
                              "smtp",
                              "tent"
                          ]
                      }
                  },
                  "outbound": {
                      "description": "The protocols this server can generate traffic for.",
                      "type": "array",
                      "minItems": 1,
                      "items": {
                          "enum": [
                              "buddycloud",
                              "diaspora",
                              "friendica",
                              "gnusocial",
                              "libertree",
                              "mediagoblin",
                              "pumpio",
                              "redmatrix",
                              "smtp",
                              "tent"
                          ]
                      }
                  }
              }
          },
          "services": {
              "description": "The third party sites this server can connect to via their application API.",
              "type": "object",
              "additionalProperties": false,
              "required": [
                  "inbound",
                  "outbound"
              ],
              "properties": {
                  "inbound": {
                      "description": "The third party sites this server can retrieve messages from for combined display with regular traffic.",
                      "type": "array",
                      "minItems": 0,
                      "items": {
                          "enum": [
                              "appnet",
                              "gnusocial",
                              "pumpio"
                          ]
                      }
                  },
                  "outbound": {
                      "description": "The third party sites this server can publish messages to on the behalf of a user.",
                      "type": "array",
                      "minItems": 0,
                      "items": {
                          "enum": [
                              "appnet",
                              "blogger",
                              "buddycloud",
                              "diaspora",
                              "dreamwidth",
                              "drupal",
                              "facebook",
                              "friendica",
                              "gnusocial",
                              "google",
                              "insanejournal",
                              "libertree",
                              "linkedin",
                              "livejournal",
                              "mediagoblin",
                              "myspace",
                              "pinterest",
                              "posterous",
                              "pumpio",
                              "redmatrix",
                              "smtp",
                              "tent",
                              "tumblr",
                              "twitter",
                              "wordpress",
                              "xmpp"
                          ]
                      }
                  }
              }
          },
          "openRegistrations": {
              "description": "Whether this server allows open self-registration.",
              "type": "boolean"
          },
          "usage": {
              "description": "Usage statistics for this server.",
              "type": "object",
              "additionalProperties": false,
              "required": [
                  "users"
              ],
              "properties": {
                  "users": {
                      "description": "statistics about the users of this server.",
                      "type": "object",
                      "additionalProperties": false,
                      "properties": {
                          "total": {
                              "description": "The total amount of on this server registered users.",
                              "type": "integer",
                              "minimum": 0
                          },
                          "activeHalfyear": {
                              "description": "The amount of users that signed in at least once in the last 180 days.",
                              "type": "integer",
                              "minimum": 0
                          },
                          "activeMonth": {
                              "description": "The amount of users that signed in at least once in the last 30 days.",
                              "type": "integer",
                              "minimum": 0
                          }
                      }
                  },
                  "localPosts": {
                      "description": "The amount of posts that were made by users that are registered on this server.",
                      "type": "integer",
                      "minimum": 0
                  },
                  "localComments": {
                      "description": "The amount of comments that were made by users that are registered on this server.",
                      "type": "integer",
                      "minimum": 0
                  }
              }
          },
          "metadata": {
              "description": "Free form key value pairs for software specific values. Clients should not rely on any specific key present.",
              "type": "object",
              "minProperties": 0,
              "additionalProperties": true
          }
      }
  }