PlugSnatcher/doc/spiget_api_endpoints.md

1138 lines
31 KiB
Markdown

swagger: '2.0'
info:
version: '2.0'
title: Spiget
license:
name: Apache License 2.0
url: 'https://github.com/SpiGetOrg/Spiget/blob/master/LICENSE.md'
contact:
name: inventivetalent
url: 'https://inventivetalent.org/contact'
email: info@inventivetalent.org
description: |
Documentation for Spiget
Spiget is an API to quickly and easily get information about Spigot plugins, resources and authors
schemes:
- https
- http
host: api.spiget.org
basePath: /v2
produces:
- application/json
consumes:
- application/json
paths:
/status:
get:
tags:
- status
summary: API Status
description: |
Get the API status
responses:
'200':
description: OK
schema:
properties:
status:
description: Status overview
type: object
properties:
fetch:
type: object
properties:
start:
description: Timestamp of the last fetcher start
type: number
format: long
end:
description: Timestamp of the last fetcher end (0 if currently active)
type: number
format: long
active:
description: Whether the fetcher is currently active
type: boolean
page:
type: object
properties:
amount:
description: Amount of pages to load
type: number
format: integer
index:
description: Current page index
type: number
format: integer
item:
type: object
properties:
index:
description: Resource index on the current page
type: number
format: integer
stats:
description: API stats
type: object
properties:
resources:
description: Resource count
type: number
format: integer
authors:
description: Author count
type: number
format: integer
categories:
description: Category count
type: number
format: integer
resource_updates:
description: Resource update count
type: number
format: integer
resource_versions:
description: Resource version count
type: number
format: integer
/resources:
get:
tags:
- resources
summary: Resource List
description: |
Get a list of available resources (premium and free)
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
/resources/premium:
get:
tags:
- resources
summary: Premium Resource List
description: |
Get a list of available premium resources
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
/resources/free:
get:
tags:
- resources
summary: Free Resource List
description: |
Get a list of available free resources
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
'/resources/{resource}':
get:
tags:
- resources
summary: Resource Details
description: |
Get a resource by its ID
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Resource'
'404':
$ref: '#/responses/notFound'
'/resources/{resource}/author':
get:
tags:
- resources
summary: Resource Author
description: |
Get the resource author
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Author'
'/resources/{resource}/download':
get:
tags:
- resources
summary: Resource Download
description: |
Download a resource
This either redirects to spiget's CDN server (cdn.spiget.org) for a direct download of files hosted on spigotmc.org or to the URL of externally hosted resources
The `external` field of a resource should be checked before downloading, to not receive any unexpected data
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
responses:
'302':
description: |
File found
Redirect to the file direct download OR the url of externally hosted resources
headers:
X-Spiget-File-Source:
type: string
description: File source, either `cdn` or `external`
'404':
description: Resource not found / File not Found
'/resources/{resource}/versions':
get:
tags:
- resources
summary: Resource Versions
description: |
Get versions of a resource
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/versionArray'
'/resources/{resource}/versions/{version}':
get:
tags:
- resources
summary: Resource Version
description: |
Get a specific resource version by its ID
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- name: version
type: number
description: Version ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/ResourceVersion'
'404':
$ref: '#/responses/notFound'
'/resources/{resource}/versions/latest':
get:
tags:
- resources
summary: Latest Resource Version
description: |
Get the latest resource version
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/ResourceVersion'
'404':
$ref: '#/responses/notFound'
'/resources/{resource}/versions/{version}/download':
get:
tags:
- resources
summary: Resource Version Download
description: |
Download a specific resource version
Note: This only redirects to the stored download location and might not download a file
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- name: version
type: string
description: Version ID or 'latest'
in: path
required: true
responses:
'302':
description: Redirect to the download location
headers:
Location:
description: Download location
type: string
'/resources/{resource}/versions/{version}/download/proxy':
get:
tags:
- resources
summary: Resource Version Proxy Download
description: |
Download a specific resource version
Attempts to proxy a version download from spigotmc.org
Note: this endpoint has a pretty strict rate-limit - cache downloaded versions locally and avoid repeated requests.
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- name: version
type: string
description: Version ID or 'latest'
in: path
required: true
responses:
'302':
description: Version download
'/resources/{resource}/updates':
get:
tags:
- resources
summary: Resource Updates
description: |
Get updates of a resource
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/updateArray'
'/resources/{resource}/updates/latest':
get:
tags:
- resources
summary: Latest Resource Update
description: |
Get the latest resource update
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
description: OK
schema:
$ref: '#/definitions/ResourceUpdate'
'404':
$ref: '#/responses/notFound'
'/resources/{resource}/reviews':
get:
tags:
- resources
summary: Resource Reviews
description: |
Get reviews of a resource
parameters:
- name: resource
type: number
description: Resource ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/reviewArray'
/resources/new:
get:
tags:
- resources
summary: New Resources
description: |
Get all new resources
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
'/resources/for/{version}':
get:
tags:
- resources
summary: Resources for Versions
description: |
Get resources for the specified version(s)
parameters:
- name: version
type: string
description: 'Version(s), separated by commas'
in: path
required: true
- name: method
type: string
enum:
- any
- all
description: Method to use to check for versions
in: query
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
/authors:
get:
tags:
- authors
summary: Author List
description: |
Get a list of available authors
Note: This only includes members involved with resources, either being their author or having reviewed a resource
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/authorArray'
'/authors/{author}':
get:
tags:
- authors
summary: Author Details
description: |
Get details about an author
parameters:
- name: author
type: number
description: Author ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Author'
'/authors/{author}/resources':
get:
tags:
- authors
summary: Author resources
description: |
Get an author's resources
parameters:
- name: author
type: number
description: Author ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
'/authors/{author}/reviews':
get:
tags:
- authors
summary: Author reviews
description: |
Get an author's reviews left on resources
parameters:
- name: author
type: number
description: Author ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/reviewArray'
/categories:
get:
tags:
- categories
summary: Category List
description: |
Get a list of categories
parameters:
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/categoryArray'
'/categories/{category}':
get:
tags:
- categories
summary: Category Details
description: |
Get details about a category
parameters:
- name: category
type: number
description: Category ID
in: path
required: true
responses:
'200':
description: OK
schema:
$ref: '#/definitions/Category'
'/categories/{category}/resources':
get:
tags:
- categories
summary: Category Resources
description: |
Get the resources in a category
parameters:
- name: category
type: number
description: Category ID
in: path
required: true
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
'/search/resources/{query}':
get:
tags:
- search
- resources
summary: Resource Search
description: |
Search resources
parameters:
- name: query
type: string
description: Search query
in: path
required: true
- name: field
type: string
description: Field to search in
in: query
enum:
- name
- tag
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/resourceArray'
'/search/authors/{query}':
get:
tags:
- search
- authors
summary: Author Search
description: |
Search authors
parameters:
- name: query
type: string
description: Search query
in: path
required: true
- name: field
type: string
description: Field to search in
in: query
enum:
- name
- $ref: '#/parameters/sizeParam'
- $ref: '#/parameters/pageParam'
- $ref: '#/parameters/sortParam'
- $ref: '#/parameters/fieldsParam'
responses:
'200':
$ref: '#/responses/authorArray'
/webhook/events:
get:
tags:
- webhook
summary: Webhook events
description: |
Get a list of available events
responses:
'200':
description: OK
schema:
type: object
properties:
events:
description: Events
type: array
items:
type: string
/webhook/register:
post:
tags:
- webhook
summary: Register Webhook
description: |
Register a new Webhook
Use this form to easily register a new one: https://spiget.org/webhook/
consumes:
- application/x-www-form-urlencoded
parameters:
- name: url
type: string
description: URL to call
in: formData
required: true
- name: events
type: array
description: Events to register
items:
type: string
in: formData
required: true
responses:
'200':
description: OK
schema:
type: object
properties:
id:
type: string
description: ID of the registered Webhook
secret:
type: string
description: Registration secret
'400':
description: Invalid request
schema:
type: object
properties:
error:
type: string
description: Error message
'/webhook/status/{id}':
get:
tags:
- webhook
summary: Webhook Status
description: |
Get the status of a Webhook
parameters:
- name: id
in: path
type: string
description: ID of the Webhook
required: true
responses:
'200':
description: OK
schema:
type: object
properties:
status:
type: number
format: integer
description: Status id
failedConnections:
type: number
format: integer
description: Amount of failed connections
'/webhook/delete/{id}/{secret}':
delete:
tags:
- webhook
summary: Delete Webhook
description: |
Delete a Webhook
parameters:
- name: id
in: path
type: string
description: Webhook ID
required: true
- name: secret
in: path
type: string
description: Webhook Secret
required: true
responses:
'200':
description: OK
'404':
$ref: '#/responses/notFound'
definitions:
Resource:
title: Resource
type: object
description: Main Resource model.
properties:
id:
type: number
format: integer
description: Id of the Resource.
name:
type: string
description: Name of the Resource.
tag:
type: string
description: Tag line of the Resource.
contributors:
type: string
description: Contributors of the Resource.
likes:
type: number
format: integer
description: Number of likes.
file:
$ref: '#/definitions/ResourceFile'
testedVersions:
type: array
description: List with Tested Versions of the Resource.
items:
type: string
links:
type: object
description: Map of external and custom links in the resource description.
rating:
$ref: '#/definitions/ResourceRating'
releaseDate:
type: number
format: long
description: Release timestamp.
updateDate:
type: number
format: long
description: Update timestamp.
downloads:
type: number
format: integer
description: Amount of downloads.
external:
type: boolean
description: Whether this resource is external (not hosted on SpigotMC.org).
icon:
$ref: '#/definitions/Icon'
premium:
type: boolean
description: Whether the resource is a premium resource.
price:
type: number
format: double
description: Price of the resource (only if the resource is premium).
currency:
type: string
description: Price Currency of the resource (only if the resource is premium).
author:
$ref: '#/definitions/IdReference'
category:
$ref: '#/definitions/IdReference'
version:
$ref: '#/definitions/IdAndUUIDReference'
reviews:
description: List of review IDs on this resource - only present if directly requesting the resource.
type: array
items:
$ref: '#/definitions/IdReference'
versions:
description: List of version IDs of this resource - only present if directly requesting the resource.
type: array
items:
$ref: '#/definitions/IdReference'
updates:
description: List of update IDs of this resource - only present if directly requesting the resource.
type: array
items:
$ref: '#/definitions/IdReference'
description:
description: Base64-encoded description HTML.
documentation:
description: Base64-encoded documentation HTML (from the Documentation tab).
sourceCodeLink:
type: string
description: Source Code link of the Resource.
donationLink:
type: string
description: Donation link of the Resource.
ResourceFile:
title: Resource File
description: Model of a Resource File.
type: object
properties:
type:
type: string
description: 'File extension (.jar, .zip, .sk) or "external".'
size:
type: number
format: float
description: File size.
sizeUnit:
type: string
description: 'File size-unit (KB, MB, GB).'
url:
type: string
description: Relative URL to the file.
externalUrl:
type: string
description: URL of external downloads.
Icon:
title: Resource Icon / Author Avatar
description: Model for Recource Icon or Author Avatar.
type: object
properties:
url:
type: string
description: Relative URL to the image.
data:
type: string
description: Base64-Encoded image data.
ResourceVersion:
title: Resource Version
description: Model for a Resource Version.
type: object
properties:
id:
type: number
format: integer
description: Version ID.
deprecated: true
uuid:
type: string
description: Version UUID.
name:
type: string
description: Version name (e.g. v1.0).
releaseDate:
type: number
format: long
description: Timestamp of the version's release date.
downloads:
type: number
format: integer
description: Amount of downloads.
rating:
$ref: '#/definitions/ResourceRating'
ResourceUpdate:
title: Resource Update
description: Model for a Resource Update.
type: object
properties:
id:
type: number
format: integer
description: Update ID.
resource:
type: number
format: integer
description: Resource ID.
title:
type: string
description: Update title.
description:
type: string
description: Base64-Encoded description of the update.
date:
type: number
format: long
description: Update timestamp.
likes:
type: number
format: integer
description: Amount of likes for this update.
ResourceRating:
title: Resource Rating
description: Model for a Resource Rating.
type: object
properties:
count:
type: number
format: integer
description: Number of ratings.
average:
type: number
format: float
description: Average rating.
ResourceReview:
title: Resource Review
description: Model for a Resource Review.
type: object
properties:
author:
$ref: '#/definitions/Author'
rating:
$ref: '#/definitions/ResourceRating'
message:
type: string
description: Base64-Encoded Review message.
responseMessage:
type: string
description: Base64-Encoded message the author responded with.
version:
type: string
description: Version name the review was posted for.
date:
type: number
format: long
description: Review timestamp.
Author:
title: Author
description: Model for an Author.
type: object
properties:
id:
type: number
format: integer
description: Id of the author.
name:
type: string
description: Author name.
icon:
$ref: '#/definitions/Icon'
Category:
title: Category
description: Model for a Category.
type: object
properties:
id:
type: number
format: integer
description: Category ID.
name:
type: string
description: Category name.
IdReference:
title: Id-Reference to another object
type: object
properties:
id:
type: number
format: integer
description: ID of the Another Object.
IdAndUUIDReference:
title: Id and UUID Reference to another object
type: object
properties:
id:
type: number
format: integer
description: ID of the Another Object.
uuid:
type: string
description: UUID of the Another Object.
parameters:
sizeParam:
name: size
in: query
description: Size of the returned array
type: number
format: integer
pageParam:
name: page
in: query
description: Page index
type: number
format: integer
sortParam:
name: sort
in: query
description: Field to sort by. (Use a +/- prefix for ascending/descending order)
type: string
fieldsParam:
name: fields
in: query
description: 'Fields to return, separated by commas'
type: string
responses:
success:
description: Successful response
notFound:
description: Requested object not found
resourceArray:
description: Resource Array
schema:
type: array
items:
$ref: '#/definitions/Resource'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer
authorArray:
description: Author Array
schema:
type: array
items:
$ref: '#/definitions/Author'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer
categoryArray:
description: Category Array
schema:
type: array
items:
$ref: '#/definitions/Category'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer
versionArray:
description: Version Array
schema:
type: array
items:
$ref: '#/definitions/ResourceVersion'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer
updateArray:
description: Update Array
schema:
type: array
items:
$ref: '#/definitions/ResourceUpdate'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer
reviewArray:
description: Review Array
schema:
type: array
items:
$ref: '#/definitions/ResourceReview'
headers:
X-Page-Sort:
description: Field the elements are sorted by
type: string
X-Page-Order:
description: Sort order
type: integer
X-Page-Size:
description: Number of elements on the current page
type: integer
X-Page-Index:
description: Current page index
type: integer
X-Page-Count:
description: Total amount of pages
type: integer