604 lines
16 KiB
JSON
604 lines
16 KiB
JSON
{
|
|
"openapi": "3.0.1",
|
|
"info": {
|
|
"title": "Downloads API",
|
|
"version": "1.0.0"
|
|
},
|
|
"servers": [
|
|
{
|
|
"url": "https://download.geysermc.org"
|
|
}
|
|
],
|
|
"paths": {
|
|
"/v2/projects": {
|
|
"get": {
|
|
"tags": [
|
|
"projects-controller"
|
|
],
|
|
"summary": "Gets a list of all available projects.",
|
|
"operationId": "projects",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectsResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}": {
|
|
"get": {
|
|
"tags": [
|
|
"project-controller"
|
|
],
|
|
"summary": "Gets information about a project.",
|
|
"operationId": "project",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ProjectResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}": {
|
|
"get": {
|
|
"tags": [
|
|
"version-controller"
|
|
],
|
|
"summary": "Gets information about a version.",
|
|
"operationId": "version",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VersionResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}/builds": {
|
|
"get": {
|
|
"tags": [
|
|
"version-builds-controller"
|
|
],
|
|
"summary": "Gets all available builds for a project's version.",
|
|
"operationId": "builds",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BuildsResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}/builds/{build}": {
|
|
"get": {
|
|
"tags": [
|
|
"version-build-controller"
|
|
],
|
|
"summary": "Gets information related to a specific build.",
|
|
"operationId": "buildSpecific",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "build",
|
|
"in": "path",
|
|
"description": "A build of the version.",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BuildResponse"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}/builds/{build}/downloads/{download}": {
|
|
"get": {
|
|
"tags": [
|
|
"download-controller"
|
|
],
|
|
"summary": "Downloads the given file from a build's data.",
|
|
"operationId": "downloadSpecific",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "build",
|
|
"in": "path",
|
|
"description": "A build of the version.",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "download",
|
|
"in": "path",
|
|
"description": "A download of the build.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-zA-Z0-9._-]+",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"headers": {
|
|
"ETag": {
|
|
"description": "An identifier for a specific version of a resource. It lets caches be more efficient and save bandwidth, as a web server does not need to resend a full response if the content has not changed.",
|
|
"style": "simple",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Content-Disposition": {
|
|
"description": "A header indicating that the content is expected to be displayed as an attachment, that is downloaded and saved locally.",
|
|
"style": "simple",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"Last-Modified": {
|
|
"description": "The date and time at which the origin server believes the resource was last modified.",
|
|
"style": "simple",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
},
|
|
"*/*": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}/builds/latest": {
|
|
"get": {
|
|
"tags": [
|
|
"version-build-controller"
|
|
],
|
|
"summary": "Gets information related to a specific build.",
|
|
"operationId": "buildLatest",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"302": {
|
|
"description": "Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v2/projects/{project}/versions/{version}/builds/latest/downloads/{download}": {
|
|
"get": {
|
|
"tags": [
|
|
"download-controller"
|
|
],
|
|
"summary": "Downloads the given file from a build's data.",
|
|
"operationId": "downloadLatest",
|
|
"parameters": [
|
|
{
|
|
"name": "project",
|
|
"in": "path",
|
|
"description": "The project identifier.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string"
|
|
},
|
|
"example": "geyser"
|
|
},
|
|
{
|
|
"name": "version",
|
|
"in": "path",
|
|
"description": "A version of the project.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "download",
|
|
"in": "path",
|
|
"description": "A download of the build.",
|
|
"required": true,
|
|
"schema": {
|
|
"pattern": "[a-zA-Z0-9._-]+",
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"302": {
|
|
"description": "Found",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"type": "object"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"BuildResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"project_id": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string",
|
|
"example": "geyser"
|
|
},
|
|
"project_name": {
|
|
"type": "string",
|
|
"example": "Geyser"
|
|
},
|
|
"version": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string",
|
|
"example": "2.1.0"
|
|
},
|
|
"build": {
|
|
"pattern": "\\d+",
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"example": 30
|
|
},
|
|
"time": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"channel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"default",
|
|
"experimental"
|
|
]
|
|
},
|
|
"promoted": {
|
|
"type": "boolean"
|
|
},
|
|
"changes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Change"
|
|
}
|
|
},
|
|
"downloads": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/Download"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"BuildsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"project_id": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string",
|
|
"example": "geyser"
|
|
},
|
|
"project_name": {
|
|
"type": "string",
|
|
"example": "Geyser"
|
|
},
|
|
"version": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string",
|
|
"example": "2.1.0"
|
|
},
|
|
"builds": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/VersionBuild"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"Change": {
|
|
"type": "object",
|
|
"properties": {
|
|
"commit": {
|
|
"type": "string"
|
|
},
|
|
"summary": {
|
|
"type": "string"
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"Download": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"pattern": "[a-z0-9._-]+",
|
|
"type": "string",
|
|
"example": "Geyser-Spigot.jar"
|
|
},
|
|
"sha256": {
|
|
"pattern": "[a-f0-9]{64}",
|
|
"type": "string",
|
|
"example": "9ecc7374c2110a077f6c288fa4ad53a6812c09d5690dae0bc96508f939d4cb8a"
|
|
}
|
|
}
|
|
},
|
|
"ProjectResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"project_id": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string",
|
|
"example": "geyser"
|
|
},
|
|
"project_name": {
|
|
"type": "string",
|
|
"example": "Geyser"
|
|
},
|
|
"versions": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"ProjectsResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"projects": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"VersionBuild": {
|
|
"type": "object",
|
|
"properties": {
|
|
"build": {
|
|
"pattern": "\\d+",
|
|
"type": "integer",
|
|
"format": "int32",
|
|
"example": 30
|
|
},
|
|
"time": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"channel": {
|
|
"type": "string",
|
|
"enum": [
|
|
"default",
|
|
"experimental"
|
|
]
|
|
},
|
|
"promoted": {
|
|
"type": "boolean"
|
|
},
|
|
"changes": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/Change"
|
|
}
|
|
},
|
|
"downloads": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/Download"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"VersionResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"project_id": {
|
|
"pattern": "[a-z]+",
|
|
"type": "string",
|
|
"example": "geyser"
|
|
},
|
|
"project_name": {
|
|
"type": "string",
|
|
"example": "Geyser"
|
|
},
|
|
"version": {
|
|
"pattern": "(?:latest|[0-9.]+-?(?:pre|SNAPSHOT)?(?:[0-9.]+)?)?",
|
|
"type": "string",
|
|
"example": "2.1.0"
|
|
},
|
|
"builds": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |