aboutsummaryrefslogtreecommitdiffstats
path: root/templates
diff options
context:
space:
mode:
authortechknowlogick <techknowlogick@gitea.io>2021-09-27 19:38:06 -0400
committerGitHub <noreply@github.com>2021-09-28 01:38:06 +0200
commitbabab0bf5e1b6afc1bccf26e5ef0aec69972599e (patch)
treebc1ca1c5f8487d61df43efc4ffd0843f5848363e /templates
parentf48dce3176649916c262ab080d5f38a0433f38c0 (diff)
downloadgitea-babab0bf5e1b6afc1bccf26e5ef0aec69972599e.tar.gz
gitea-babab0bf5e1b6afc1bccf26e5ef0aec69972599e.zip
Add nodeinfo endpoint for federation purposes (#16953)
Nodeinfo is a way to expose certain metadata about a server for use of discovery regarding functionality of its federation capabilities. Two endpoints are required: 1. `/.well-known/nodeinfo` which informs client where it can find the location of the location of its metadata (including which version of the schema is used) 2. the endpoint which exposes the metadata in json format according to schema. Notes: * `openRegistrations` is a required field, but I propose to set to false as default in case someone writes a crawler to discover "open" gitea instances * to limit data leakage I also propose to not include the `usage` field (note it is required so it should be included, but left as empty). More info: https://github.com/jhass/nodeinfo https://github.com/jhass/nodeinfo/tree/main/schemas/2.1 http://nodeinfo.diaspora.software/protocol.html
Diffstat (limited to 'templates')
-rw-r--r--templates/swagger/v1_json.tmpl144
1 files changed, 144 insertions, 0 deletions
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index ef4f9247cf..03d1cbda98 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -615,6 +615,23 @@
}
}
},
+ "/nodeinfo": {
+ "get": {
+ "produces": [
+ "application/json"
+ ],
+ "tags": [
+ "miscellaneous"
+ ],
+ "summary": "Returns the nodeinfo of the Gitea application",
+ "operationId": "getNodeInfo",
+ "responses": {
+ "200": {
+ "$ref": "#/responses/NodeInfo"
+ }
+ }
+ }
+ },
"/notifications": {
"get": {
"consumes": [
@@ -15560,6 +15577,127 @@
},
"x-go-package": "code.gitea.io/gitea/modules/structs"
},
+ "NodeInfo": {
+ "description": "NodeInfo contains standardized way of exposing metadata about a server running one of the distributed social networks",
+ "type": "object",
+ "properties": {
+ "metadata": {
+ "type": "object",
+ "x-go-name": "Metadata"
+ },
+ "openRegistrations": {
+ "type": "boolean",
+ "x-go-name": "OpenRegistrations"
+ },
+ "protocols": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-go-name": "Protocols"
+ },
+ "services": {
+ "$ref": "#/definitions/NodeInfoServices"
+ },
+ "software": {
+ "$ref": "#/definitions/NodeInfoSoftware"
+ },
+ "usage": {
+ "$ref": "#/definitions/NodeInfoUsage"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
+ "NodeInfoServices": {
+ "description": "NodeInfoServices contains the third party sites this server can connect to via their application API",
+ "type": "object",
+ "properties": {
+ "inbound": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-go-name": "Inbound"
+ },
+ "outbound": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ },
+ "x-go-name": "Outbound"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
+ "NodeInfoSoftware": {
+ "description": "NodeInfoSoftware contains Metadata about server software in use",
+ "type": "object",
+ "properties": {
+ "homepage": {
+ "type": "string",
+ "x-go-name": "Homepage"
+ },
+ "name": {
+ "type": "string",
+ "x-go-name": "Name"
+ },
+ "repository": {
+ "type": "string",
+ "x-go-name": "Repository"
+ },
+ "version": {
+ "type": "string",
+ "x-go-name": "Version"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
+ "NodeInfoUsage": {
+ "description": "NodeInfoUsage contains usage statistics for this server",
+ "type": "object",
+ "properties": {
+ "localComments": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "LocalComments"
+ },
+ "localPosts": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "LocalPosts"
+ },
+ "users": {
+ "$ref": "#/definitions/NodeInfoUsageUsers"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
+ "NodeInfoUsageUsers": {
+ "description": "NodeInfoUsageUsers contains statistics about the users of this server",
+ "type": "object",
+ "properties": {
+ "activeHalfyear": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ActiveHalfyear"
+ },
+ "activeMonth": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "ActiveMonth"
+ },
+ "total": {
+ "type": "integer",
+ "format": "int64",
+ "x-go-name": "Total"
+ }
+ },
+ "x-go-package": "code.gitea.io/gitea/modules/structs"
+ },
"Note": {
"description": "Note contains information related to a git note",
"type": "object",
@@ -17533,6 +17671,12 @@
}
}
},
+ "NodeInfo": {
+ "description": "NodeInfo",
+ "schema": {
+ "$ref": "#/definitions/NodeInfo"
+ }
+ },
"Note": {
"description": "Note",
"schema": {