1
0
mirror of https://github.com/tcgdex/cards-database.git synced 2025-05-19 22:59:55 +00:00

1681 lines
55 KiB
YAML

# OPEN-API API definition
openapi: 3.1.0
info:
title: TCGdex API
description: |
A Multilanguage Pokémon TCG Database with Cards Pictures and most of the
informations contained on the cards.
Error responses follow RFC 9457 standard for problem details in HTTP APIs,
with Content-Type application/problem+json. All errors include standardized
attributes like type, title, status, detail, endpoint, and method.
Most endpoints that return arrays support filtering, sorting, and pagination features.
See https://tcgdex.dev/rest/filtering-sorting-pagination for more details.
You can find out more about TCGdex at
[https://www.tcgdex.net](https://www.tcgdex.net) or on
[Discord](https://discord.gg/NehYTAhsZE).
contact:
name: TCGdex
url: https://github.com/tcgdex/cards-database
email: contact@tcgdex.net
license:
name: MIT License
url: https://github.com/tcgdex/cards-database/blob/master/LICENSE
version: "2"
externalDocs:
description: Find out more about TCGdex
url: http://www.tcgdex.net/docs
servers:
- url: https://api.tcgdex.net/v2/{lang}
variables:
lang:
enum:
- en
- fr
- es
- es-mx
- it
- pt
- pt-br
- pt-pt
- zh-cn
- zh-tw
- ja
- ko
- th
default: en
tags:
- name: cards
description: Fetch cards globally
- name: filters
description: differents requests to filter cards
paths:
/cards:
get:
tags:
- cards
summary: fetch the list of cards
description: Returns a list of all cards, with support for filtering, sorting, and pagination
operationId: cards
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: 'Successful request'
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/cards/{cardId}:
get:
tags:
- cards
summary: Find card by ID
description: Returns detailed information about a specified card
operationId: getCardById
parameters:
- name: cardId
in: path
description: ID of card to return
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/Card'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/sets:
get:
tags:
- sets
summary: Get all sets
description: Lists all Pokemon TCG sets with basic information, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SetResume'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/sets/{set}:
get:
tags:
- sets
summary: Find set by ID
description: Returns detailed information about a specific set, including its card list
parameters:
- name: set
in: path
description: ID of set to return
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/Set'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Set doesn't exist
/sets/{set}/{cardLocalId}:
get:
tags:
- sets
- cards
summary: Find card by set and local ID
description: Returns detailed information about a specific card identified by its set and local ID within that set
parameters:
- name: set
in: path
required: true
schema:
type: string
- name: cardLocalId
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/Card'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: the Set or cardLocalId are incorrect
/series:
get:
tags:
- series
summary: Get all series
description: Returns a list of all available Pokemon TCG series, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SerieResume'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/series/{serie}:
get:
tags:
- series
summary: Find series by ID
description: Returns detailed information about a specific series, including all sets in that series
parameters:
- name: serie
in: path
description: ID of serie to return
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/Serie'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Serie doesn't exist
/categories:
get:
tags:
- filters
summary: Get all categories
description: Returns a list of all available card categories, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/categories/{category}:
get:
tags:
- filters
summary: Get cards by category
description: Returns cards matching the specified category, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: category
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/StringEndpoint'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Category doesn't exist
/hp:
get:
tags:
- filters
summary: Get all HP values
description: Returns a list of all available HP values for Pokemon cards, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/hp/{hp}:
get:
tags:
- filters
summary: Get cards by HP value
description: Returns cards with the specified HP value, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: hp
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/StringEndpoint'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The HP count doesn't exist
/illustrators:
get:
tags:
- filters
summary: Get all illustrators
description: Returns a list of all card illustrators, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/illustrators/{illustrator}:
get:
tags:
- filters
summary: Get cards by illustrator
description: Returns cards by the specified illustrator, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: illustrator
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/StringEndpoint'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Illustrator doesn't exist
/rarities:
get:
tags:
- filters
summary: Get all rarities
description: Returns a list of all card rarity types, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/rarities/{rarity}:
get:
tags:
- filters
summary: Get cards by rarity
description: Returns cards with the specified rarity, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: rarity
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/StringEndpoint'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Rarity doesn't exist
/retreats:
get:
tags:
- filters
summary: Get all retreat costs
description: Returns a list of all available retreat cost values, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/retreats/{retreat}:
get:
tags:
- filters
summary: Get cards by retreat cost
description: Returns cards with the specified retreat cost, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: retreat
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
$ref: '#/components/schemas/StringEndpoint'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Retreat count doesn't exist
/types:
get:
tags:
- filters
summary: Get all types
description: Returns a list of all Pokemon card types, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/types/{type}:
get:
tags:
- filters
summary: Get cards by type
description: Returns cards of the specified type, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: type
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The Type doesn't exist
/dex-ids:
get:
tags:
- filters
summary: Get all Pokedex IDs
description: Returns a list of all Pokedex ID numbers, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/dex-ids/{dexId}:
get:
tags:
- filters
summary: Get cards by Pokedex ID
description: Returns cards with the specified Pokedex ID, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: dexId
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: no cards contain the specified dexID
/energy-types:
get:
tags:
- filters
summary: Get all energy types
description: Returns a list of all energy card types, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/energy-types/{energy-type}:
get:
tags:
- filters
summary: Get cards by energy type
description: Returns cards with the specified energy type, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: energy-type
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The specified energy-type doesn't exist
/regulation-marks:
get:
tags:
- filters
summary: Get all regulation marks
description: Returns a list of all regulation marks on cards, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/regulation-marks/{regulation-mark}:
get:
tags:
- filters
summary: Get cards by regulation mark
description: Returns cards with the specified regulation mark, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: regulation-mark
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The regulation-mark doesn't exist
/stages:
get:
tags:
- filters
summary: Get all Pokemon stages
description: Returns a list of all Pokemon evolution stages, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/stages/{stage}:
get:
tags:
- filters
summary: Get cards by stage
description: Returns cards with the specified evolution stage, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: stage
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The stage doesn't exist
/suffixes:
get:
tags:
- filters
summary: Get all card suffixes
description: Returns a list of all card suffixes (EX, GX, V, etc.), with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/suffixes/{suffix}:
get:
tags:
- filters
summary: Get cards by suffix
description: Returns cards with the specified suffix, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: suffix
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The suffix doesn't exist
/trainer-types:
get:
tags:
- filters
summary: Get all trainer types
description: Returns a list of all trainer card types, with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/trainer-types/{trainer-type}:
get:
tags:
- filters
summary: Get cards by trainer type
description: Returns cards with the specified trainer type, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: trainer-type
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The trainer-type doesn't exist
/variants:
get:
tags:
- filters
summary: Get all card variants
description: Returns a list of all card variant types (normal, holo, reverse, etc.), with support for sorting and pagination
parameters:
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
type: string
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
/variants/{variant}:
get:
tags:
- filters
summary: Get cards by variant
description: Returns cards with the specified variant, with support for filtering, sorting, and pagination
parameters:
- $ref: '#/components/parameters/filter'
- $ref: '#/components/parameters/sortField'
- $ref: '#/components/parameters/sortOrder'
- $ref: '#/components/parameters/paginationPage'
- $ref: '#/components/parameters/paginationItemsPerPage'
- name: variant
in: path
required: true
schema:
type: string
responses:
'200':
description: Successful request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/CardResume'
'404':
$ref: '#/components/responses/NotFound'
'400':
$ref: '#/components/responses/BadRequest'
'500':
$ref: '#/components/responses/InternalServerError'
description: The variant doesn't exist
components:
parameters:
filter:
name: filters
in: query
required: false
style: form
explode: true
description: |
Filter results by field value.
Supports various operators:
- Default/`like:` - Laxist equality (contains, case insensitive)
- `not:`/`notlike:` - Laxist inequality
- `eq:` - Strict equality
- `neq:` - Strict inequality
- `gte:` - Greater than or equal (numbers)
- `lte:` - Less than or equal (numbers)
- `gt:` - Greater than (numbers)
- `lt:` - Less than (numbers)
- `null:` - Field is null
- `notnull:` - Field is not null
- Multiple values with `|` (e.g., `name=eq:Furret|Pikachu`)
schema:
type: [object, null]
additionalProperties:
type: string
example: "{\"name\": \"eq:Furret\", \"hp\": \"lte:60\"}"
sortField:
name: "sort:field"
in: query
description: Field to sort results by (overrides default sorting)
required: false
schema:
type: [string, null]
example: "name"
sortOrder:
name: "sort:order"
in: query
description: Order to sort results (ASC or DESC)
required: false
schema:
type: [string, null]
enum: [ASC, DESC]
default: null
paginationPage:
name: "pagination:page"
in: query
description: Page number for paginated results
required: false
schema:
type: [integer, null]
minimum: 1
default: 1
example: 1
paginationItemsPerPage:
name: "pagination:itemsPerPage"
in: query
description: Number of items per page (applied when pagination:page is used)
required: false
schema:
type: [integer, null]
minimum: 1
default: 100
example: 25
responses:
NotFound:
description: The specified resource was not found
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: "https://tcgdex.dev/errors/not-found"
title: "Resource Not Found"
status: 404
detail: "The requested resource could not be found"
endpoint: "/v2/cards/invalid-id"
method: "GET"
BadRequest:
description: The request was invalid
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: "https://tcgdex.dev/errors/bad-request"
title: "Invalid Request"
status: 400
detail: "The request contains invalid parameters"
endpoint: "/v2/sets/invalid-format"
method: "GET"
InternalServerError:
description: An unexpected error occurred on the server
content:
application/problem+json:
schema:
$ref: '#/components/schemas/Problem'
example:
type: "https://tcgdex.dev/errors/server-error"
title: "Internal Server Error"
status: 500
detail: "An unexpected error occurred while processing your request"
endpoint: "/v2/cards"
method: "GET"
schemas:
Problem:
description: RFC 9457 problem details object for API errors
type: object
required:
- type
- title
- status
properties:
type:
type: string
format: uri
description: URI reference that identifies the problem type
example: "https://tcgdex.dev/errors/not-found"
title:
type: string
description: Short, human-readable summary of the problem type
example: "The resource you are trying to reach does not exist"
status:
type: integer
description: HTTP status code
example: 404
detail:
type: string
description: Human-readable explanation specific to this occurrence of the problem
example: "The requested card with ID 'invalid-id' could not be found"
endpoint:
type: string
description: The API endpoint that was requested
example: "/v2/i-do-not-exists"
method:
type: string
description: The HTTP method used for the request
example: "GET"
examples:
notFound:
value:
type: "https://tcgdex.dev/errors/not-found"
title: "Resource Not Found"
status: 404
detail: "The requested card with ID 'base1-999' could not be found"
endpoint: "/v2/cards/base1-999"
method: "GET"
badRequest:
value:
type: "https://tcgdex.dev/errors/bad-request"
title: "Invalid Request"
status: 400
detail: "The provided parameter 'hp' must be a valid number"
endpoint: "/v2/hp/abc"
method: "GET"
serverError:
value:
type: "https://tcgdex.dev/errors/server-error"
title: "Internal Server Error"
status: 500
detail: "An unexpected error occurred while processing your request"
endpoint: "/v2/cards"
method: "GET"
WeakRes:
type: array
xml:
name: WeakResItem
wrapped: true
items:
required:
- type
type: object
properties:
type:
type: string
example: "Psychic"
value:
type: [string, null]
example: x2
Booster:
description: Represents a booster pack that contains Pokemon cards
required:
- id
- name
type: object
properties:
id:
type: string
description: The booster ID using format boo_<set_id>-<booster_name>
pattern: "^boo_.*-.*$"
example: "boo_A1-mewtwo"
name:
type: string
description: The name of the booster
example: "Mewtwo"
logo:
type: [string, null]
description: URL to the logo of the booster
example: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-logo"
artwork_front:
type: [string, null]
description: URL to the front artwork of the booster pack
example: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
artwork_back:
type: [string, null]
description: URL to the back artwork of the booster pack
example: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-back"
examples:
complete:
value:
id: "boo_A1-mewtwo"
name: "Mewtwo"
logo: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-logo"
artwork_front: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
artwork_back: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
minimal:
value:
id: "boo_base1-base"
name: "Base Set Booster"
logo: null
artwork_front: "https://assets.tcgdex.net/en/base/base1/boosters/base/front"
artwork_back: null
SerieResume:
description: Basic information about a Pokemon TCG series
required:
- id
- name
type: object
properties:
id:
type: string
description: Unique identifier of the series
name:
type: string
description: Name of the series
logo:
type: [string, null]
description: URL to the logo of the series
Serie:
description: Detailed information about a Pokemon TCG series, including all sets within the series
required:
- id
- name
- sets
- firstSet
- lastSet
- releaseDate
type: object
properties:
id:
type: string
description: Unique identifier of the series
name:
type: string
description: Name of the series
logo:
type: string
description: URL to the logo of the series
releaseDate:
type: string
format: date
description: Release date of the series
firstSet:
$ref: '#/components/schemas/SetResume'
description: The first set released in this series
lastSet:
$ref: '#/components/schemas/SetResume'
description: The most recent set released in this series
sets:
type: array
description: All sets contained in this series
items:
$ref: '#/components/schemas/SetResume'
Set:
description: Detailed information about a Pokemon TCG set, including card lists and metadata
required:
- cardCount
- cards
- id
- name
- legal
- serie
- releaseDate
type: object
properties:
id:
type: string
description: Unique identifier of the set
example: "base1"
name:
type: string
description: Name of the set
example: "Base Set"
logo:
type: string
description: URL to the logo of the set
example: "https://assets.tcgdex.net/en/base/base1/logo"
symbol:
type: [string, null]
description: URL to the set symbol
example: "https://assets.tcgdex.net/univ/base/base1/symbol"
serie:
$ref: '#/components/schemas/SerieResume'
description: The series this set belongs to
tcgOnline:
type: [string, null]
description: Identifier for this set in Pokemon TCG Online
releaseDate:
type: string
format: date
description: Official release date of the set
variants:
type: object
description: Indicates which card variants exist in this set
properties:
normal:
type: [boolean, null]
description: Indicates whether normal variants exist
reverse:
type: [boolean, null]
description: Indicates whether reverse holo variants exist
holo:
type: [boolean, null]
description: Indicates whether holo variants exist
firstEdition:
type: [boolean, null]
description: Indicates whether first edition variants exist
wPromo:
type: [boolean, null]
description: Indicates whether promotional variants exist
boosters:
type: array
description: The booster packs available in this set
items:
$ref: '#/components/schemas/Booster'
example:
- id: "boo_A1-mewtwo"
name: "Mewtwo"
logo: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-logo"
artwork_front: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
artwork_back: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
- id: "boo_A1-pikachu"
name: "Pikachu"
legal:
type: object
description: Information about tournament legality of this set
required:
- standard
- expanded
properties:
standard:
type: boolean
description: Indicates whether this set is legal in standard format tournaments
example: false
expanded:
type: boolean
description: Indicates whether this set is legal in expanded format tournaments
example: true
abbreviation:
type: object
description: Common abbreviations used for this set
properties:
official:
type: string
description: The official abbreviation used by Pokemon Company
example: "BS"
localized:
type: string
description: Localized abbreviation used in the current language
example: BS
cardCount:
required:
- official
- total
type: object
description: Statistics about the number of cards in this set
properties:
total:
type: number
description: Total number of cards in the set including variants
example: 101
official:
type: number
description: Number of cards officially numbered in the set
example: 100
normal:
type: number
description: Number of cards having a normal variant
reverse:
type: number
description: Number of cards having a reverse holo variant
holo:
type: number
description: Number of cards having a holographic variant
firstEd:
type: [number, null]
description: Number of cards having a first edition variant
cards:
type: array
description: List of all cards in this set
items:
$ref: '#/components/schemas/CardResume'
SetResume:
description: Basic information about a Pokemon TCG set
required:
- cardCount
- id
- name
type: object
properties:
id:
type: string
description: Unique identifier of the set
example: base1
name:
type: string
description: Name of the set
example: Base Set
logo:
type: string
description: URL to the logo of the set
example: https://assets.tcgdex.net/en/base/base1/logo
symbol:
type: string
description: URL to the set symbol
example: https://assets.tcgdex.net/univ/base/base1/symbol
cardCount:
required:
- official
- total
type: object
description: Statistics about the number of cards in this set
properties:
total:
type: number
description: Total number of cards in the set including variants
example: 101
official:
type: number
description: Number of cards officially numbered in the set
example: 100
CardResume:
description: Basic information about a Pokemon TCG card
required:
- id
- localId
- name
type: object
properties:
id:
type: string
description: Unique identifier of the card
example: "base1-1"
localId:
type: string
description: Card number within its set
example: "1"
image:
type: [string, null]
description: URL to the card image
example: "https://assets.tcgdex.net/en/base/base1/1"
name:
type: string
description: Name of the card (including any suffix)
example: "Alakazam"
Card:
description: Detailed information about a Pokemon TCG card, including game mechanics
required:
- category
- id
- localId
- name
- rarity
- set
- legal
- updated
type: object
properties:
id:
type: string
description: Unique identifier of the card
example: base1-1
localId:
type: string
description: Card number within its set
example: '1'
image:
type: string
description: URL to the card image
example: https://assets.tcgdex.net/en/base/base1/1
name:
type: string
description: Name of the card (including any suffix)
example: Alakazam
illustrator:
type: [string, null]
description: Artist who illustrated the card
example: "Ken Sugimori"
category:
type: string
description: Card category (Pokemon, Trainer, or Energy)
example: "Pokemon"
rarity:
type: string
description: Card rarity (Common, Uncommon, Rare, etc.)
example: "Rare"
set:
$ref: '#/components/schemas/SetResume'
description: The set this card belongs to
variants:
required:
- firstEdition
- holo
- normal
- reverse
- wPromo
type: object
description: Indicates which variants of this card exist (overrides set variants)
properties:
normal:
type: boolean
description: Indicates whether a normal variant exists
reverse:
type: boolean
description: Indicates whether a reverse holo variant exists
holo:
type: boolean
description: Indicates whether a holo variant exists
firstEdition:
type: boolean
description: Indicates whether a first edition variant exists
wPromo:
type: boolean
description: Indicates whether a promotional variant exists
hp:
type: [number, "null"]
description: Hit Points (HP) of the Pokemon
example: 80
types:
type: [array, null]
description: Energy types of the Pokemon
items:
type: string
example: Psychic
evolveFrom:
type: [string, null]
description: Name of the Pokemon this evolves from
example: "Kadabra"
stage:
type: [string, null]
description: Evolution stage (Basic, Stage 1, Stage 2, etc.)
example: "Stage 2"
suffix:
type: [string, null]
description: Special card suffix (EX, GX, V, etc.)
item:
required:
- effect
- name
type: object
description: Pokemon's held item information
properties:
name:
type: string
description: Name of the held item
effect:
type: string
description: Effect of the held item
trainerType:
type: [string, null]
description: Type of trainer card (Item, Supporter, Stadium, Tool)
energyType:
type: [string, null]
description: Type of energy card (Basic, Special)
regulationMark:
type: [string, null]
description: Regulation mark on cards (introduced in Sword & Shield)
example: "E"
legal:
type: object
description: Information about tournament legality of this card
properties:
standard:
type: boolean
description: Indicates whether this card is legal in standard format tournaments
example: false
expanded:
type: boolean
description: Indicates whether this card is legal in expanded format tournaments
example: true
description:
type: [string, null]
description: Descriptive text or flavor text on the card
level:
type: [number, string]
description: Level of the Pokemon (can be a string 'X' for LEVEL-UP cards)
example: 42
abilities:
type: array
description: Pokemon abilities (Poké-Power, Poké-Body, Ability, etc.)
items:
type: object
properties:
type:
type: string
description: Type of ability (Poké-Power, Poké-Body, Ability, etc.)
example: "Poké-Power"
name:
type: string
description: Name of the ability
example: "Damage Swap"
effect:
type: [string, null]
description: Effect text of the ability
example: "As often as you like..."
attacks:
type: array
description: Pokemon attacks
items:
required:
- name
type: object
properties:
cost:
type: array
description: Energy cost to use this attack
items:
type: string
example: "Psychic"
name:
type: string
description: Name of the attack
example: "Confuse Ray"
effect:
type: [string, null]
description: Effect text of the attack
example: "Flip a coin. If heads, ..."
damage:
type: [number, string]
description: Base damage of the attack (can be string for special damage)
example: 30
retreat:
type: [number, null]
description: Retreat cost of the Pokemon
example: 3
dexId:
type: array
description: Pokedex number(s) of the Pokemon
xml:
name: dexIdItem
wrapped: true
items:
type: number
weaknesses:
type: array
description: Types the Pokemon is weak against
xml:
name: weakness
wrapped: true
items:
$ref: '#/components/schemas/WeakRes'
resistances:
type: array
description: Types the Pokemon is resistant to
xml:
name: resistance
wrapped: true
items:
$ref: '#/components/schemas/WeakRes'
boosters:
type: array
description: Boosters in which this card is available
items:
$ref: '#/components/schemas/Booster'
example:
- id: "boo_A1-mewtwo"
name: "Mewtwo"
logo: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-logo"
artwork_front: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
artwork_back: "https://assets.tcgdex.net/en/tcgp/A1/boosters/mewtwo-front"
updated:
type: string
description: Timestamp of when this card data was last updated
format: date-time
# xml:
# name: Card
StringEndpoint:
description: Represents a collection of cards matching a specific string value (for endpoints like types, rarities, etc.)
required:
- cards
- name
type: object
properties:
name:
type: string
description: The string value this endpoint represents
cards:
type: array
description: Cards matching the specific string value
items:
$ref: '#/components/schemas/CardResume'