mirror of https://github.com/go-gitea/gitea
verify nodeinfo response by schema (#22137)
... using [github.com/xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema) Co-authored-by: techknowlogick <techknowlogick@gitea.io>pull/22017/head^2
parent
c4c4151f7d
commit
f3370eeaee
@ -0,0 +1,188 @@ |
||||
{ |
||||
"$schema": "http://json-schema.org/draft-04/schema#", |
||||
"id": "http://nodeinfo.diaspora.software/ns/schema/2.1#", |
||||
"description": "NodeInfo schema version 2.1.", |
||||
"type": "object", |
||||
"additionalProperties": false, |
||||
"required": [ |
||||
"version", |
||||
"software", |
||||
"protocols", |
||||
"services", |
||||
"openRegistrations", |
||||
"usage", |
||||
"metadata" |
||||
], |
||||
"properties": { |
||||
"version": { |
||||
"description": "The schema version, must be 2.1.", |
||||
"enum": [ |
||||
"2.1" |
||||
] |
||||
}, |
||||
"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" |
||||
}, |
||||
"repository": { |
||||
"description": "The url of the source code repository of this server software.", |
||||
"type": "string" |
||||
}, |
||||
"homepage": { |
||||
"description": "The url of the homepage 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 |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue