An API of Ice and Fire books API

Books from the A Song of Ice and Fire series

OpenAPI Specification

game-of-thrones-books-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: An API of Ice and Fire books API
  description: An API of Ice and Fire is a free, open REST API providing comprehensive Game of Thrones and A Song of Ice and Fire data including books, characters, and houses from George R.R. Martin's universe. No authentication is required. The API offers structured, quantified data about the HBO series and book series covering all named characters, their allegiances, relationships, book appearances, TV season appearances, and details on every noble house and published book in the series.
  version: 1.0.0
  contact:
    name: Joakim Skoog
    url: https://github.com/joakimskoog
  license:
    name: MIT
    url: https://github.com/joakimskoog/AnApiOfIceAndFire/blob/master/LICENSE.md
  termsOfService: https://anapioficeandfire.com/
servers:
- url: https://www.anapioficeandfire.com/api
  description: Production server
tags:
- name: books
  description: Books from the A Song of Ice and Fire series
paths:
  /:
    get:
      summary: API root
      description: Returns the root resource listing all top-level endpoints.
      operationId: getRoot
      tags:
      - books
      responses:
        '200':
          description: Root resource with links to books, characters, and houses.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RootResource'
              example:
                books: https://www.anapioficeandfire.com/api/books
                characters: https://www.anapioficeandfire.com/api/characters
                houses: https://www.anapioficeandfire.com/api/houses
  /books:
    get:
      summary: List books
      description: Returns a paginated list of all books in the A Song of Ice and Fire series. Results support filtering by name, fromReleaseDate, and toReleaseDate.
      operationId: listBooks
      tags:
      - books
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/pageSize'
      - name: name
        in: query
        description: Filter books by name (case-sensitive, partial match).
        required: false
        schema:
          type: string
        example: A Game of Thrones
      - name: fromReleaseDate
        in: query
        description: Filter books released on or after this date (ISO 8601).
        required: false
        schema:
          type: string
          format: date-time
        example: '1996-01-01T00:00:00'
      - name: toReleaseDate
        in: query
        description: Filter books released on or before this date (ISO 8601).
        required: false
        schema:
          type: string
          format: date-time
        example: '2020-12-31T00:00:00'
      responses:
        '200':
          description: A paginated list of books.
          headers:
            Link:
              description: Hypermedia pagination links (first, prev, next, last) using RFC 5988 format.
              schema:
                type: string
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Book'
  /books/{id}:
    get:
      summary: Get a book
      description: Returns a single book resource by its numeric ID.
      operationId: getBook
      tags:
      - books
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: A book resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Book'
        '404':
          description: Book not found.
components:
  schemas:
    RootResource:
      type: object
      description: Root resource containing links to the top-level collections.
      properties:
        books:
          type: string
          format: uri
          description: URL to the books collection.
        characters:
          type: string
          format: uri
          description: URL to the characters collection.
        houses:
          type: string
          format: uri
          description: URL to the houses collection.
    Book:
      type: object
      description: A book published in the A Song of Ice and Fire series.
      properties:
        url:
          type: string
          format: uri
          description: The canonical URL of this book resource.
        name:
          type: string
          description: The name of the book.
          example: A Game of Thrones
        isbn:
          type: string
          description: ISBN-13 of the book.
          example: 978-0553103540
        authors:
          type: array
          description: List of authors who wrote this book.
          items:
            type: string
          example:
          - George R. R. Martin
        numberOfPages:
          type: integer
          description: Total number of pages in the book.
          example: 694
        publisher:
          type: string
          description: Publisher of the book.
          example: Bantam Books
        country:
          type: string
          description: Country of origin for the original publication.
          example: United States
        mediaType:
          type: string
          description: Media type (e.g. Hardcover, Paperback).
          example: Hardcover
        released:
          type: string
          format: date-time
          description: Release date of the book (ISO 8601).
          example: '1996-08-01T00:00:00'
        characters:
          type: array
          description: URLs of characters who appear in this book.
          items:
            type: string
            format: uri
        povCharacters:
          type: array
          description: URLs of characters with point-of-view chapters in this book.
          items:
            type: string
            format: uri
  parameters:
    id:
      name: id
      in: path
      required: true
      description: Numeric identifier of the resource.
      schema:
        type: integer
        minimum: 1
      example: 1
    pageSize:
      name: pageSize
      in: query
      required: false
      description: Number of results per page (max 50).
      schema:
        type: integer
        minimum: 1
        maximum: 50
        default: 10
      example: 10
    page:
      name: page
      in: query
      required: false
      description: Page number for pagination (1-based).
      schema:
        type: integer
        minimum: 1
        default: 1
      example: 1
externalDocs:
  description: Official API Documentation (GitHub Wiki)
  url: https://github.com/joakimskoog/AnApiOfIceAndFire/wiki