{
  "openapi": "3.1.0",
  "info": {
    "title": "HxHStatus public API",
    "version": "1.2.0",
    "description": "Read-only tracker, localized chart PNGs, and cached Yoshihiro Togashi post translations."
  },
  "servers": [
    {
      "url": "https://hxhstatus.com"
    }
  ],
  "security": [],
  "paths": {
    "/api/v1/index.json": {
      "get": {
        "operationId": "getApiIndex",
        "summary": "Endpoint index, supported locales, and revisioned chart URLs",
        "responses": {
          "200": {
            "description": "Index JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Index"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/share/{locale}/production.png": {
      "get": {
        "operationId": "getProductionChart",
        "summary": "Chart 1: production tracker PNG",
        "description": "Returns the current chart directly as a PNG, without authentication. Use the revisioned URL from index.json charts to refresh bot image caches. Images are generated with tracker updates, never on request.",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          },
          {
            "name": "r",
            "in": "query",
            "required": false,
            "description": "Cache revision from the API chart URL; not a historical snapshot selector.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "ETag returned by a previous request.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Localized chart PNG.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string"
                },
                "description": "Cached for five minutes, then revalidated."
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Validator for conditional requests."
              }
            },
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "304": {
            "description": "The chart has not changed; reuse the cached image."
          },
          "404": {
            "description": "The requested locale or chart does not exist."
          }
        }
      }
    },
    "/share/{locale}/publication-history.png": {
      "get": {
        "operationId": "getPublicationHistoryChart",
        "summary": "Chart 2: publication history PNG",
        "description": "Returns the current chart directly as a PNG, without authentication. Use the revisioned URL from index.json charts to refresh bot image caches. Images are generated with tracker updates, never on request.",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          },
          {
            "name": "r",
            "in": "query",
            "required": false,
            "description": "Cache revision from the API chart URL; not a historical snapshot selector.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "required": false,
            "description": "ETag returned by a previous request.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Localized chart PNG.",
            "headers": {
              "Cache-Control": {
                "schema": {
                  "type": "string"
                },
                "description": "Cached for five minutes, then revalidated."
              },
              "ETag": {
                "schema": {
                  "type": "string"
                },
                "description": "Validator for conditional requests."
              }
            },
            "content": {
              "image/png": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            }
          },
          "304": {
            "description": "The chart has not changed; reuse the cached image."
          },
          "404": {
            "description": "The requested locale or chart does not exist."
          }
        }
      }
    },
    "/api/v1/status.json": {
      "get": {
        "summary": "Current HUNTER x HUNTER tracker state",
        "responses": {
          "200": {
            "description": "Status JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Status"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getStatus",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/stats.json": {
      "get": {
        "summary": "Descriptive hiatus, publication pace, and production lead-time statistics",
        "responses": {
          "200": {
            "description": "Stats JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Stats"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getStats",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/togashi/latest.json": {
      "get": {
        "summary": "Latest Togashi post with every cached translation",
        "responses": {
          "200": {
            "description": "LatestPost JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LatestPost"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getLatestPost",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/togashi/posts.json": {
      "get": {
        "summary": "Bounded Togashi post archive with every cached translation",
        "responses": {
          "200": {
            "description": "Posts JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Posts"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getPosts",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/togashi/latest/{locale}.json": {
      "get": {
        "summary": "Latest Togashi post localized for one language",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "LocalizedLatestPost JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocalizedLatestPost"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          },
          "404": {
            "description": "Unknown resource. The static host may return a non-JSON error body."
          }
        },
        "operationId": "getLocalizedLatestPost"
      }
    },
    "/api/v1/togashi/posts/{locale}.json": {
      "get": {
        "summary": "Bounded Togashi post archive localized for one language",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          },
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "LocalizedPosts JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocalizedPosts"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          },
          "404": {
            "description": "Unknown resource. The static host may return a non-JSON error body."
          }
        },
        "operationId": "getLocalizedPosts"
      }
    },
    "/feed.xml": {
      "get": {
        "operationId": "getAtomFeed",
        "summary": "Atom 1.0 syndication feed for HUNTER x HUNTER updates (English / default)",
        "responses": {
          "200": {
            "description": "Atom 1.0 XML feed.",
            "content": {
              "application/atom+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/{locale}/feed.xml": {
      "get": {
        "operationId": "getLocalizedAtomFeed",
        "summary": "Localized Atom 1.0 syndication feed for HUNTER x HUNTER updates",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Localized Atom 1.0 XML feed.",
            "content": {
              "application/atom+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/releases.ics": {
      "get": {
        "operationId": "getReleasesCalendar",
        "summary": "iCalendar (.ics) calendar subscription of chapter release dates",
        "responses": {
          "200": {
            "description": "iCalendar VCALENDAR document.",
            "content": {
              "text/calendar": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/{locale}/status.svg": {
      "get": {
        "operationId": "getLocalizedStatusBadge",
        "summary": "Embeddable SVG status badge (shields.io style)",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/status.svg": {
      "get": {
        "operationId": "getStatusBadge",
        "summary": "Embeddable SVG status badge in English (default)",
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/latest.svg": {
      "get": {
        "operationId": "getLatestBadge",
        "summary": "Embeddable latest SVG badge in English",
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/{locale}/latest.svg": {
      "get": {
        "operationId": "getLocalizedLatestBadge",
        "summary": "Embeddable latest SVG badge in the requested language",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/progress.svg": {
      "get": {
        "operationId": "getProgressBadge",
        "summary": "Embeddable progress SVG badge in English",
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/{locale}/progress.svg": {
      "get": {
        "operationId": "getLocalizedProgressBadge",
        "summary": "Embeddable progress SVG badge in the requested language",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/next.svg": {
      "get": {
        "operationId": "getNextBadge",
        "summary": "Embeddable next SVG badge in English",
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/badge/{locale}/next.svg": {
      "get": {
        "operationId": "getLocalizedNextBadge",
        "summary": "Embeddable next SVG badge in the requested language",
        "parameters": [
          {
            "name": "locale",
            "in": "path",
            "required": true,
            "schema": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "SVG status badge.",
            "content": {
              "image/svg+xml": {
                "schema": {
                  "type": "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/chapters.json": {
      "get": {
        "summary": "getChapters",
        "responses": {
          "200": {
            "description": "Chapters JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Chapters"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getChapters",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    },
    "/api/v1/chapters/{chapter}.json": {
      "get": {
        "summary": "getChapter",
        "responses": {
          "200": {
            "description": "ChapterResponse JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChapterResponse"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          },
          "404": {
            "description": "Unknown resource. The static host may return a non-JSON error body."
          }
        },
        "operationId": "getChapter",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "chapter",
            "in": "path",
            "required": true,
            "description": "A tracked chapter number listed by chapters.json.",
            "schema": {
              "type": "integer",
              "minimum": 1
            }
          }
        ]
      }
    },
    "/api/v1/events.json": {
      "get": {
        "summary": "getEvents",
        "responses": {
          "200": {
            "description": "Events JSON document.",
            "headers": {
              "ETag": {
                "schema": {
                  "type": "string"
                }
              },
              "Cache-Control": {
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Events"
                }
              }
            }
          },
          "304": {
            "description": "Unchanged; reuse the cached response."
          }
        },
        "operationId": "getEvents",
        "parameters": [
          {
            "name": "If-None-Match",
            "in": "header",
            "schema": {
              "type": "string"
            }
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "ChapterRecord": {
        "type": "object",
        "properties": {
          "chapter": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "enum": [
              "unknown",
              "inking",
              "background",
              "delivered",
              "scheduled",
              "published"
            ]
          },
          "releaseAt": {
            "type": "string",
            "format": "date-time"
          },
          "updatedAt": {
            "type": "string",
            "format": "date"
          },
          "jumpIssue": {
            "type": "string"
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "sourceLabel": {
            "type": "string"
          },
          "sourceType": {
            "type": "string"
          },
          "sourcePostId": {
            "type": "string"
          }
        },
        "required": [
          "chapter",
          "status"
        ]
      },
      "Chapter": {
        "type": "object",
        "properties": {
          "chapter": {
            "type": "integer"
          },
          "status": {
            "type": "string",
            "enum": [
              "unknown",
              "inking",
              "background",
              "delivered",
              "scheduled",
              "published"
            ]
          },
          "releaseAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date-time"
              },
              {
                "type": "null"
              }
            ]
          },
          "updatedAt": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "null"
              }
            ]
          },
          "jumpIssue": {
            "type": "string"
          },
          "source": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "sourceLabel": {
            "type": "string"
          },
          "sourceType": {
            "type": "string"
          },
          "sourcePostId": {
            "type": "string"
          },
          "titles": {
            "type": "object",
            "properties": {
              "ar": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "en": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "es": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "fr": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "ja": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "pt": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "zh": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "ar",
              "en",
              "es",
              "fr",
              "ja",
              "pt",
              "zh"
            ]
          },
          "volume": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ]
          },
          "arc": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          },
          "arcInferred": {
            "type": "boolean"
          },
          "relatedPostIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "chapter",
          "status",
          "titles",
          "volume",
          "arc",
          "arcInferred",
          "releaseAt",
          "updatedAt",
          "source",
          "relatedPostIds"
        ]
      },
      "Event": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "kind": {
            "enum": [
              "transition",
              "observation"
            ]
          },
          "date": {
            "anyOf": [
              {
                "type": "string",
                "format": "date"
              },
              {
                "type": "string",
                "format": "date-time"
              }
            ]
          },
          "chapter": {
            "type": "integer"
          },
          "from": {
            "anyOf": [
              {
                "type": "string",
                "enum": [
                  "unknown",
                  "inking",
                  "background",
                  "delivered",
                  "scheduled",
                  "published"
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "to": {
            "type": "string",
            "enum": [
              "unknown",
              "inking",
              "background",
              "delivered",
              "scheduled",
              "published"
            ]
          },
          "source": {
            "anyOf": [
              {
                "type": "string",
                "format": "uri"
              },
              {
                "type": "null"
              }
            ]
          },
          "postId": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "id",
          "kind",
          "date",
          "chapter",
          "from",
          "to",
          "source",
          "postId"
        ]
      },
      "Post": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "author": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "screenName": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "screenName"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "mediaUrls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "tracker": {
            "type": "object",
            "properties": {
              "decision": {
                "enum": [
                  "apply",
                  "ignore",
                  "review"
                ]
              },
              "changes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "chapter": {
                      "type": "integer"
                    },
                    "from": {
                      "type": "string",
                      "enum": [
                        "unknown",
                        "inking",
                        "background",
                        "delivered",
                        "scheduled",
                        "published"
                      ]
                    },
                    "to": {
                      "type": "string",
                      "enum": [
                        "unknown",
                        "inking",
                        "background",
                        "delivered",
                        "scheduled",
                        "published"
                      ]
                    }
                  },
                  "required": [
                    "chapter",
                    "from",
                    "to"
                  ]
                }
              }
            },
            "required": [
              "decision",
              "changes"
            ]
          },
          "originalText": {
            "type": "string"
          },
          "translation": {
            "type": "object",
            "properties": {
              "status": {
                "enum": [
                  "available",
                  "unavailable"
                ]
              },
              "provider": {
                "enum": [
                  "gemini",
                  "manual",
                  null
                ]
              },
              "model": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "generatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "texts": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "ar": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string"
                      },
                      "es": {
                        "type": "string"
                      },
                      "fr": {
                        "type": "string"
                      },
                      "ja": {
                        "type": "string"
                      },
                      "pt": {
                        "type": "string"
                      },
                      "zh": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "ar",
                      "en",
                      "es",
                      "fr",
                      "ja",
                      "pt",
                      "zh"
                    ]
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "status",
              "provider",
              "model",
              "generatedAt",
              "texts"
            ]
          },
          "imageTexts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "imageIndex": {
                  "type": "integer",
                  "minimum": 1
                },
                "originalText": {
                  "type": "string"
                },
                "translations": {
                  "type": "object",
                  "properties": {
                    "ar": {
                      "type": "string"
                    },
                    "en": {
                      "type": "string"
                    },
                    "es": {
                      "type": "string"
                    },
                    "fr": {
                      "type": "string"
                    },
                    "ja": {
                      "type": "string"
                    },
                    "pt": {
                      "type": "string"
                    },
                    "zh": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "ar",
                    "en",
                    "es",
                    "fr",
                    "ja",
                    "pt",
                    "zh"
                  ]
                }
              },
              "required": [
                "imageIndex",
                "originalText",
                "translations"
              ]
            }
          }
        },
        "required": [
          "id",
          "author",
          "createdAt",
          "url",
          "mediaUrls",
          "tracker",
          "originalText",
          "translation"
        ]
      },
      "LocalizedPost": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "author": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "screenName": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "name",
              "screenName"
            ]
          },
          "createdAt": {
            "type": "string",
            "format": "date-time"
          },
          "url": {
            "type": "string",
            "format": "uri"
          },
          "mediaUrls": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uri"
            }
          },
          "tracker": {
            "type": "object",
            "properties": {
              "decision": {
                "enum": [
                  "apply",
                  "ignore",
                  "review"
                ]
              },
              "changes": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "chapter": {
                      "type": "integer"
                    },
                    "from": {
                      "type": "string",
                      "enum": [
                        "unknown",
                        "inking",
                        "background",
                        "delivered",
                        "scheduled",
                        "published"
                      ]
                    },
                    "to": {
                      "type": "string",
                      "enum": [
                        "unknown",
                        "inking",
                        "background",
                        "delivered",
                        "scheduled",
                        "published"
                      ]
                    }
                  },
                  "required": [
                    "chapter",
                    "from",
                    "to"
                  ]
                }
              }
            },
            "required": [
              "decision",
              "changes"
            ]
          },
          "text": {
            "type": "object",
            "properties": {
              "value": {
                "type": "string"
              },
              "language": {
                "type": "string",
                "enum": [
                  "ar",
                  "en",
                  "es",
                  "fr",
                  "ja",
                  "pt",
                  "zh"
                ]
              },
              "translated": {
                "type": "boolean"
              },
              "originalLanguage": {
                "const": "ja"
              },
              "originalValue": {
                "type": "string"
              }
            },
            "required": [
              "value",
              "language",
              "translated",
              "originalLanguage",
              "originalValue"
            ]
          },
          "translation": {
            "type": "object",
            "properties": {
              "status": {
                "enum": [
                  "available",
                  "unavailable"
                ]
              },
              "provider": {
                "enum": [
                  "gemini",
                  "manual",
                  null
                ]
              },
              "model": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "generatedAt": {
                "anyOf": [
                  {
                    "type": "string",
                    "format": "date-time"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "status",
              "provider",
              "model",
              "generatedAt"
            ]
          },
          "imageTexts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "imageIndex": {
                  "type": "integer",
                  "minimum": 1
                },
                "originalText": {
                  "type": "string"
                },
                "text": {
                  "type": "string"
                },
                "language": {
                  "type": "string",
                  "enum": [
                    "ar",
                    "en",
                    "es",
                    "fr",
                    "ja",
                    "pt",
                    "zh"
                  ]
                }
              },
              "required": [
                "imageIndex",
                "originalText",
                "text",
                "language"
              ]
            }
          }
        },
        "required": [
          "id",
          "author",
          "createdAt",
          "url",
          "mediaUrls",
          "tracker",
          "text",
          "translation",
          "imageTexts"
        ]
      },
      "Status": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "const": 1
          },
          "lastUpdated": {
            "type": "string",
            "format": "date"
          },
          "revision": {
            "type": "string"
          },
          "publicationStatus": {
            "enum": [
              "publishing",
              "hiatus"
            ]
          },
          "latestPublished": {
            "type": "integer"
          },
          "manuscriptsComplete": {
            "type": "integer"
          },
          "workConfirmed": {
            "type": "integer"
          },
          "nextChapter": {
            "type": "integer"
          },
          "charts": {
            "type": "object",
            "properties": {
              "production": {
                "type": "object",
                "properties": {
                  "ar": {
                    "type": "string",
                    "format": "uri"
                  },
                  "en": {
                    "type": "string",
                    "format": "uri"
                  },
                  "es": {
                    "type": "string",
                    "format": "uri"
                  },
                  "fr": {
                    "type": "string",
                    "format": "uri"
                  },
                  "ja": {
                    "type": "string",
                    "format": "uri"
                  },
                  "pt": {
                    "type": "string",
                    "format": "uri"
                  },
                  "zh": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "ar",
                  "en",
                  "es",
                  "fr",
                  "ja",
                  "pt",
                  "zh"
                ]
              },
              "publicationHistory": {
                "type": "object",
                "properties": {
                  "ar": {
                    "type": "string",
                    "format": "uri"
                  },
                  "en": {
                    "type": "string",
                    "format": "uri"
                  },
                  "es": {
                    "type": "string",
                    "format": "uri"
                  },
                  "fr": {
                    "type": "string",
                    "format": "uri"
                  },
                  "ja": {
                    "type": "string",
                    "format": "uri"
                  },
                  "pt": {
                    "type": "string",
                    "format": "uri"
                  },
                  "zh": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "ar",
                  "en",
                  "es",
                  "fr",
                  "ja",
                  "pt",
                  "zh"
                ]
              }
            },
            "required": [
              "production",
              "publicationHistory"
            ]
          },
          "chapters": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ChapterRecord"
            }
          }
        },
        "required": [
          "schemaVersion",
          "lastUpdated",
          "revision",
          "publicationStatus",
          "latestPublished",
          "manuscriptsComplete",
          "workConfirmed",
          "nextChapter",
          "charts",
          "chapters"
        ]
      },
      "Stats": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "stats": {
            "type": "object",
            "properties": {
              "currentHiatus": {
                "type": "object",
                "properties": {
                  "elapsedIssues": {
                    "type": "integer"
                  },
                  "elapsedDays": {
                    "type": "integer"
                  },
                  "sinceDate": {
                    "type": "string",
                    "format": "date"
                  },
                  "sinceChapter": {
                    "type": "integer"
                  },
                  "sinceJumpIssue": {
                    "type": "string"
                  },
                  "isJustStarted": {
                    "type": "boolean"
                  }
                },
                "required": [
                  "elapsedIssues",
                  "elapsedDays",
                  "sinceDate",
                  "sinceChapter",
                  "sinceJumpIssue",
                  "isJustStarted"
                ]
              },
              "historicalHiatuses": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "integer"
                  },
                  "medianIssuesAll": {
                    "type": "number"
                  },
                  "majorThreshold": {
                    "type": "integer"
                  },
                  "majorCount": {
                    "type": "integer"
                  },
                  "medianIssuesMajor": {
                    "type": "number"
                  },
                  "medianDaysMajorApprox": {
                    "type": "number"
                  },
                  "maxIssues": {
                    "type": "integer"
                  },
                  "major": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "startYear": {
                          "type": "integer"
                        },
                        "startIssue": {
                          "type": "integer"
                        },
                        "endYear": {
                          "type": "integer"
                        },
                        "endIssue": {
                          "type": "integer"
                        },
                        "issues": {
                          "type": "integer"
                        },
                        "approxYears": {
                          "type": "number"
                        },
                        "precededByChapter": {
                          "type": "integer"
                        },
                        "precededByDate": {
                          "type": "string",
                          "format": "date"
                        },
                        "precededByArc": {
                          "type": "string"
                        },
                        "resumedWithChapter": {
                          "type": "integer"
                        },
                        "resumedOnDate": {
                          "type": "string",
                          "format": "date"
                        },
                        "resumedWithArc": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "startYear",
                        "startIssue",
                        "endYear",
                        "endIssue",
                        "issues",
                        "approxYears"
                      ]
                    }
                  },
                  "maxHiatus": {
                    "type": "object",
                    "properties": {
                      "startYear": {
                        "type": "integer"
                      },
                      "startIssue": {
                        "type": "integer"
                      },
                      "endYear": {
                        "type": "integer"
                      },
                      "endIssue": {
                        "type": "integer"
                      },
                      "issues": {
                        "type": "integer"
                      },
                      "approxYears": {
                        "type": "number"
                      }
                    },
                    "required": [
                      "startYear",
                      "startIssue",
                      "endYear",
                      "endIssue",
                      "issues",
                      "approxYears"
                    ]
                  }
                },
                "required": [
                  "totalCount",
                  "medianIssuesAll",
                  "majorThreshold",
                  "majorCount",
                  "medianIssuesMajor",
                  "medianDaysMajorApprox",
                  "maxIssues",
                  "major",
                  "maxHiatus"
                ]
              },
              "publicationRuns": {
                "type": "object",
                "properties": {
                  "totalRunsCount": {
                    "type": "integer"
                  },
                  "medianRunLength": {
                    "type": "number"
                  },
                  "recentBatchSize": {
                    "type": "integer"
                  },
                  "recentRunsCount": {
                    "type": "integer"
                  },
                  "recent": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "startYear": {
                          "type": "integer"
                        },
                        "startIssue": {
                          "type": "integer"
                        },
                        "endYear": {
                          "type": "integer"
                        },
                        "endIssue": {
                          "type": "integer"
                        },
                        "startChapter": {
                          "type": [
                            "integer",
                            "string"
                          ]
                        },
                        "endChapter": {
                          "type": [
                            "integer",
                            "string"
                          ]
                        },
                        "length": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "startYear",
                        "startIssue",
                        "endYear",
                        "endIssue",
                        "length"
                      ]
                    }
                  },
                  "longestRun": {
                    "type": "object",
                    "properties": {
                      "startYear": {
                        "type": "integer"
                      },
                      "startIssue": {
                        "type": "integer"
                      },
                      "endYear": {
                        "type": "integer"
                      },
                      "endIssue": {
                        "type": "integer"
                      },
                      "startChapter": {
                        "type": [
                          "integer",
                          "string"
                        ]
                      },
                      "endChapter": {
                        "type": [
                          "integer",
                          "string"
                        ]
                      },
                      "length": {
                        "type": "integer"
                      }
                    },
                    "required": [
                      "startYear",
                      "startIssue",
                      "endYear",
                      "endIssue",
                      "length"
                    ]
                  }
                },
                "required": [
                  "totalRunsCount",
                  "medianRunLength",
                  "recentBatchSize",
                  "recentRunsCount",
                  "recent",
                  "longestRun"
                ]
              },
              "publicationRate": {
                "type": "object",
                "properties": {
                  "totalJumpIssues": {
                    "type": "integer"
                  },
                  "totalChaptersPublished": {
                    "type": "integer"
                  },
                  "publishedPercentage": {
                    "type": "number"
                  }
                },
                "required": [
                  "totalJumpIssues",
                  "totalChaptersPublished",
                  "publishedPercentage"
                ]
              }
            },
            "required": [
              "currentHiatus",
              "historicalHiatuses",
              "publicationRuns",
              "publicationRate"
            ]
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "stats"
        ]
      },
      "Index": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "documentation": {
            "type": "string",
            "format": "uri"
          },
          "endpoints": {
            "type": "object",
            "additionalProperties": {
              "type": "string",
              "description": "Absolute URL or URI template with a locale or chapter placeholder."
            }
          },
          "locales": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "ar",
                "en",
                "es",
                "fr",
                "ja",
                "pt",
                "zh"
              ]
            }
          },
          "charts": {
            "type": "object",
            "properties": {
              "production": {
                "type": "object",
                "properties": {
                  "ar": {
                    "type": "string",
                    "format": "uri"
                  },
                  "en": {
                    "type": "string",
                    "format": "uri"
                  },
                  "es": {
                    "type": "string",
                    "format": "uri"
                  },
                  "fr": {
                    "type": "string",
                    "format": "uri"
                  },
                  "ja": {
                    "type": "string",
                    "format": "uri"
                  },
                  "pt": {
                    "type": "string",
                    "format": "uri"
                  },
                  "zh": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "ar",
                  "en",
                  "es",
                  "fr",
                  "ja",
                  "pt",
                  "zh"
                ]
              },
              "publicationHistory": {
                "type": "object",
                "properties": {
                  "ar": {
                    "type": "string",
                    "format": "uri"
                  },
                  "en": {
                    "type": "string",
                    "format": "uri"
                  },
                  "es": {
                    "type": "string",
                    "format": "uri"
                  },
                  "fr": {
                    "type": "string",
                    "format": "uri"
                  },
                  "ja": {
                    "type": "string",
                    "format": "uri"
                  },
                  "pt": {
                    "type": "string",
                    "format": "uri"
                  },
                  "zh": {
                    "type": "string",
                    "format": "uri"
                  }
                },
                "required": [
                  "ar",
                  "en",
                  "es",
                  "fr",
                  "ja",
                  "pt",
                  "zh"
                ]
              }
            },
            "required": [
              "production",
              "publicationHistory"
            ]
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "documentation",
          "endpoints",
          "locales",
          "charts"
        ]
      },
      "ChapterResponse": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "revision": {
            "type": "string"
          },
          "chapter": {
            "$ref": "#/components/schemas/Chapter"
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "revision",
          "chapter"
        ]
      },
      "Chapters": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "revision": {
            "type": "string"
          },
          "count": {
            "type": "integer"
          },
          "chapters": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "chapter": {
                  "type": "integer"
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "unknown",
                    "inking",
                    "background",
                    "delivered",
                    "scheduled",
                    "published"
                  ]
                },
                "url": {
                  "type": "string",
                  "format": "uri"
                }
              },
              "required": [
                "chapter",
                "status",
                "url"
              ]
            }
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "revision",
          "count",
          "chapters"
        ]
      },
      "Events": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "revision": {
            "type": "string"
          },
          "coverage": {
            "const": "retained-posts-and-current-tracker"
          },
          "complete": {
            "const": false
          },
          "count": {
            "type": "integer"
          },
          "events": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Event"
            }
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "revision",
          "coverage",
          "complete",
          "count",
          "events"
        ]
      },
      "LatestPost": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "post": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/Post"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "post"
        ]
      },
      "Posts": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "count": {
            "type": "integer"
          },
          "posts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Post"
            }
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "count",
          "posts"
        ]
      },
      "LocalizedLatestPost": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "locale": {
            "type": "string",
            "enum": [
              "ar",
              "en",
              "es",
              "fr",
              "ja",
              "pt",
              "zh"
            ]
          },
          "post": {
            "anyOf": [
              {
                "$ref": "#/components/schemas/LocalizedPost"
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "locale",
          "post"
        ]
      },
      "LocalizedPosts": {
        "type": "object",
        "properties": {
          "schemaVersion": {
            "type": "integer",
            "const": 1
          },
          "self": {
            "type": "string",
            "format": "uri"
          },
          "pollAfterSeconds": {
            "type": "integer",
            "minimum": 1
          },
          "locale": {
            "type": "string",
            "enum": [
              "ar",
              "en",
              "es",
              "fr",
              "ja",
              "pt",
              "zh"
            ]
          },
          "count": {
            "type": "integer"
          },
          "posts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/LocalizedPost"
            }
          }
        },
        "required": [
          "schemaVersion",
          "self",
          "pollAfterSeconds",
          "locale",
          "count",
          "posts"
        ]
      }
    }
  }
}
