amiibo-api/Sources/openapi.yaml
Javier Cicchelli da07ef7e4f Moved the Amiibo API implementation to its own package (#2)
This PR contains the work done to migrate the *almost* completed**Amiibo API** implementation done in another project to its own stand-alone package.

Reviewed-on: #2
Co-authored-by: Javier Cicchelli <javier@rock-n-code.com>
Co-committed-by: Javier Cicchelli <javier@rock-n-code.com>
2024-09-14 22:26:39 +00:00

377 lines
9.8 KiB
YAML

# ===----------------------------------------------------------------------===
#
# This source file is part of the AmiiboAPI open source project
#
# Copyright (c) 2024 Röck+Cöde VoF. and the AmiiboAPI project authors
# Licensed under the EUPL 1.2 or later.
#
# See LICENSE for license information
# See CONTRIBUTORS for the list of AmiiboAPI project authors
#
# ===----------------------------------------------------------------------===
openapi: '3.1.0'
info:
title: Amiibo API service
description: The Amiibo API RESTful service.
version: 1.0.0
servers:
- url: https://www.amiiboapi.com/api
description: Amiibo API service (live)
paths:
/amiibo:
get:
description: Get a list of all the Amiibo items available in the database.
operationId: getAmiibos
responses:
'200':
description: Successful response returning the object that contains a list of Amiibo items.
content:
application/json:
schema:
$ref: '#/components/schemas/AmiiboWrapper'
'400':
description: Bad Amiibo request.
parameters:
- name: amiiboSeries
in: query
description: The Amiibo series identifier or name to filter the response.
required: false
schema:
type: string
style: form
- name: character
in: query
description: The game character identifier or name to filter the response.
required: false
schema:
type: string
style: form
- name: gameseries
in: query
description: The game series identifier or name to filter the response.
required: false
schema:
type: string
style: form
- name: id
in: query
description: The Amiibo identifier to filter the response.
required: false
schema:
type: string
style: form
- name: name
in: query
description: The Amiibo name to filter the response.
required: false
schema:
type: string
style: form
- name: showgames
in: query
description: The flag that indicates whether to include information about related games.
required: false
schema:
type: boolean
style: form
- name: showusage
in: query
description: The flag that indicates whether to include information about Amiibo usage in related games.
required: false
schema:
type: boolean
style: form
- name: type
in: query
description: The Amiibo type to filter the response.
required: false
schema:
type: string
style: form
/amiiboseries:
get:
description: Get a list of all the Amiibo series available in the database.
operationId: getAmiiboSeries
responses:
'200':
description: Successful response returning the object that contains a list of Amiibo series.
content:
application/json:
schema:
$ref: '#/components/schemas/TupleWrapper'
'400':
description: Bad Amiibo series request.
'404':
description: Amiibo series not found.
'500':
description: Service currently not available.
parameters:
- name: key
in: query
description: The Amiibo series key to filter the response.
required: false
schema:
type: string
style: form
- name: name
in: query
description: The Amiibo series name to filter the response.
required: false
schema:
type: string
style: form
/character:
get:
description: Get a list of all the game characters available in the database.
operationId: getGameCharacters
responses:
'200':
description: Successful response returning the object that contains a list of game characters.
content:
application/json:
schema:
$ref: '#/components/schemas/TupleWrapper'
'400':
description: Bad game character request.
'404':
description: Game character not found.
'500':
description: Service currently not available.
parameters:
- name: key
in: query
description: The game character key to filter the response.
required: false
schema:
type: string
style: form
- name: name
in: query
description: The game character name to filter the response.
required: false
schema:
type: string
style: form
/gameseries:
get:
description: Gets a list of all the game series available in the database.
operationId: getGameSeries
responses:
'200':
description: Successful response returning the object that contains a list of game series.
content:
application/json:
schema:
$ref: '#/components/schemas/TupleWrapper'
'400':
description: Bad game series request.
'404':
description: Game series not found.
'500':
description: Service currently not available.
parameters:
- name: key
in: query
description: The game series key to filter the response.
required: false
schema:
type: string
style: form
- name: name
in: query
description: The game series name to filter the response.
required: false
schema:
type: string
style: form
/type:
get:
description: Gets a list of all the Amiibo types available in the database.
operationId: getAmiiboTypes
responses:
'200':
description: Successful response returning the object that contains a list of Amiibo types.
content:
application/json:
schema:
$ref: '#/components/schemas/TupleWrapper'
'400':
description: Bad Amiibo type request.
'404':
description: Amiibo type not found.
'500':
description: Service currently not available.
parameters:
- name: key
in: query
description: The Amiibo type key to filter the response.
required: false
schema:
type: string
style: form
- name: name
in: query
description: The Amiibo type name to filter the response.
required: false
schema:
type: string
style: form
/lastupdated:
get:
description: Gets a timestamp when the Amiibo data was last updated.
operationId: getLastUpdated
responses:
'200':
description: Successful response returning the object that contains the date and time when the database was last updated.
content:
application/json:
schema:
$ref: '#/components/schemas/LastUpdated'
components:
schemas:
Amiibo:
type: object
properties:
amiiboSeries:
type: string
character:
type: string
gameSeries:
type: string
games3DS:
type: array
items:
$ref: '#/components/schemas/AmiiboGame'
gamesSwitch:
type: array
items:
$ref: '#/components/schemas/AmiiboGame'
gamesWiiU:
type: array
items:
$ref: '#/components/schemas/AmiiboGame'
head:
type: string
image:
type: string
name:
type: string
release:
type: object
$ref: '#/components/schemas/AmiiboRelease'
tail:
type: string
type:
type: string
required:
- amiiboSeries
- character
- gameSeries
- head
- image
- name
- release
- tail
- type
AmiiboGame:
type: object
properties:
amiiboUsage:
type: array
items:
$ref: '#/components/schemas/AmiiboUsage'
gameID:
type: array
items:
type: string
gameName:
type: string
required:
- gameID
- gameName
AmiiboList:
type: array
items:
$ref: '#/components/schemas/Amiibo'
AmiiboRelease:
type: object
properties:
au:
type: string
format: date-time
eu:
type: string
format: date-time
jp:
type: string
format: date-time
na:
type: string
format: date-time
AmiiboUsage:
type: object
properties:
Usage:
type: string
write:
type: boolean
required:
- Usage
- write
AmiiboWrapper:
type: object
properties:
amiibo:
oneOf:
- $ref: '#/components/schemas/Amiibo'
- $ref: '#/components/schemas/AmiiboList'
required:
- amiibo
LastUpdated:
type: object
properties:
lastUpdated:
type: string
format: date-time
required:
- lastUpdated
Tuple:
type: object
properties:
key:
type: string
name:
type: string
required:
- key
- name
TupleList:
type: array
items:
$ref: '#/components/schemas/Tuple'
TupleWrapper:
type: object
properties:
amiibo:
oneOf:
- $ref: '#/components/schemas/Tuple'
- $ref: '#/components/schemas/TupleList'
required:
- amiibo