comics-api
An ApolloServer powered GraphQL API for serving comic data from the comics PostgreSQL database.
API Endpoints
https://comics-api.thewhitehouse.dev
Version
main
Queries
bag
Description
Returns a single Bag by its bagId.
Example
Query
query bag($bagId: ID!) {
bag(bagId: $bagId) {
bagId
manufacturer
era
material
thickness
dimensions
isResealable
isThick
hasAcid
}
}
Variables
{"bagId": "4"}
Response
{
"data": {
"bag": {
"bagId": "4",
"manufacturer": "abc123",
"era": "abc123",
"material": "abc123",
"thickness": 123,
"dimensions": "xyz789",
"isResealable": false,
"isThick": false,
"hasAcid": false
}
}
}
bags
Description
Returns a List of all Bags.
Response
Returns [Bag!]!
Example
Query
query bags {
bags {
bagId
manufacturer
era
material
thickness
dimensions
isResealable
isThick
hasAcid
}
}
Response
{
"data": {
"bags": [
{
"bagId": "4",
"manufacturer": "xyz789",
"era": "xyz789",
"material": "xyz789",
"thickness": 987,
"dimensions": "xyz789",
"isResealable": true,
"isThick": true,
"hasAcid": false
}
]
}
}
board
Description
Returns a single Board.
Example
Query
query board($boardId: ID!) {
board(boardId: $boardId) {
boardId
manufacturer
era
thickness
dimensions
hasAcid
}
}
Variables
{"boardId": "4"}
Response
{
"data": {
"board": {
"boardId": "4",
"manufacturer": "xyz789",
"era": "xyz789",
"thickness": 987,
"dimensions": "xyz789",
"hasAcid": false
}
}
}
boards
Description
Returns a List of all Boards.
Response
Returns [Board!]!
Example
Query
query boards {
boards {
boardId
manufacturer
era
thickness
dimensions
hasAcid
}
}
Response
{
"data": {
"boards": [
{
"boardId": 4,
"manufacturer": "xyz789",
"era": "abc123",
"thickness": 987,
"dimensions": "xyz789",
"hasAcid": false
}
]
}
}
box
Description
Returns a single Box by its boxId.
Example
Query
query box($boxId: ID!) {
box(boxId: $boxId) {
boxId
name
size
color
material
comics {
...ComicFragment
}
}
}
Variables
{"boxId": 4}
Response
{
"data": {
"box": {
"boxId": "4",
"name": "abc123",
"size": "SHORT",
"color": "abc123",
"material": "abc123",
"comics": [Comic]
}
}
}
boxes
Description
Returns a List of all Boxes.
Response
Returns [Box!]!
Example
Query
query boxes {
boxes {
boxId
name
size
color
material
comics {
...ComicFragment
}
}
}
Response
{
"data": {
"boxes": [
{
"boxId": 4,
"name": "xyz789",
"size": "SHORT",
"color": "abc123",
"material": "abc123",
"comics": [Comic]
}
]
}
}
comic
Example
Query
query comic($comicId: ID!) {
comic(comicId: $comicId) {
comicId
series {
...SeriesFragment
}
title
issue
cover
printing
distribution
type
releaseDate
price
upc
isbn
notes
box {
...BoxFragment
}
transaction {
...TransactionFragment
}
purchasePrice
event {
...EventFragment
}
bag {
...BagFragment
}
board {
...BoardFragment
}
}
}
Variables
{"comicId": 4}
Response
{
"data": {
"comic": {
"comicId": 4,
"series": Series,
"title": "abc123",
"issue": 123.45,
"cover": 987,
"printing": 987,
"distribution": "DIRECT",
"type": "ISSUE",
"releaseDate": "xyz789",
"price": 123.45,
"upc": "abc123",
"isbn": "xyz789",
"notes": "xyz789",
"box": Box,
"transaction": Transaction,
"purchasePrice": 123.45,
"event": Event,
"bag": Bag,
"board": Board
}
}
}
comics
Description
Returns a List of all Comics.
Response
Returns [Comic!]!
Example
Query
query comics {
comics {
comicId
series {
...SeriesFragment
}
title
issue
cover
printing
distribution
type
releaseDate
price
upc
isbn
notes
box {
...BoxFragment
}
transaction {
...TransactionFragment
}
purchasePrice
event {
...EventFragment
}
bag {
...BagFragment
}
board {
...BoardFragment
}
}
}
Response
{
"data": {
"comics": [
{
"comicId": 4,
"series": Series,
"title": "abc123",
"issue": 987.65,
"cover": 987,
"printing": 987,
"distribution": "DIRECT",
"type": "ISSUE",
"releaseDate": "xyz789",
"price": 123.45,
"upc": "xyz789",
"isbn": "abc123",
"notes": "abc123",
"box": Box,
"transaction": Transaction,
"purchasePrice": 987.65,
"event": Event,
"bag": Bag,
"board": Board
}
]
}
}
event
Description
Returns a single Event by its eventId.
Example
Query
query event($eventId: ID!) {
event(eventId: $eventId) {
eventId
publisher
name
description
startDate
endDate
comics {
...EventComicFragment
}
}
}
Variables
{"eventId": 4}
Response
{
"data": {
"event": {
"eventId": "4",
"publisher": "xyz789",
"name": "abc123",
"description": "xyz789",
"startDate": "xyz789",
"endDate": "xyz789",
"comics": [EventComic]
}
}
}
events
Description
Returns a List of all Events.
Response
Returns [Event!]!
Example
Query
query events {
events {
eventId
publisher
name
description
startDate
endDate
comics {
...EventComicFragment
}
}
}
Response
{
"data": {
"events": [
{
"eventId": "4",
"publisher": "abc123",
"name": "abc123",
"description": "abc123",
"startDate": "abc123",
"endDate": "abc123",
"comics": [EventComic]
}
]
}
}
genre
Description
Returns a single Genre by its genreId.
genres
Description
Returns a List of all Genres.
Response
Returns [Genre!]!
Example
Query
query genres {
genres {
genreId
name
}
}
Response
{
"data": {
"genres": [
{
"genreId": "4",
"name": "abc123"
}
]
}
}
me
Description
Returns the current User.
Response
Returns a User!
Example
Query
query me {
me {
isAdmin
}
}
Response
{"data": {"me": {"isAdmin": false}}}
sere
Description
Returns a single Series by its seriesId
Example
Query
query sere($seriesId: ID!) {
sere(seriesId: $seriesId) {
seriesId
publisher
imprint
name
type
volume
age
startYear
endYear
genres {
...GenreFragment
}
comics {
...ComicFragment
}
}
}
Variables
{"seriesId": "4"}
Response
{
"data": {
"sere": {
"seriesId": "4",
"publisher": "xyz789",
"imprint": "xyz789",
"name": "abc123",
"type": "COLLECTION",
"volume": 123,
"age": "PLATINUM",
"startYear": 123,
"endYear": 987,
"genres": [Genre],
"comics": [Comic]
}
}
}
series
Description
Returns List of all Series.
Response
Returns [Series!]!
Example
Query
query series {
series {
seriesId
publisher
imprint
name
type
volume
age
startYear
endYear
genres {
...GenreFragment
}
comics {
...ComicFragment
}
}
}
Response
{
"data": {
"series": [
{
"seriesId": "4",
"publisher": "abc123",
"imprint": "abc123",
"name": "xyz789",
"type": "COLLECTION",
"volume": 987,
"age": "PLATINUM",
"startYear": 987,
"endYear": 123,
"genres": [Genre],
"comics": [Comic]
}
]
}
}
shop
Description
Returns a single Shop by its shopId.
Example
Query
query shop($shopId: ID!) {
shop(shopId: $shopId) {
shopId
name
type
city
state
country
zip
transactions {
...TransactionFragment
}
}
}
Variables
{"shopId": "4"}
Response
{
"data": {
"shop": {
"shopId": "4",
"name": "abc123",
"type": "BOOKSTORE",
"city": "abc123",
"state": "xyz789",
"country": "xyz789",
"zip": "xyz789",
"transactions": [Transaction]
}
}
}
shops
Description
Returns a List of all Shops.
Response
Returns [Shop!]!
Example
Query
query shops {
shops {
shopId
name
type
city
state
country
zip
transactions {
...TransactionFragment
}
}
}
Response
{
"data": {
"shops": [
{
"shopId": "4",
"name": "xyz789",
"type": "BOOKSTORE",
"city": "xyz789",
"state": "xyz789",
"country": "abc123",
"zip": "abc123",
"transactions": [Transaction]
}
]
}
}
transaction
Description
Returns a single Transaction by its txId
Response
Returns a Transaction
Arguments
Name | Description |
---|---|
txId - ID!
|
Example
Query
query transaction($txId: ID!) {
transaction(txId: $txId) {
txId
date
total
taxRate
discount
method
shop {
...ShopFragment
}
notes
comics {
...ComicFragment
}
}
}
Variables
{"txId": 4}
Response
{
"data": {
"transaction": {
"txId": "4",
"date": "abc123",
"total": 987.65,
"taxRate": 123.45,
"discount": 123.45,
"method": "CARD",
"shop": Shop,
"notes": "abc123",
"comics": [Comic]
}
}
}
transactions
Description
Returns a List of all Transactions.
Response
Returns [Transaction!]!
Example
Query
query transactions {
transactions {
txId
date
total
taxRate
discount
method
shop {
...ShopFragment
}
notes
comics {
...ComicFragment
}
}
}
Response
{
"data": {
"transactions": [
{
"txId": 4,
"date": "abc123",
"total": 987.65,
"taxRate": 123.45,
"discount": 123.45,
"method": "CARD",
"shop": Shop,
"notes": "xyz789",
"comics": [Comic]
}
]
}
}
Mutations
addBox
Description
Creates and returns a new Box.
Example
Query
mutation addBox($box: AddBox!) {
addBox(box: $box) {
boxId
name
size
color
material
comics {
...ComicFragment
}
}
}
Variables
{"box": AddBox}
Response
{
"data": {
"addBox": {
"boxId": "4",
"name": "xyz789",
"size": "SHORT",
"color": "xyz789",
"material": "xyz789",
"comics": [Comic]
}
}
}
addGenre
Description
Creates and returns a s new Genre.
addShop
Description
Creates and returns a new Shop.
Example
Query
mutation addShop($shop: AddShop!) {
addShop(shop: $shop) {
shopId
name
type
city
state
country
zip
transactions {
...TransactionFragment
}
}
}
Variables
{"shop": AddShop}
Response
{
"data": {
"addShop": {
"shopId": 4,
"name": "abc123",
"type": "BOOKSTORE",
"city": "abc123",
"state": "xyz789",
"country": "abc123",
"zip": "abc123",
"transactions": [Transaction]
}
}
}
Types
AddBox
Description
Fields available to addBox mutation.
Example
{
"name": "abc123",
"size": "SHORT",
"color": "xyz789",
"material": "xyz789"
}
AddGenre
Description
Fields available for addGenre mutation.
Fields
Input Field | Description |
---|---|
name - String
|
The name of the genre. |
Example
{"name": "abc123"}
AddShop
Description
Fields available for addShop mutation.
Fields
Input Field | Description |
---|---|
name - String!
|
The name of the Shop. |
type - ShopType!
|
The type of Shop. See ShopType. |
city - String
|
The name of the city the Shop is located in. |
state - String
|
The 2 letter abbreviation of the state the Shop is located in. |
country - String
|
The ISO 3166-1 alpha-2 code of the country the Shop is located in. |
zip - String
|
The zip code of the Shop. US only. |
Example
{
"name": "xyz789",
"type": "BOOKSTORE",
"city": "xyz789",
"state": "abc123",
"country": "xyz789",
"zip": "abc123"
}
Bag
Description
A Bag that stores comics.
Fields
Field Name | Description |
---|---|
bagId - ID!
|
Uniquely identifies a Bag. |
manufacturer - String!
|
The company that manufacturers the Bag. |
era - String!
|
The era of comics that fit in this Bag. |
material - String!
|
The material the Bag is made of. Typically mylar or a poly- material. |
thickness - Int!
|
The thickness in millimeters of the Bag. |
dimensions - String!
|
The width x height of the Bag. |
isResealable - Boolean!
|
Indicates if the Bag has a resealable flap. |
isThick - Boolean!
|
Indicates if the Bag is for thick comics. |
hasAcid - Boolean!
|
Indicates if the Bag is made with chemicals or materials that contain acid. |
Example
{
"bagId": "4",
"manufacturer": "abc123",
"era": "xyz789",
"material": "abc123",
"thickness": 123,
"dimensions": "xyz789",
"isResealable": true,
"isThick": true,
"hasAcid": false
}
Board
Description
A Board that supports/backs a Comic in a Bag.
Fields
Field Name | Description |
---|---|
boardId - ID!
|
Uniquely identifies a Board. |
manufacturer - String!
|
The company that manufacturers the Board. |
era - String!
|
The era of comics that fit in this Board. |
thickness - Int!
|
The thickness in millimeters of the Board. |
dimensions - String!
|
The width x height of the Board. |
hasAcid - Boolean!
|
Indicates if the Board is made with chemicals or materials that contain acid. |
Example
{
"boardId": 4,
"manufacturer": "xyz789",
"era": "xyz789",
"thickness": 123,
"dimensions": "abc123",
"hasAcid": false
}
Boolean
Description
The Boolean
scalar type represents true
or false
.
Example
true
Box
Description
A box that stores comics.
Example
{
"boxId": 4,
"name": "xyz789",
"size": "SHORT",
"color": "abc123",
"material": "abc123",
"comics": [Comic]
}
BoxSize
Description
The size of the Box.
Values
Enum Value | Description |
---|---|
|
A short comic box. |
|
A long comic box. |
Example
"SHORT"
Comic
Description
Represents a comic book in my collection.
Fields
Field Name | Description |
---|---|
comicId - ID!
|
Uniquely identifies a Comic. |
series - Series
|
The Series this Comic is a part of. |
title - String
|
The title of the Comic for ComicType TP and HC. |
issue - Float
|
The issue number for ComicType issue and annual. |
cover - Int
|
The cover number for ComicType ISSUE and ANNUAL. |
printing - Int
|
The printing. |
distribution - ComicDistribution
|
The method of distribution of the Comic. See ComicDistribution. |
type - ComicType!
|
The type of Comic. See ComicType. |
releaseDate - String!
|
The date the Comic was released. |
price - Float!
|
The cover price of the comic. |
upc - String
|
Universal Product Code of the Comic for ComicType ISSUE and ANNUAL. |
isbn - String
|
International Standard Book Number of the Comic. for ComicType TP and HC. |
notes - String
|
Extra information about the Comic. |
box - Box
|
The Box that the Comic is stored in. |
transaction - Transaction!
|
The transaction that purchased the Comic. |
purchasePrice - Float
|
The price the Comic was purchased at. |
event - Event
|
The Event the Comic is a part of. See Event. |
bag - Bag
|
The Bag the Comic is stored in. See Bag. |
board - Board
|
The Board the Comic is stored with. See Board. |
Example
{
"comicId": 4,
"series": Series,
"title": "abc123",
"issue": 987.65,
"cover": 123,
"printing": 123,
"distribution": "DIRECT",
"type": "ISSUE",
"releaseDate": "abc123",
"price": 123.45,
"upc": "abc123",
"isbn": "xyz789",
"notes": "xyz789",
"box": Box,
"transaction": Transaction,
"purchasePrice": 123.45,
"event": Event,
"bag": Bag,
"board": Board
}
ComicDistribution
Description
Defines the different methods of distributing comics to consumers. Note: most modern comics do not differentiate.
Values
Enum Value | Description |
---|---|
|
Direct Market to consumers through comic book stores and libraries. |
|
Sold through newsstands and convenience stores. |
Example
"DIRECT"
ComicType
Description
Defines the types of comic books.
Values
Enum Value | Description |
---|---|
|
An individual story. |
|
An extended issue published yearly. |
|
A soft cover collection of ISSUEs and/or ANNUALs or a graphic novel. |
|
A hard cover collection of ISSUEs and/ or ANNUALS or a graphic novel. |
Example
"ISSUE"
Event
Description
A story told through multiple Comics in multiple Series.
Fields
Field Name | Description |
---|---|
eventId - ID!
|
Unique identifier of the event. |
publisher - String!
|
The company that published the event. |
name - String!
|
The name of the event. |
description - String!
|
Description of the event's plot. |
startDate - String!
|
The date the event started. |
endDate - String
|
The date the event ended. |
comics - [EventComic!]!
|
The Comics that are apart of the Event. |
Example
{
"eventId": "4",
"publisher": "xyz789",
"name": "abc123",
"description": "xyz789",
"startDate": "abc123",
"endDate": "xyz789",
"comics": [EventComic]
}
EventComic
Description
A Comic that is a part of an Event.
Fields
Field Name | Description |
---|---|
comic - Comic!
|
The Comic in the Event. See Comic. |
order - Int
|
The numerical reading order the Comic is in the Event. |
role - EventComicRole!
|
The role the Comic plays in the Event. See EventComicRole. |
Example
{"comic": Comic, "order": 987, "role": "COLLECTION"}
EventComicRole
Description
Defines the role a Comic plays in an Event.
Values
Enum Value | Description |
---|---|
|
Collects some or all of the issues in an Event. Does not introduce any new content to the Event. |
|
A part of the main story. |
|
Concludes the Event. |
|
Helps readers understand the Event but does not contain any stories. |
|
Introduces and sets-up the Event. |
|
Related to the Event but not a part of the main story. |
Example
"COLLECTION"
Float
Description
The Float
scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
123.45
Genre
ID
Description
The ID
scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4"
) or integer (such as 4
) input value will be accepted as an ID.
Example
4
Int
Description
The Int
scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
987
Series
Description
A series of comics.
Fields
Field Name | Description |
---|---|
seriesId - ID!
|
Unique identifier of the series. |
publisher - String!
|
The company publishing the series. |
imprint - String
|
The subsidiary of the company publishing the series. |
name - String!
|
The name of the series. |
type - SeriesType!
|
The type of series. See SeriesType. |
volume - Int!
|
The numbered iteration of a series that has been published multiple times. |
age - SeriesAge!
|
The age of the series. See SeriesAge. |
startYear - Int!
|
The year the series was first published. |
endYear - Int
|
The year the series ended. |
genres - [Genre!]!
|
List of Genres the Series is classified as. |
comics - [Comic!]!
|
List of Comics in the Series. |
Example
{
"seriesId": "4",
"publisher": "abc123",
"imprint": "xyz789",
"name": "xyz789",
"type": "COLLECTION",
"volume": 123,
"age": "PLATINUM",
"startYear": 987,
"endYear": 987,
"genres": [Genre],
"comics": [Comic]
}
SeriesAge
Description
Represents a time period with a name in comic history
Values
Enum Value | Description |
---|---|
|
0 - 1938 |
|
1939 - 1955 |
|
1956 - 1969 |
|
1970 -1984 |
|
1985+ |
Example
"PLATINUM"
SeriesType
Description
Categorizes series by the number of issues.
Values
Enum Value | Description |
---|---|
|
A series of issues that collect other issues |
|
A series of no more than 12 issues. |
|
A series consisting of one issue. |
|
A regular series with more than 12 issues or no initial set number of issues. |
Example
"COLLECTION"
Shop
Description
A shop where comics are purchased.
Fields
Field Name | Description |
---|---|
shopId - ID!
|
Unique identifier of a shop. Formatted as SHOP-XXX. |
name - String!
|
The name of the Shop. |
type - ShopType!
|
The type of shop. See ShopType. |
city - String
|
The name of the city the Shop is located in. |
state - String
|
The 2 letter abbreviation of the state the Shop is located in. |
country - String
|
The ISO 3166-1 alpha-2 code of the country the Shop is located in. |
zip - String
|
The zip code of the Shop. US only. |
transactions - [Transaction!]!
|
The Transactions made at the Shop. |
Example
{
"shopId": "4",
"name": "xyz789",
"type": "BOOKSTORE",
"city": "abc123",
"state": "abc123",
"country": "xyz789",
"zip": "xyz789",
"transactions": [Transaction]
}
ShopType
Description
The types of Shops where comics can be bought.
Values
Enum Value | Description |
---|---|
|
A Shop that mainly sells books but may also sell comics. |
|
A Shop at a comic Event. See Event. |
|
A Local Comic Shop. A direct market comic book store. |
|
A shop that sells and lends books and comics. |
|
A Shop that sells comics online. |
|
An individual that sells comics privately. |
|
A Shop owned directly be a comic publisher. |
Example
"BOOKSTORE"
String
Description
The String
scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"abc123"
Transaction
Description
Represents a Transaction to purchase comics.
Fields
Field Name | Description |
---|---|
txId - ID!
|
Unique identifier of a Transaction. |
date - String!
|
The date the Transaction occurred. |
total - Float
|
The total cost of the Transaction. |
taxRate - Float
|
The tax rate as a decimal applied to the Transaction. |
discount - Float
|
The monetary discount applied to the Transaction. |
method - TransactionMethod
|
The payment method used for the Transaction. See TransactionMethod. |
shop - Shop
|
The Shop the Transaction occurred at. See Shop. |
notes - String
|
Notes about the Transaction. |
comics - [Comic!]!
|
The comics purchased in this Transaction. |
Example
{
"txId": 4,
"date": "xyz789",
"total": 987.65,
"taxRate": 123.45,
"discount": 987.65,
"method": "CARD",
"shop": Shop,
"notes": "xyz789",
"comics": [Comic]
}
TransactionMethod
Description
Represents the payment method of a Transaction
Values
Enum Value | Description |
---|---|
|
A transaction made with bank card. |
|
A transaction made with cash. |
|
A non-exchange based transaction. |
Example
"CARD"
User
Description
Represents and end-user.
Fields
Field Name | Description |
---|---|
isAdmin - Boolean
|
If the User is an administrator that can call mutations. |
Example
{"isAdmin": false}