mirror of
https://github.com/mastodon/mastodon
synced 2024-12-15 23:28:14 +09:00
6cdbc345f4
* add json-schema to :test in Gemfile * Create node_info_2.0_schema.json * test match_response_schema * Create match_response_schema.rb * Update nodeinfo_controller_spec.rb * Rename spec/support/node_info_2.0_schema.json to spec/support/schema/node_info_2.0_schema.json * Update match_response_schema.rb * cleanup * additionally validate the json schema itself disable throwing errors test the schema matcher * rename nodeinfo schema to nodeinfo_2.0 * use Rails.root.join to construct the path * prettify json * sync Gemfile.lock
171 lines
4.8 KiB
JSON
171 lines
4.8 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-04/schema#",
|
|
"id": "http://nodeinfo.diaspora.software/ns/schema/2.0#",
|
|
"description": "NodeInfo schema version 2.0.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": [
|
|
"version",
|
|
"software",
|
|
"protocols",
|
|
"services",
|
|
"openRegistrations",
|
|
"usage",
|
|
"metadata"
|
|
],
|
|
"properties": {
|
|
"version": {
|
|
"description": "The schema version, must be 2.0.",
|
|
"enum": ["2.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.",
|
|
"type": "string",
|
|
"pattern": "^[a-z0-9-]+$"
|
|
},
|
|
"version": {
|
|
"description": "The version of this server software.",
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"protocols": {
|
|
"description": "The protocols supported on this server.",
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": {
|
|
"enum": [
|
|
"activitypub",
|
|
"buddycloud",
|
|
"dfrn",
|
|
"diaspora",
|
|
"libertree",
|
|
"ostatus",
|
|
"pumpio",
|
|
"tent",
|
|
"xmpp",
|
|
"zot"
|
|
]
|
|
}
|
|
},
|
|
"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": [
|
|
"atom1.0",
|
|
"gnusocial",
|
|
"imap",
|
|
"pnut",
|
|
"pop3",
|
|
"pumpio",
|
|
"rss2.0",
|
|
"twitter"
|
|
]
|
|
}
|
|
},
|
|
"outbound": {
|
|
"description": "The third party sites this server can publish messages to on the behalf of a user.",
|
|
"type": "array",
|
|
"minItems": 0,
|
|
"items": {
|
|
"enum": [
|
|
"atom1.0",
|
|
"blogger",
|
|
"buddycloud",
|
|
"diaspora",
|
|
"dreamwidth",
|
|
"drupal",
|
|
"facebook",
|
|
"friendica",
|
|
"gnusocial",
|
|
"google",
|
|
"insanejournal",
|
|
"libertree",
|
|
"linkedin",
|
|
"livejournal",
|
|
"mediagoblin",
|
|
"myspace",
|
|
"pinterest",
|
|
"pnut",
|
|
"posterous",
|
|
"pumpio",
|
|
"redmatrix",
|
|
"rss2.0",
|
|
"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
|
|
}
|
|
}
|
|
}
|