Files
GeyserWebsite/openapi/downloads.yaml
2024-03-12 00:35:02 -07:00

408 lines
11 KiB
YAML

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