### Metadata example value (true) Source: http://nodeinfo.diaspora.software/schema.html Shows an example value for the 'metadata' field, which is a free-form object. This example uses the boolean 'true' as a placeholder, but clients should not rely on any specific key. ```json true ``` -------------------------------- ### Example JRD document for /.well-known/nodeinfo Source: http://nodeinfo.diaspora.software/protocol.html Example of the JRD document that a server must provide at the well-known path, referencing the supported NodeInfo schema version 2.1. ```json { "links": [ { "rel": "http://nodeinfo.diaspora.software/ns/schema/2.1", "href": "https://example.org/nodeinfo/2.1" } ] } ``` -------------------------------- ### software object JSON Schema Source: http://nodeinfo.diaspora.software/schema.html Defines the software object with required name and version, and optional repository and homepage. The name must match the pattern ^[a-z0-9-]+$. ```json { "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" } } } ``` -------------------------------- ### NodeInfo 1.0 software schema Source: http://nodeinfo.diaspora.software/schema.html JSON Schema definition for the 'software' property of NodeInfo 1.0. It requires a 'name' field with an enum of diaspora, friendica, or redmatrix, and a 'version' string. Use this to validate the software metadata in a NodeInfo response. ```json { "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" } } } ``` -------------------------------- ### JSON Schema for software object Source: http://nodeinfo.diaspora.software/schema.html Defines the software object with required name and version properties. The name must match the pattern ^[a-z0-9-]+$. ```json { "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" } } } ``` -------------------------------- ### NodeInfo 1.1 software object JSON schema Source: http://nodeinfo.diaspora.software/schema.html JSON schema for the 'software' object in NodeInfo 1.1. It requires 'name' and 'version' properties, where 'name' must be one of the enumerated values (diaspora, friendica, hubzilla, redmatrix) and 'version' is a string. ```json { "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", "hubzilla", "redmatrix" ] }, "version": { "description": "The version of this server software.", "type": "string" } } } ``` -------------------------------- ### Usage statistics JSON Schema (localPosts, localComments, users) Source: http://nodeinfo.diaspora.software/schema.html Defines the structure for the 'usage' object in NodeInfo 2.1. It requires a 'users' object with 'total', 'activeHalfyear', and 'activeMonth' integer fields, and includes optional 'localPosts' and 'localComments' integers. All fields have a minimum of 0. ```json { "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 } } } ``` -------------------------------- ### NodeInfo 1.0 full JSON Schema Source: http://nodeinfo.diaspora.software/schema.html Complete JSON Schema for NodeInfo 1.0, defining required fields, software metadata, protocols, services, openRegistrations, usage, and metadata. ```json { "$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 send traffic to.", "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 receive content from.", "type": "array", "minItems": 0, "items": { "enum": [ "atom1.0", "gnusocial", "pumpio", "twitter" ] } }, "outbound": { "description": "The third party sites this server can connect to via their application API.", "type": "array", "minItems": 0, "items": { "enum": [ "atom1.0", "gnusocial", "pumpio", "twitter" ] } } } }, "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 } } } ``` -------------------------------- ### Complete NodeInfo 2.1 JSON Schema Source: http://nodeinfo.diaspora.software/schema.html The full JSON Schema for NodeInfo version 2.1. It defines required fields (version, software, protocols, services, openRegistrations, usage, metadata) and enumerates allowed protocol and service values. Use this to validate NodeInfo responses. ```json { "$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" ] } } } } } } ``` -------------------------------- ### NodeInfo 2.0 JSON Schema Source: http://nodeinfo.diaspora.software/schema.html Defines the NodeInfo 2.0 JSON schema, which describes server software, supported protocols, third-party services, registration policy, usage statistics, and free-form metadata. Use it to validate NodeInfo responses or as a reference for implementing a NodeInfo endpoint. The schema requires the version field to be exactly "2.0" and restricts software names to lowercase alphanumeric characters and hyphens. ```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 } } } ``` -------------------------------- ### NodeInfo 2.1 JSON Schema Source: http://nodeinfo.diaspora.software/schema.html The JSON schema for the NodeInfo 2.1 document. It defines the required fields (version, software, protocols, services, openRegistrations, usage, metadata) and their types and constraints. The schema specifies that the version must be '2.1', software must include name and version, protocols must be an array of strings, services must include inbound and outbound arrays, usage must include a users object with total, activeHalfyear, and activeMonth, and metadata is a free-form object. ```json { "$schema": "http://json-schema.org/draft-07/schema#", "type": "object", "additionalProperties": false, "required": [ "version", "software", "protocols", "services", "openRegistrations", "usage", "metadata" ], "properties": { "version": { "description": "The schema version, must be \"2.1\".", "type": "string", "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" }, "version": { "description": "The version of this server software.", "type": "string" } } }, "protocols": { "description": "The protocols supported by this server.", "type": "array", "items": { "type": "string", "enum": [ "activitypub", "buddycloud", "diaspora", "friendica", "gnusocial", "ostatus", "pumpio", "smtp", "xmpp" ] }, "uniqueItems": true }, "services": { "description": "The third party sites this server can connect to via their application programming interface.", "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", "items": { "type": "string", "enum": [ "atom1.0", "gnusocial", "imap", "pnut", "pop3", "pumpio", "rss2.0", "twitter" ] }, "uniqueItems": true }, "outbound": { "description": "The third party sites this server can connect to via their application programming interface.", "type": "array", "items": { "type": "string", "enum": [ "atom1.0", "blogger", "buddycloud", "diaspora", "dreamwidth", "drupal", "facebook", "gnusocial", "google+", "imap", "linkedin", "livejournal", "mediagoblin", "myspace", "pinterest", "pnut", "posterous", "pumpio", "redmatrix", "rss2.0", "smtp", "tent", "tumblr", "twitter", "wordpress", "xmpp" ] }, "uniqueItems": true } } }, "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 } } } ``` -------------------------------- ### Full NodeInfo 1.1 JSON Schema Source: http://nodeinfo.diaspora.software/schema.html The complete JSON Schema for NodeInfo version 1.1, defining all required properties and their types. ```json { "$schema": "http://json-schema.org/draft-04/schema#", "id": "http://nodeinfo.diaspora.software/ns/schema/1.1#", "description": "NodeInfo schema version 1.1.", "type": "object", "additionalProperties": false, "required": [ "version", "software", "protocols", "services", "openRegistrations", "usage", "metadata" ], "properties": { "version": { "description": "The schema version, must be 1.1.", "enum": [ "1.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.", "enum": [ "diaspora", "friendica", "hubzilla", "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", "zot" ] } }, "outbound": { "description": "The protocols this server can send traffic to.", "type": "array", "minItems": 1, "items": { "enum": [ "buddycloud", "diaspora", "friendica", "gnusocial", "libertree", "mediagoblin", "pumpio", "redmatrix", "smtp", "tent", "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 these users.", "type": "array", "items": { "enum": [ "twitter", "gnusocial", "pumpio" ] } }, "outbound": { "description": "The third party sites this server can publish messages to on behalf of these users.", "type": "array", "items": { "enum": [ "twitter", "gnusocial", "pumpio" ] } } } }, "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 } } } ``` -------------------------------- ### Metadata JSON Schema (free-form object) Source: http://nodeinfo.diaspora.software/schema.html Defines the 'metadata' field as an object with no required properties and additional properties allowed. This allows software-specific values without constraints. ```json { "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 } ``` -------------------------------- ### NodeInfo 1.1 services object JSON schema Source: http://nodeinfo.diaspora.software/schema.html JSON schema for the 'services' object in NodeInfo 1.1. It requires 'inbound' and 'outbound' arrays, each with a minimum of zero items, and each item must be one of the enumerated third-party site names. ```json { "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" ] } } } } ``` -------------------------------- ### services object JSON Schema Source: http://nodeinfo.diaspora.software/schema.html Defines the services object with required inbound and outbound arrays. Inbound and outbound are arrays of strings with specific enums, and must have at least 0 items. ```json { "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" ] } } } } ``` -------------------------------- ### users object JSON Schema Source: http://nodeinfo.diaspora.software/schema.html Defines the users object with optional total, activeHalfyear, and activeMonth properties, each an integer with minimum 0. ```json { "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 } } } ``` -------------------------------- ### NodeInfo 1.0 protocols schema Source: http://nodeinfo.diaspora.software/schema.html JSON Schema definition for the 'protocols' property of NodeInfo 1.0. It requires 'inbound' and 'outbound' arrays with at least one item each, and restricts values to a fixed enum of protocol names. Use this to validate the protocols supported by a server. ```json { "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" ] } } } } ``` -------------------------------- ### NodeInfo 1.1 protocols object JSON schema Source: http://nodeinfo.diaspora.software/schema.html JSON schema for the 'protocols' object in NodeInfo 1.1. It requires 'inbound' and 'outbound' arrays with at least one item each, and each item must be one of the enumerated protocol names. ```json { "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", "zot" ] } }, "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", "zot" ] } } } } ``` -------------------------------- ### NodeInfo 2.1 Schema Source: http://nodeinfo.diaspora.software/schema.html The NodeInfo 2.1 schema defines the structure of the JSON object returned by a NodeInfo endpoint. It includes fields for software information, protocols, services, open registration, usage statistics, and metadata. ```APIDOC ## NodeInfo 2.1 ### Description NodeInfo is a protocol for exposing server metadata about a federated social network server. The schema defines the structure of the JSON object returned by a NodeInfo endpoint. ### Schema #### Top-level fields - **version** (string) - Required - The schema version, must be "2.1". - **software** (object) - Required - Information about the server software. - **name** (string) - Required - The canonical name of the server software. - **version** (string) - Required - The version of the server software. - **protocols** (array of strings) - Required - The protocols supported by the server. - **services** (object) - Required - The third-party sites this server can connect to via their application API. - **inbound** (array of strings) - Required - The inbound services. - **outbound** (array of strings) - Required - The outbound services. - **openRegistrations** (boolean) - Required - Whether this server allows open self-registration. - **usage** (object) - Required - Usage statistics for this server. - **users** (object) - Required - Statistics about the users of this server. - **total** (integer) - Optional - The total amount of registered users. - **activeHalfyear** (integer) - Optional - The amount of users that signed in at least once in the last 180 days. - **activeMonth** (integer) - Optional - The amount of users that signed in at least once in the last 30 days. - **localPosts** (integer) - Optional - The amount of posts made by users registered on this server. - **localComments** (integer) - Optional - The amount of comments made by users registered on this server. - **metadata** (object) - Required - Free form key value pairs for software specific values. Clients should not rely on any specific key present. ### Example ```json { "version": "2.1", "software": { "name": "diaspora", "version": "0.7.12.1" }, "protocols": ["activitypub"], "services": { "inbound": ["gnusocial"], "outbound": ["atom1.0", "gnusocial", "pumpio", "twitter"] }, "openRegistrations": true, "usage": { "users": { "total": 1234, "activeHalfyear": 567, "activeMonth": 89 }, "localPosts": 12345, "localComments": 678 }, "metadata": {} } ``` ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.