Skip to content

Commit

Permalink
Merge pull request #74 from 6543/nodeinfo_v3.0
Browse files Browse the repository at this point in the history
start nodeinfo v2.2 development
  • Loading branch information
jhass authored Dec 6, 2023
2 parents 523d870 + 89e1e83 commit 4150d92
Show file tree
Hide file tree
Showing 3 changed files with 227 additions and 0 deletions.
27 changes: 27 additions & 0 deletions schemas/2.2/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"version": "2.2",
"software": {
"name": "diaspora",
"version": "0.5.0",
"repository": "https://github.com/diaspora/diaspora",
"homepage": "https://diasporafoundation.org/"
},
"protocols": ["diaspora"],
"services": {
"inbound": ["gnusocial"],
"outbound": ["facebook", "twitter"]
},
"openRegistrations": true,
"usage": {
"users": {
"total": 123,
"activeHalfyear": 42,
"activeMonth": 23
},
"localPosts": 500,
"localComments": 1000
},
"metadata": {
"chat_enabled": true
}
}
189 changes: 189 additions & 0 deletions schemas/2.2/schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,189 @@
{
"title": "NodeInfo schema version 2.2",
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "http://nodeinfo.diaspora.software/ns/schema/2.2#",
"description": "NodeInfo is an effort to create a standardized way of exposing metadata about a server running one of the distributed social networks.",
"type": "object",
"additionalProperties": false,
"required": [
"version",
"software",
"protocols",
"services",
"openRegistrations",
"usage",
"metadata"
],
"properties": {
"version": {
"description": "The schema version, must be 2.2.",
"enum": [
"2.2"
]
},
"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
}
}
}
11 changes: 11 additions & 0 deletions tests/spec/nodeinfo_22_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
require "spec_helper"

RSpec.describe "NodeInfo schema 2.2" do
it "is a valid draft7 json schema" do
expect(schema_for("2.2")).to match_json_schema :json_schema_draft4
end

it "validates the example" do
expect(example_for("2.2")).to match_json_schema :nodeinfo_22
end
end

0 comments on commit 4150d92

Please sign in to comment.