{
  "openapi": "3.1.0",
  "info": {
    "title": "사주 API · 만세력 API",
    "version": "0.4.0+ruleset.0.2.2",
    "summary": "생년월일로 사주팔자·만세력·대운·오행·신살·격국·용신을 계산하는 한국어 REST API",
    "description": "생년월일·출생시간·성별을 보내면 14개 분석 모듈을 JSON 으로 돌려줍니다.\n목적별 질문 엔드포인트 12종이 그 목적에 필요한 모듈만 해석 순서대로 담아 줍니다.\n\n모든 응답에 `data.guide`(활용 지침)와 `data.glossary`(그 응답에 나온 용어의 뜻)가 실립니다.\n응답 전체를 LLM 에 넘기기만 해도 활용법이 전달됩니다.\n\n판정 규칙 버전: 0.2.2. 규칙이 바뀌면 같은 입력의 결과가 바뀔 수 있어 응답의 `ruleset` 에 싣습니다."
  },
  "servers": [
    {
      "url": "https://api.supasaju.com",
      "description": "production"
    }
  ],
  "security": [
    {
      "apiKeyHeader": []
    },
    {
      "bearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "readings",
      "description": "리딩 — 질문 단위 엔드포인트. 토픽이 목적에 맞는 모듈 세트를 정합니다."
    },
    {
      "name": "catalog",
      "description": "토픽·모듈·샘플·도시 카탈로그"
    },
    {
      "name": "account",
      "description": "키 상태"
    }
  ],
  "paths": {
    "/v2/saju/manse": {
      "post": {
        "summary": "만세력 — 이 사람의 사주 명식은 어떻게 생겼나?",
        "description": "포함 모듈: fourPillars · elements · sinStrength · sinsal · decadeFortune\n\n핵심 모듈: fourPillars — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingManse",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/today": {
      "post": {
        "summary": "오늘의 운세 — 오늘 하루, 이 사주에 무엇이 작용하나?",
        "description": "포함 모듈: fourPillars · dailyInteraction · sinsal · weolun · seun\n\n핵심 모듈: dailyInteraction — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingToday",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "description": "기준일 YYYY-MM-DD. 생략하면 오늘."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/daily": {
      "post": {
        "summary": "일일 운세 — 그날 일진이 이 사주의 일간에 어떻게 작용하나?",
        "description": "포함 모듈: fourPillars · dailyInteraction · sinsal · weolun · seun · decadeFortune\n\n핵심 모듈: dailyInteraction — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingDaily",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "description": "기준일 YYYY-MM-DD. 생략하면 오늘."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/monthly": {
      "post": {
        "summary": "월 운세 — 이번 달(또는 지정한 달)의 흐름은?",
        "description": "포함 모듈: fourPillars · weolun · seun · sinStrength · yongsin · sinsal\n\n핵심 모듈: weolun — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingMonthly",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "month": {
                    "type": "string",
                    "description": "기준 달 YYYY-MM. 생략하면 이번 달."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/yearly": {
      "post": {
        "summary": "연간 운세 — 그 해 1년의 흐름은?",
        "description": "포함 모듈: fourPillars · seun · weolun · decadeFortune · gyeokguk · yongsin · sinsal · evaluation\n\n핵심 모듈: seun — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingYearly",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "year": {
                    "type": "integer",
                    "description": "기준 연도. 생략하면 올해."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/decade": {
      "post": {
        "summary": "대운 10년 — 지금 대운은 어디쯤이고, 다음 10년은?",
        "description": "포함 모듈: fourPillars · decadeFortune · seun · sinStrength · yongsin · sinsal\n\n핵심 모듈: decadeFortune — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingDecade",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/life": {
      "post": {
        "summary": "평생 흐름 — 이 사주의 골격과 평생의 큰 흐름은?",
        "description": "포함 모듈: fourPillars · wongukInteraction · gyeokguk · yongsin · decadeFortune · sinsal · evaluation\n\n핵심 모듈: gyeokguk — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingLife",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/consult": {
      "post": {
        "summary": "고민 상담 — 이 고민, 사주 데이터는 어느 방향을 가리키나?",
        "description": "포함 모듈: fourPillars · elements · sinStrength · wongukInteraction · gyeokguk · yongsin · decadeFortune · seun · sinsal · evaluation\n\n핵심 모듈: yongsin — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingConsult",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/compatibility": {
      "post": {
        "summary": "관계 궁합 — 이 두(세) 사람 사이에 무엇이 걸려 있나?",
        "description": "포함 모듈: fourPillars · wongukInteraction · elements · gyeokguk · yongsin · decadeFortune · sinsal · evaluation\n\n핵심 모듈: fourPillars — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingCompatibility",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "partners": {
                    "type": "array",
                    "maxItems": 3,
                    "description": "상대 1~3명. 이 토픽은 두 사람 사이를 보므로 필수입니다. 인원수와 무관하게 호출 1건입니다.",
                    "items": {
                      "$ref": "#/components/schemas/Partner"
                    }
                  }
                },
                "required": [
                  "partners"
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/love": {
      "post": {
        "summary": "연애 운 — 내 연애, 지금 어느 흐름에 있나? (상대가 있으면 그 관계까지)",
        "description": "포함 모듈: fourPillars · wongukInteraction · weolun · seun · elements · gyeokguk · yongsin · decadeFortune · sinsal · evaluation\n\n핵심 모듈: sinsal — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingLove",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "partners": {
                    "type": "array",
                    "maxItems": 3,
                    "description": "상대 0~3명. 생략하면 본인 흐름만 봅니다.",
                    "items": {
                      "$ref": "#/components/schemas/Partner"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/money": {
      "post": {
        "summary": "금전운 — 재물은 언제, 어떤 구조로 들어오나?",
        "description": "포함 모듈: fourPillars · wealth · sinStrength · yongsin · seun · decadeFortune · sinsal\n\n핵심 모듈: wealth — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingMoney",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ],
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "description": "기준일 YYYY-MM-DD. 생략하면 오늘."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/health": {
      "post": {
        "summary": "건강운 — 어느 기운·장부 계통을 유의해서 보나?",
        "description": "포함 모듈: fourPillars · elements · healthBalance · sinStrength · yongsin · seun · sinsal\n\n핵심 모듈: healthBalance — 이 모듈이 계산되지 않으면 400 SAMPLE_PROFILE_REQUIRED 로 안내합니다.",
        "operationId": "readingHealth",
        "tags": [
          "readings"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/BirthInput"
                  },
                  {
                    "$ref": "#/components/schemas/ReadingOptions"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공",
            "headers": {
              "X-RateLimit-Limit": {
                "description": "분당 한도",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Remaining": {
                "description": "이번 분에 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-RateLimit-Reset": {
                "description": "분당 창이 초기화되는 Unix 초",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Quota": {
                "description": "월 포함 건수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Used": {
                "description": "이번 주기 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Remaining": {
                "description": "이번 주기 잔여",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Monthly-Reset": {
                "description": "주기 초기화 시각 (ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Daily-Limit": {
                "description": "하루 소진 상한 (끈 키에는 오지 않음)",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Used": {
                "description": "오늘 사용량",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Remaining": {
                "description": "오늘 남은 횟수",
                "schema": {
                  "type": "integer"
                }
              },
              "X-Daily-Reset": {
                "description": "일일 상한이 풀리는 시각 (UTC 자정, ISO 8601)",
                "schema": {
                  "type": "string"
                }
              },
              "X-Input-Coerced": {
                "description": "기본값이 적용되거나 형이 변환된 필드 목록",
                "schema": {
                  "type": "string"
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ReadingResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/topics": {
      "get": {
        "summary": "리딩 토픽 카탈로그 — 지금 열려 있는 토픽을 코드가 읽는 형태로",
        "tags": [
          "catalog"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/modules": {
      "get": {
        "summary": "분석 모듈 카탈로그 — 모듈마다 담기는 토픽 목록 포함",
        "tags": [
          "catalog"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/saju/samples": {
      "get": {
        "summary": "Free 키로 전체 모듈을 시험할 수 있는 샘플 입력 목록",
        "tags": [
          "catalog"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/cities": {
      "get": {
        "summary": "출생 도시 목록 — 입력 폼 드롭다운용",
        "tags": [
          "catalog"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/timezones": {
      "get": {
        "summary": "받을 수 있는 IANA 시간대 이름 — birthTimezone 에 쓰는 값",
        "tags": [
          "catalog"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/me": {
      "get": {
        "summary": "현재 키의 tier·한도·사용량·주기",
        "tags": [
          "account"
        ],
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    },
    "/v2/calendar/convert": {
      "post": {
        "summary": "음양력 변환",
        "description": "음양력 변환은 year / month / day 를 씁니다 — 토픽 요청의 birthYear 와 다릅니다.",
        "tags": [
          "catalog"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": [
                  "year",
                  "month",
                  "day",
                  "direction"
                ],
                "properties": {
                  "year": {
                    "type": "integer"
                  },
                  "month": {
                    "type": "integer"
                  },
                  "day": {
                    "type": "integer"
                  },
                  "direction": {
                    "type": "string",
                    "enum": [
                      "toSolar",
                      "toLunar"
                    ]
                  },
                  "isLeapMonth": {
                    "type": "boolean",
                    "description": "direction 이 toSolar 일 때만 씁니다."
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "성공"
          },
          "400": {
            "$ref": "#/components/responses/E400"
          },
          "401": {
            "$ref": "#/components/responses/E401"
          },
          "402": {
            "$ref": "#/components/responses/E402"
          },
          "403": {
            "$ref": "#/components/responses/E403"
          },
          "404": {
            "$ref": "#/components/responses/E404"
          },
          "429": {
            "$ref": "#/components/responses/E429"
          },
          "500": {
            "$ref": "#/components/responses/E500"
          },
          "503": {
            "$ref": "#/components/responses/E503"
          }
        }
      }
    }
  },
  "components": {
    "responses": {
      "E400": {
        "description": "BATCH_TOO_MANY_ITEMS: 배치 항목 수가 플랜 상한을 넘을 때. 요청 전체가 거절되며 error.details.maxItems 에 그 키의 상한이 담긴다.\n\nINVALID_DATE: 평년 2월 30일처럼 존재하지 않는 날짜. 없는 윤달은 LEAP_MONTH_NOT_FOUND 로 따로 안내한다.\n\nINVALID_JSON: 바디가 JSON 으로 파싱되지 않을 때.\n\nINVALID_LOCATION: 경도만·시간대만 왔거나 셋 다 없을 때. **경도로 시간대를 추측하지 않는다** — 국경과 역사적 전환에서 틀린다. 섞어 보낸 입력의 `birthCity` 를 못 찾은 경우도 여기다(빠진 값을 서울로 채우지 않는다).\n\nLEAP_MONTH_NOT_FOUND: 윤달이 없는 해·달에 isLeapMonth 를 켰을 때.\n\nOUT_OF_SUPPORTED_ERA: 역법 데이터가 덮지 않는 연도.\n\nSAMPLE_PROFILE_REQUIRED: Free 키로 핵심 모듈이 유료인 토픽을 샘플 외 생년월일로 부를 때. **코드 오류가 아니라 Free 플랜의 정상 동작이다.** error.details 에 부족한 모듈·샘플 목록 주소·가장 가까운 샘플이, error.hint.freeTopics 에 임의의 생년월일로 쓸 수 있는 토픽이 담긴다.\n\nUNSUPPORTED_CITY: `birthCity` 를 도시 목록에서 찾지 못했을 때. 전에는 서울로 대신 계산하고 경고만 냈는데, 그러면 **다른 사람의 사주가 성공 응답으로 나간다** — 부르는 쪽이 `timezone.cityResolved` 를 검사한다는 것을 알아야만 안전했다. 이제 거절한다.\n\nUNSUPPORTED_TIMEZONE: `birthTimezone` 이 번들된 IANA 존 목록에 없을 때. **런타임마다 아는 존이 다르다** — Node 의 Intl 은 417개, 우리는 418개를 안다. 부르는 쪽이 자기 런타임으로 검증해 통과시킨 이름이 우리에게 없을 수 있으므로, 목록의 권위는 이 API 가 갖는다(소비자 서비스 요청). 대소문자를 구분한다.\n\nVALIDATION_ERROR: 필수 필드 누락·타입 오류·범위 초과. error.details.issues 에 어긋난 필드와 사유가 담긴다. JavaScript Date.getMonth() 의 0~11 을 birthMonth 로 그대로 보내면 여기서 걸린다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E401": {
        "description": "INVALID_API_KEY: 등록되지 않은 키. 발급 후 복사 과정에서 잘리거나 공백이 섞인 경우가 가장 흔하다. 없는 키로 반복 호출하면 IP 단위 제한이 걸린다.\n\nKEY_EXPIRED: 만료일이 지난 키. Free 키는 발급 후 90일이다.\n\nKEY_REVOKED: 대시보드에서 폐기한 키. 폐기는 다음 요청부터 즉시 반영된다.\n\nMISSING_API_KEY: 두 인증 헤더가 모두 없을 때. 헤더 이름의 대소문자는 무관하지만 철자는 정확해야 한다.\n\nSUBSCRIPTION_REQUIRED: 유료 키인데 유효한 이용권이 없을 때. 기간권은 자동 갱신되지 않으므로 기간이 끝나면 여기로 온다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E402": {
        "description": "QUOTA_EXHAUSTED: 월 포함 건수를 다 썼을 때.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E403": {
        "description": "ORIGIN_NOT_ALLOWED: 유료 키에 허용 도메인이 등록돼 있는데 요청 Origin 이 그 목록에 없을 때. Origin 헤더가 없는 서버 사이드 호출은 항상 통과한다.\n\nPRO_ONLY: 허용 도메인 등록·배치처럼 유료 전용 기능을 Free 키로 쓸 때. 서버 사이드 호출은 도메인 등록 없이 통과한다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E404": {
        "description": "NOT_FOUND: 카탈로그에 없는 경로이거나 HTTP 메서드가 다를 때. 리딩은 전부 POST 이고 카탈로그 조회는 GET 이다.\n\nTOPIC_NOT_AVAILABLE: 카탈로그에는 있으나 아직 열리지 않은 토픽. error.hint.availableTopics 에 지금 쓸 수 있는 토픽이 담긴다.\n\nWRONG_ENDPOINT: 흔한 오타를 감지했을 때. error.hint.correctedPath 에 올바른 경로가 담기므로 그대로 바꿔 부르면 된다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E429": {
        "description": "DAILY_BURN_LIMIT: 하루에 월 포함량의 일정 비율을 넘겨 쓸 때. 재시도 루프 버그로 월 한도가 한꺼번에 소진되는 것을 막는 장치다.\n\nRATE_LIMIT_EXCEEDED: 분당 한도 초과. 잔여량은 매 응답의 X-RateLimit-Remaining 에 담기므로 미리 알 수 있다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E500": {
        "description": "INTERNAL_ERROR: 처리되지 않은 예외. 내부 사정(스택·경로)은 응답에 담지 않는다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      },
      "E503": {
        "description": "AUTH_UNAVAILABLE: 키를 확인할 수 없을 때. **인증은 통과시키지 않는다** — 확인 못 한 키를 받아들이면 저장소 장애가 곧 인증 우회가 된다.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorResponse"
            }
          }
        }
      }
    },
    "securitySchemes": {
      "apiKeyHeader": {
        "type": "apiKey",
        "in": "header",
        "name": "x-api-key"
      },
      "bearerAuth": {
        "type": "http",
        "scheme": "bearer"
      }
    },
    "schemas": {
      "ReadingResponse": {
        "type": "object",
        "required": [
          "success",
          "data",
          "meta"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "const": true
          },
          "data": {
            "type": "object",
            "properties": {
              "topic": {
                "type": "string",
                "examples": [
                  "manse"
                ]
              },
              "guide": {
                "type": "object",
                "properties": {
                  "purpose": {
                    "type": "string"
                  },
                  "howToUse": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "examples": [
                        "명식 자체를 설명하는 토픽입니다 — 시기 예측으로 넘어가지 마세요."
                      ]
                    }
                  }
                },
                "required": [
                  "howToUse",
                  "purpose"
                ]
              },
              "glossary": {
                "type": "object",
                "properties": {
                  "천을귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 어려운 자리에서 도움이 닿는 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heavenly Nobleman"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "태극귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 시작과 마무리가 이어지는 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Taiji Nobleman"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "문창귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 글·배움과 표현에 힘이 실리는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Academic Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "복성귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 넉넉함이 따르는 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Fortune Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천주귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 먹고사는 일이 이어지는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heavenly Kitchen"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천덕귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지를 기준으로 잡는 길신. 어려움이 덜어지는 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heavenly Virtue"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천라지망": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지지가 그물처럼 얽히는 자리. 일이 더디게 풀린다고 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heaven-Earth Net"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "귀문관": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "두 지지의 짝. 예민함과 몰입을 함께 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Ghost Gate"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정관격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 정관을 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Officer Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "일간": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Day Master"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "연주": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 해의 간지. 뿌리와 조상, 이른 시기의 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Year Pillar"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월주": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 달의 간지. 절기로 나뉘며 사회적 환경과 성장기의 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Month Pillar"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "일주": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 날의 간지. 본인과 배우자 자리를 함께 담는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Day Pillar"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "시주": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 시각의 간지. 말년과 자녀, 결과의 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hour Pillar"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "오행": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Five Phases"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Five Elements"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "비견": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "나와 어깨를 나란히 하는 기운. 자립과 경쟁을 함께 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Friend"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "겁재": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "나와 같되 결이 다른 기운. 협력도 다툼도 될 수 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Rob Wealth"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "식신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "내가 밖으로 내보내는 기운. 표현과 먹고사는 일, 여유를 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Eating God"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "상관": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "내보내는 기운 중 날이 선 쪽. 재능과 반발이 함께 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hurting Officer"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편재": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "넓게 흐르는 재물의 기운. 활동 범위와 기회를 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Indirect Wealth"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정재": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "꾸준히 쌓이는 재물의 기운. 성실함과 관리를 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Wealth"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편관": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "나를 강하게 누르는 기운. 압박과 돌파를 함께 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Seven Killings"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정관": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "나를 규율하는 기운. 직위·질서·책임을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Officer"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "치우친 방향으로 나를 돕는 기운. 직관과 비주류 재능을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Indirect Resource"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "바르게 나를 돕는 기운. 배움과 보호를 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Resource"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "비겁": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "비견과 겁재를 묶어 부르는 말. 나와 같은 기운의 무리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Companion Group"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "식상": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "식신과 상관을 묶어 부르는 말. 내보내는 기운의 무리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Output Group"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "재성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "편재와 정재를 묶어 부르는 말. 내가 다루는 대상의 무리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Wealth Group"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "관성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "편관과 정관을 묶어 부르는 말. 나를 규율하는 기운의 무리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Officer Group"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "인성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "편인과 정인을 묶어 부르는 말. 나를 돕는 기운의 무리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Resource Group"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "대운": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "10년 단위로 바뀌는 큰 흐름. 절기까지의 거리로 시작 나이가 정해진다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Ten-year cycle"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Luck Pillar"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "세운": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "한 해의 간지가 원국에 작용하는 흐름."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Annual cycle"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Annual Luck"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "일진": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "하루의 간지. 60일 주기로 순환한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Daily Stem-Branch pair"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "순행": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "대운이 월주 다음 간지부터 순서대로 나아가는 방향."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Forward Sequence"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "장생": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 갓 태어나 자라기 시작하는 기세."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Growth"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "제왕": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 기세가 가장 찬 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Emperor"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "신강": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 돕는 기운이 많아 기세가 강한 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Strong Day Master"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "중화": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간의 기세가 강하지도 약하지도 않은 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Balanced"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "용신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "사주의 균형을 잡는 데 쓰는 오행."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yongsin"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Useful God"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "억부": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "강하면 덜고 약하면 보태는 방식으로 용신을 정하는 관점."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Balancing Method"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "조후": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "사주의 춥고 더움을 고르게 하는 관점에서 용신을 정하는 방식."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Climatic Method"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "육합": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지지 두 글자가 짝을 이뤄 묶이는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Six Combination"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "목욕": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 갓 태어나 씻기는 때로, 다듬어지기 전의 기세."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Bath"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "관대": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 옷을 갖춰 입고 나서는 때의 기세."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Cap and Gown"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "겁살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 바깥에서 밀고 들어오는 힘이 강한 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Robbery Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "재살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 매이거나 갇히는 형국을 가리킨다. 수옥살이라고도 한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Calamity Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 스스로 어찌하기 어려운 바깥 사정을 가리킨다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heaven Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "지살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 스스로 계획해 자리를 옮기는 움직임을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Earth Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "육해": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 흐름이 막히거나 늦춰지는 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Six Harms Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "화개": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Canopy Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "금여": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 편안한 자리와 도움을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Golden Carriage"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "암록": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 드러나지 않는 곳에서 이어지는 도움."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hidden Prosperity"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "건록": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Prosperity"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "양인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yang Blade"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "백호": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 간지에 붙는 이름. 급하게 벌어지는 일과 이어 읽는 전통이 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "White Tiger"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "원진": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "두 지지가 서로 껄끄럽게 어긋나는 짝."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Resentment"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "고신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "홀로 서는 자리를 가리키는 이름. 남자 사주에서 주로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Lonely Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "홍염": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "사람을 끌어당기는 힘을 가리키는 이름. 좋고 나쁨을 가리지 않는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Red Beauty"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "상문": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "해마다 자리를 옮기는 이름. 상을 당하는 일과 이어 읽는 전통이 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Mourning Gate"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "여기": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지장간 가운데 앞 절기에서 넘어온 기운."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Residual Qi"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "중기": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지장간 가운데 사이에 낀 기운."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Middle Qi"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정기": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지장간 가운데 그 지지를 대표하는 기운."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Main Qi"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "암장": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지지 속에 감춰져 겉으로 드러나지 않은 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Concealed"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "균형": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "오행이 고르게 퍼져 있는 정도. 우리가 매기는 종합평가 지표의 하나."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Balance"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "순환": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Circulation"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "목": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "뻗어 나가는 기운. 시작·성장·계획을 상징한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Wood"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "화": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "퍼지는 기운. 표현·열정·드러남을 상징한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Fire"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "토": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "머무는 기운. 중심·신뢰·매개를 상징한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Earth"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "금": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "거두는 기운. 결단·정리·규율을 상징한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Metal"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "수": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "흐르는 기운. 사고·유연함·저장을 상징한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Water"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "묘": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 갈무리해 안으로 거두는 기세."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Tomb"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "절": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 이어지던 흐름이 끊겨 비는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Extinction"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "충": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "두 글자가 정면으로 부딪히는 관계. 변화와 움직임의 신호로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Clash"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "파": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "두 글자가 서로의 짜임을 흩뜨리는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Destruction"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "해": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "두 글자가 서로를 거스르는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Harm"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "쇠": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 정점을 지나 기세가 누그러지는 때."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Decline"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "병": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 힘이 빠져 속도를 늦추는 때."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Sickness"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "사": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 움직임이 멎고 안으로 도는 때."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Death"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "태": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 아직 형태를 갖추기 전 잉태된 기운."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Conception"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "양": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이운성의 한 단계. 길러지며 때를 기다리는 기운."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Nurture"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "진태양시": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "출생지의 경도와 균시차까지 반영한 실제 태양 기준 시각."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "True Solar Time"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "지장간": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지지 속에 감춰진 천간. 겉으로 드러나지 않은 기운을 읽는 자리다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hidden Stems"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "사주": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 연·월·일·시를 각각 간지 두 글자로 적은 여덟 글자."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Four Pillars"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "원국": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어날 때 정해진 사주 여덟 글자 자체. 운의 변화와 구분해 부르는 말."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Natal Chart"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천간": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heavenly Stems"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "지지": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Earthly Branches"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "간지": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "천간 한 글자와 지지 한 글자를 짝지은 표기. 60가지가 순환한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Stem-Branch Pair"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "일지": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 날의 아랫글자. 배우자와 가장 가까운 관계의 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Day Branch"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "음양": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yin and Yang"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "상생": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "한 오행이 다른 오행을 낳아 힘을 보태는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Generating relationship"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Generating Cycle"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "십성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 나머지 글자와의 관계를 열 가지로 나눈 이름."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Ten Gods"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월운": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "한 달의 간지가 원국에 작용하는 흐름. 절기로 나뉜다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Monthly cycle"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Monthly Luck"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "역행": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "대운이 월주 이전 간지로 거슬러 가는 방향."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Reverse Sequence"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "입춘": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "스물넷 절기의 처음. 사주에서 해가 바뀌는 기준점이다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Start of Spring"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "득령": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 달의 기운이 일간을 돕는 것."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Seasonal Support"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "득지": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "태어난 날의 아랫글자가 일간을 돕는 것."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Day-Branch Support"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "득세": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "나머지 자리에서 일간을 돕는 기운을 얻은 것."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Peer Support"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "격국": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "사주의 짜임을 대표하는 틀. 주로 월지에서 잡는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Chart pattern"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Chart Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "희신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "용신을 돕는 오행."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Huisin"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Helper God"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "기신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "용신을 방해하는 오행."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Gisin"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Unfavorable God"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "삼합": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "지지 세 글자가 모여 하나의 오행을 이루는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Three-branch combination"
                        ]
                      },
                      "enAlias": {
                        "type": "string",
                        "examples": [
                          "Triple Combination"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en",
                      "enAlias"
                    ]
                  },
                  "신살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Symbolic Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "공망": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Void"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "뿌리": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "천간이 지지 속에서 같은 오행의 힘을 얻은 것. 통근과 같은 말."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Root"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월살": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 기운이 마르고 더디어지는 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Moon Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "망신": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Exposure Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "장성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 앞에 나서서 이끄는 힘을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "General Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "반안": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "십이신살의 하나. 자리를 얻어 올라타는 형국을 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Saddle Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "역마": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string"
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Travelling Horse"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월덕귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지를 기준으로 잡는 길신. 둘레의 도움이 닿는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Monthly Virtue"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월덕합": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월덕귀인과 짝을 이루는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Monthly Virtue Combination"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "천의성": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지를 기준으로 잡는 길신. 돌보고 고치는 일과 이어지는 자리로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Heavenly Doctor"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정인격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 정인을 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Resource Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "급각": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 자리에 붙는 이름. 뼈·다리 계통과 이어 읽는 전통이 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Broken Foot"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "현침": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "바늘처럼 뾰족한 글자들이 모인 자리. 날카로움과 정밀함을 함께 뜻한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hanging Needle"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "형": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "글자끼리 서로를 다듬거나 긁는 관계."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Punishment"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "학당귀인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 기준으로 잡는 길신. 배움이 자리 잡는 곳으로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Study Hall Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "십악대패": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 일주에 붙는 이름. 기반이 흔들리기 쉽다고 보는 전통이 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Ten Great Defeats"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "식신격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 식신을 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Eating God Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "신약": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 돕는 기운이 적어 기세가 약한 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Weak Day Master"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "고란": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 일주에 붙는 이름. 홀로 지내는 시간이 길다고 보는 전통이 있다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Solitary Orchid"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "상관격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 상관을 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Hurting Officer Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "통근": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "천간이 지지 속에서 같은 오행의 뿌리를 얻은 것."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Rooted"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "비인": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "양인과 마주 보는 자리."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yin Blade"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "정재격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 정재를 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Direct Wealth Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "과숙": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "홀로 서는 자리를 가리키는 이름. 여자 사주에서 주로 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Widow Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "건록격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지가 일간의 건록에 해당해 잡는 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Prosperity Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "탕화": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 자리에 붙는 이름. 열·불과 관련한 사고를 조심하는 자리로 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Scalding"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편인격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 편인을 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Indirect Resource Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "극강": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 돕는 기운이 지나치게 몰린 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Extremely Strong"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "극약": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "일간을 돕는 기운이 거의 없는 상태."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Extremely Weak"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "음양차착": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 일주·시주에 붙는 이름. 어긋남이 겹친다고 읽는다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yin-Yang Discrepancy"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "월겁격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지가 일간과 같은 무리여서 잡는 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Monthly Rob Wealth Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편관격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 편관을 격으로 잡은 짜임. 칠살격이라고도 한다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Seven Killings Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "괴강": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "특정 일주에 붙는 이름. 기세가 강하고 극단으로 기운다고 본다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Kuigang Star"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "조객": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "해마다 자리를 옮기는 이름. 문상 오는 손님에 빗댄 이름이다."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Condolence Guest"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "양인격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지가 일간의 양인에 해당해 잡는 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Yang Blade Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  },
                  "편재격": {
                    "type": "object",
                    "properties": {
                      "definition": {
                        "type": "string",
                        "examples": [
                          "월지에서 편재를 격으로 잡은 짜임."
                        ]
                      },
                      "en": {
                        "type": "string",
                        "examples": [
                          "Indirect Wealth Structure"
                        ]
                      }
                    },
                    "required": [
                      "definition",
                      "en"
                    ]
                  }
                },
                "required": [
                  "건록",
                  "겁재",
                  "관대",
                  "관성",
                  "균형",
                  "금",
                  "목",
                  "목욕",
                  "묘",
                  "병",
                  "비겁",
                  "비견",
                  "사",
                  "상관",
                  "세운",
                  "쇠",
                  "수",
                  "순환",
                  "식상",
                  "식신",
                  "양",
                  "억부",
                  "여기",
                  "연주",
                  "오행",
                  "용신",
                  "월주",
                  "인성",
                  "일간",
                  "일주",
                  "일진",
                  "장생",
                  "재성",
                  "절",
                  "정관",
                  "정기",
                  "정인",
                  "정재",
                  "제왕",
                  "중기",
                  "중화",
                  "천을귀인",
                  "태",
                  "토",
                  "편관",
                  "편인",
                  "편재",
                  "해",
                  "화"
                ]
              },
              "reference": {
                "type": "object",
                "properties": {
                  "date": {
                    "type": "string",
                    "examples": [
                      "2026-09-17"
                    ]
                  },
                  "month": {
                    "type": "string",
                    "examples": [
                      "2026-09"
                    ]
                  },
                  "year": {
                    "type": "integer",
                    "examples": [
                      2026
                    ]
                  }
                },
                "required": [
                  "date",
                  "month",
                  "year"
                ]
              },
              "input": {
                "type": "object",
                "properties": {
                  "solar": {
                    "type": "object",
                    "properties": {
                      "year": {
                        "type": "integer",
                        "examples": [
                          1988,
                          1990
                        ]
                      },
                      "month": {
                        "type": "integer",
                        "examples": [
                          3,
                          11
                        ]
                      },
                      "day": {
                        "type": "integer",
                        "examples": [
                          14,
                          2
                        ]
                      },
                      "hour": {
                        "type": [
                          "integer",
                          "null"
                        ],
                        "examples": [
                          9,
                          16
                        ]
                      },
                      "minute": {
                        "type": "integer",
                        "examples": [
                          20,
                          40
                        ]
                      }
                    },
                    "required": [
                      "day",
                      "hour",
                      "minute",
                      "month",
                      "year"
                    ]
                  },
                  "lunar": {
                    "type": "object",
                    "properties": {
                      "year": {
                        "type": "integer",
                        "examples": [
                          1988,
                          1990
                        ]
                      },
                      "month": {
                        "type": "integer",
                        "examples": [
                          1,
                          9
                        ]
                      },
                      "day": {
                        "type": "integer",
                        "examples": [
                          26,
                          15
                        ]
                      },
                      "isLeapMonth": {
                        "type": "boolean"
                      }
                    },
                    "required": [
                      "day",
                      "isLeapMonth",
                      "month",
                      "year"
                    ]
                  },
                  "isFemale": {
                    "type": "boolean"
                  },
                  "correctedHour": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "examples": [
                      8,
                      16
                    ]
                  },
                  "correctedMinute": {
                    "type": [
                      "integer",
                      "null"
                    ],
                    "examples": [
                      38,
                      24
                    ]
                  }
                },
                "required": [
                  "correctedHour",
                  "correctedMinute",
                  "isFemale",
                  "lunar",
                  "solar"
                ]
              },
              "timezone": {
                "type": "object",
                "properties": {
                  "cityId": {
                    "type": "string",
                    "examples": [
                      "seoul",
                      "new-york"
                    ]
                  },
                  "cityResolved": {
                    "type": "boolean"
                  },
                  "locationSource": {
                    "type": "string",
                    "examples": [
                      "city"
                    ]
                  },
                  "tzId": {
                    "type": "string",
                    "examples": [
                      "Asia/Seoul",
                      "America/New_York"
                    ]
                  },
                  "utcOffsetMinutes": {
                    "type": "number",
                    "examples": [
                      540,
                      -240
                    ]
                  },
                  "longitude": {
                    "type": "number",
                    "examples": [
                      126.978,
                      -74.006
                    ]
                  },
                  "mode": {
                    "type": "string",
                    "examples": [
                      "trueSolar"
                    ]
                  },
                  "longitudeCorrectionMinutes": {
                    "type": "number",
                    "examples": [
                      -32.1,
                      -56
                    ]
                  },
                  "equationOfTimeMinutes": {
                    "type": "number",
                    "examples": [
                      -9.3,
                      16.5
                    ]
                  },
                  "totalCorrectionMinutes": {
                    "type": "number",
                    "examples": [
                      -41.4,
                      -15.6
                    ]
                  },
                  "dstApplied": {
                    "type": "boolean"
                  },
                  "modeSource": {
                    "type": "string",
                    "examples": [
                      "request"
                    ]
                  }
                },
                "required": [
                  "cityId",
                  "cityResolved",
                  "dstApplied",
                  "equationOfTimeMinutes",
                  "locationSource",
                  "longitude",
                  "longitudeCorrectionMinutes",
                  "mode",
                  "modeSource",
                  "totalCorrectionMinutes",
                  "tzId",
                  "utcOffsetMinutes"
                ]
              },
              "diagnostics": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "code": {
                      "type": "string",
                      "examples": [
                        "HOUR_UNKNOWN",
                        "DST_APPLIED"
                      ]
                    },
                    "severity": {
                      "type": "string",
                      "examples": [
                        "warning",
                        "info"
                      ]
                    },
                    "field": {
                      "type": "string",
                      "examples": [
                        "hour",
                        "timezone"
                      ]
                    },
                    "message": {
                      "type": "string",
                      "examples": [
                        "출생 당시 서머타임(EDT, +1h)이 적용돼 표준시로 환산했습니다",
                        "절입(입동) 3분 후 출생: 출생 시각이 3분만 달라도 월주가 바뀝니다"
                      ]
                    }
                  },
                  "required": [
                    "code",
                    "field",
                    "message",
                    "severity"
                  ]
                }
              },
              "ruleset": {
                "type": "object",
                "properties": {
                  "version": {
                    "type": "string",
                    "examples": [
                      "0.2.2"
                    ]
                  },
                  "profile": {
                    "type": "string",
                    "examples": [
                      "ko-standard"
                    ]
                  },
                  "data": {
                    "type": "object",
                    "properties": {
                      "tzdata": {
                        "type": "string",
                        "examples": [
                          "2026c"
                        ]
                      },
                      "tzdataBuild": {
                        "type": "string",
                        "examples": [
                          "backzone"
                        ]
                      },
                      "tzZones": {
                        "type": "integer",
                        "examples": [
                          418
                        ]
                      },
                      "ephemeris": {
                        "type": "string",
                        "examples": [
                          "DE440s"
                        ]
                      },
                      "lunarVerifiedThrough": {
                        "type": "integer",
                        "examples": [
                          2050
                        ]
                      },
                      "solarTermsVerifiedRange": {
                        "type": "string",
                        "examples": [
                          "2000-2028"
                        ]
                      }
                    },
                    "required": [
                      "ephemeris",
                      "lunarVerifiedThrough",
                      "solarTermsVerifiedRange",
                      "tzZones",
                      "tzdata",
                      "tzdataBuild"
                    ]
                  }
                },
                "required": [
                  "data",
                  "profile",
                  "version"
                ]
              },
              "partners": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "index": {
                      "type": "integer",
                      "examples": [
                        0
                      ]
                    },
                    "normalized": {
                      "type": "object",
                      "properties": {
                        "solar": {
                          "type": "object",
                          "properties": {
                            "year": {
                              "type": "integer"
                            },
                            "month": {
                              "type": "integer"
                            },
                            "day": {
                              "type": "integer"
                            },
                            "hour": {
                              "type": "integer"
                            },
                            "minute": {
                              "type": "integer"
                            }
                          },
                          "required": [
                            "day",
                            "hour",
                            "minute",
                            "month",
                            "year"
                          ]
                        },
                        "lunar": {
                          "type": "object",
                          "properties": {
                            "year": {
                              "type": "integer"
                            },
                            "month": {
                              "type": "integer"
                            },
                            "day": {
                              "type": "integer"
                            },
                            "isLeapMonth": {
                              "type": "boolean"
                            }
                          },
                          "required": [
                            "day",
                            "isLeapMonth",
                            "month",
                            "year"
                          ]
                        },
                        "isFemale": {
                          "type": "boolean"
                        },
                        "correctedHour": {
                          "type": "integer"
                        },
                        "correctedMinute": {
                          "type": "integer"
                        }
                      },
                      "required": [
                        "correctedHour",
                        "correctedMinute",
                        "isFemale",
                        "lunar",
                        "solar"
                      ]
                    },
                    "timezone": {
                      "type": "object",
                      "properties": {
                        "cityId": {
                          "type": "string"
                        },
                        "cityResolved": {
                          "type": "boolean"
                        },
                        "locationSource": {
                          "type": "string"
                        },
                        "tzId": {
                          "type": "string"
                        },
                        "utcOffsetMinutes": {
                          "type": "integer"
                        },
                        "longitude": {
                          "type": "number"
                        },
                        "mode": {
                          "type": "string"
                        },
                        "longitudeCorrectionMinutes": {
                          "type": "number"
                        },
                        "equationOfTimeMinutes": {
                          "type": "number"
                        },
                        "totalCorrectionMinutes": {
                          "type": "number"
                        },
                        "dstApplied": {
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "cityId",
                        "cityResolved",
                        "dstApplied",
                        "equationOfTimeMinutes",
                        "locationSource",
                        "longitude",
                        "longitudeCorrectionMinutes",
                        "mode",
                        "totalCorrectionMinutes",
                        "tzId",
                        "utcOffsetMinutes"
                      ]
                    },
                    "crossRelations": {
                      "type": "object",
                      "properties": {
                        "core": {
                          "type": "object",
                          "properties": {
                            "dayStems": {
                              "type": "object",
                              "properties": {
                                "self": {
                                  "type": "string"
                                },
                                "partner": {
                                  "type": "string"
                                },
                                "kind": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                },
                                "kindKo": {
                                  "type": [
                                    "null",
                                    "string"
                                  ]
                                }
                              },
                              "required": [
                                "kind",
                                "kindKo",
                                "partner",
                                "self"
                              ]
                            },
                            "dayBranches": {
                              "type": "object",
                              "properties": {
                                "self": {
                                  "type": "string"
                                },
                                "partner": {
                                  "type": "string"
                                },
                                "kinds": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                },
                                "kindsKo": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              },
                              "required": [
                                "kinds",
                                "kindsKo",
                                "partner",
                                "self"
                              ]
                            },
                            "sipseongSelfToPartner": {
                              "type": "string"
                            },
                            "sipseongPartnerToSelf": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "dayBranches",
                            "dayStems",
                            "sipseongPartnerToSelf",
                            "sipseongSelfToPartner"
                          ]
                        },
                        "byPair": {
                          "type": "object",
                          "properties": {
                            "stems": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "positions": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "positionsKo": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "kindKo": {
                                    "type": "string"
                                  },
                                  "glyphs": {
                                    "type": "string"
                                  },
                                  "glyphsHan": {
                                    "type": "string"
                                  },
                                  "meaning": {
                                    "type": "string"
                                  },
                                  "reasoning": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "glyphs",
                                  "glyphsHan",
                                  "kind",
                                  "kindKo",
                                  "positions",
                                  "positionsKo"
                                ]
                              }
                            },
                            "branches": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "positions": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "positionsKo": {
                                    "type": "array",
                                    "items": {
                                      "type": "string"
                                    }
                                  },
                                  "kind": {
                                    "type": "string"
                                  },
                                  "kindKo": {
                                    "type": "string"
                                  },
                                  "glyphs": {
                                    "type": "string"
                                  },
                                  "glyphsHan": {
                                    "type": "string"
                                  },
                                  "meaning": {
                                    "type": "string"
                                  },
                                  "reasoning": {
                                    "type": "string"
                                  }
                                },
                                "required": [
                                  "glyphs",
                                  "glyphsHan",
                                  "kind",
                                  "kindKo",
                                  "positions",
                                  "positionsKo"
                                ]
                              }
                            }
                          },
                          "required": [
                            "branches",
                            "stems"
                          ]
                        },
                        "summary": {
                          "type": "object",
                          "properties": {
                            "combinations": {
                              "type": "integer"
                            },
                            "clashes": {
                              "type": "integer"
                            },
                            "punishments": {
                              "type": "integer"
                            },
                            "harmsAndBreaks": {
                              "type": "integer"
                            },
                            "wonjin": {
                              "type": "integer"
                            },
                            "total": {
                              "type": "integer"
                            }
                          },
                          "required": [
                            "clashes",
                            "combinations",
                            "harmsAndBreaks",
                            "punishments",
                            "total",
                            "wonjin"
                          ]
                        },
                        "basis": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "byPair",
                        "core",
                        "summary"
                      ]
                    },
                    "elementComplement": {
                      "type": "object",
                      "properties": {
                        "selfLow": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "partnerLow": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "selfComplementedBy": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "element": {
                                "type": "string"
                              },
                              "elementKo": {
                                "type": "string"
                              },
                              "countInPartner": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "countInPartner",
                              "element",
                              "elementKo"
                            ]
                          }
                        },
                        "partnerComplementedBy": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "element": {
                                "type": "string"
                              },
                              "elementKo": {
                                "type": "string"
                              },
                              "countInSelf": {
                                "type": "integer"
                              }
                            },
                            "required": [
                              "countInSelf",
                              "element",
                              "elementKo"
                            ]
                          }
                        },
                        "commonMissing": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "overlapExcess": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        },
                        "supportsYongsin": {
                          "type": "object",
                          "properties": {
                            "selfYongsinInPartner": {
                              "type": "integer"
                            },
                            "partnerYongsinInSelf": {
                              "type": "integer"
                            },
                            "selfYongsin": {
                              "type": "string"
                            },
                            "partnerYongsin": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "partnerYongsin",
                            "partnerYongsinInSelf",
                            "selfYongsin",
                            "selfYongsinInPartner"
                          ]
                        },
                        "basis": {
                          "type": "array",
                          "items": {
                            "type": "string"
                          }
                        }
                      },
                      "required": [
                        "commonMissing",
                        "overlapExcess",
                        "partnerComplementedBy",
                        "partnerLow",
                        "selfComplementedBy",
                        "selfLow",
                        "supportsYongsin"
                      ]
                    }
                  },
                  "required": [
                    "crossRelations",
                    "elementComplement",
                    "index",
                    "normalized",
                    "timezone"
                  ]
                },
                "description": "다인 토픽 전용. 상대마다 본인과 같은 modules 세트에 crossRelations·elementComplement 가 더해집니다(modules 스키마는 위와 동일)."
              },
              "modules": {
                "type": "object",
                "description": "계산 결과. 토픽이 실제로 쓰는 모듈만 담기며 키 순서가 해석 순서입니다.",
                "properties": {
                  "fourPillars": {
                    "$ref": "https://api.supasaju.com/schemas/fourPillars.json",
                    "description": "fourPillars 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "elements": {
                    "$ref": "https://api.supasaju.com/schemas/elements.json",
                    "description": "elements 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "decadeFortune": {
                    "$ref": "https://api.supasaju.com/schemas/decadeFortune.json",
                    "description": "decadeFortune 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "sinStrength": {
                    "$ref": "https://api.supasaju.com/schemas/sinStrength.json",
                    "description": "sinStrength 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "wongukInteraction": {
                    "$ref": "https://api.supasaju.com/schemas/wongukInteraction.json",
                    "description": "wongukInteraction 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "sinsal": {
                    "$ref": "https://api.supasaju.com/schemas/sinsal.json",
                    "description": "sinsal 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "weolun": {
                    "$ref": "https://api.supasaju.com/schemas/weolun.json",
                    "description": "weolun 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "seun": {
                    "$ref": "https://api.supasaju.com/schemas/seun.json",
                    "description": "seun 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "dailyInteraction": {
                    "$ref": "https://api.supasaju.com/schemas/dailyInteraction.json",
                    "description": "dailyInteraction 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "gyeokguk": {
                    "$ref": "https://api.supasaju.com/schemas/gyeokguk.json",
                    "description": "gyeokguk 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "yongsin": {
                    "$ref": "https://api.supasaju.com/schemas/yongsin.json",
                    "description": "yongsin 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "wealth": {
                    "$ref": "https://api.supasaju.com/schemas/wealth.json",
                    "description": "wealth 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "healthBalance": {
                    "$ref": "https://api.supasaju.com/schemas/healthBalance.json",
                    "description": "healthBalance 모듈. 전체 스키마는 참조 파일에 있습니다."
                  },
                  "evaluation": {
                    "$ref": "https://api.supasaju.com/schemas/evaluation.json",
                    "description": "evaluation 모듈. 전체 스키마는 참조 파일에 있습니다."
                  }
                }
              }
            }
          },
          "meta": {
            "type": "object"
          }
        }
      },
      "BirthInput": {
        "type": "object",
        "required": [
          "birthYear",
          "birthMonth",
          "birthDay"
        ],
        "properties": {
          "birthYear": {
            "type": "integer",
            "description": "출생년도 1900~2100. 정수 문자열(\"1990\") 도 허용합니다."
          },
          "birthMonth": {
            "type": "integer",
            "description": "출생월 1~12. JavaScript Date.getMonth() 의 0~11 을 그대로 보내면 거부됩니다."
          },
          "birthDay": {
            "type": "integer",
            "description": "출생일 1~31."
          },
          "birthHour": {
            "type": [
              "integer",
              "null"
            ],
            "description": "출생시 0~23. 모르면 null — 시주 없이 계산하고 진단을 답니다."
          },
          "birthMinute": {
            "type": "integer",
            "description": "출생분 0~59, 기본 0."
          },
          "isFemale": {
            "type": "boolean",
            "description": "여성 여부, 기본 false. 성별은 대운 진행 방향을 바꾸므로 명시를 권합니다."
          },
          "isLunar": {
            "type": "boolean",
            "description": "음력 여부, 기본 false."
          },
          "isLeapMonth": {
            "type": "boolean",
            "description": "음력 윤달 여부, 기본 false. isLunar 가 true 일 때만 씁니다."
          },
          "birthCity": {
            "type": "string",
            "description": "출생 도시, 기본 \"서울\". 한글·영문·별칭을 받습니다. 목록은 GET /v2/cities. 목록에 없는 값은 400 UNSUPPORTED_CITY 로 거절합니다 — 모르는 도시는 시간대조차 모르므로 대신 계산하지 않습니다. **도시 선택이 결과를 바꿉니다**: 같은 시간대 안에서도 경도 차이로 시주가 갈릴 수 있습니다."
          },
          "birthLongitude": {
            "type": "number",
            "description": "출생지 경도(동경 +, 서경 −, −180~180). **birthTimezone 과 함께** 주면 도시 목록 밖의 출생지도 정확히 계산합니다. birthCity 와 함께 주면 시간대는 도시에서, 경도는 이 값을 씁니다(예: 뭄바이 근교). 같은 시간대 안에서도 경도 보정은 최대 99분 벌어집니다 — 목록에서 가까운 도시를 대신 고르면 시주가 갈릴 수 있습니다."
          },
          "birthTimezone": {
            "type": "string",
            "description": "출생지 IANA 시간대 이름(예: \"Asia/Kolkata\"). **대소문자를 구분합니다.** 받을 수 있는 목록은 GET /v2/timezones. birthCity 와 함께 주면 경도는 도시에서, 시간대는 이 값을 씁니다(예: 출생 기록이 베이징 시간인 우루무치). 경도만·시간대만 주면 400 INVALID_LOCATION 입니다 — 경도로 시간대를 추측하지 않습니다."
          },
          "trueSolarTime": {
            "type": "boolean",
            "description": "진태양시 적용 여부. 생략하면 키 설정의 기본값을 따릅니다. **둘 다 경도 보정은 합니다** — false(평시)는 경도 보정만, true(진태양시)는 경도 보정 + 균시차입니다. 즉 같은 시간대라도 출생 도시를 바꾸면 결과가 달라집니다. 적용된 값은 응답의 timezone.longitudeCorrectionMinutes · equationOfTimeMinutes 로 확인하세요."
          }
        },
        "description": "모든 토픽이 받는 공통 출생 입력. 계산 옵션은 ReadingOptions, 상대는 Partner 입니다."
      },
      "ReadingOptions": {
        "type": "object",
        "properties": {
          "decadeCount": {
            "type": "integer",
            "description": "대운 개수 1~20, 기본 13. **출생부터** 세므로 작게 주면 현재 대운이 목록 밖으로 나갈 수 있습니다 — 그때는 decadeWindow 를 쓰세요."
          },
          "decadeWindow": {
            "type": "integer",
            "description": "현재 대운 ±n (0~9). 주면 decadeCount 를 무시합니다. 현재 대운을 잃지 않으면서 응답을 줄이는 쪽입니다."
          },
          "seunWindow": {
            "type": "integer",
            "description": "기준 연도 ±n 개의 세운 (0~5). 토픽 기본값이 있어도 요청이 이깁니다."
          },
          "detail": {
            "type": "string",
            "description": "minimal | standard | full. 기본 standard. minimal 은 해설문을 담지 않습니다."
          },
          "exclude": {
            "type": "array",
            "description": "빼고 받을 모듈 이름들. 덩치는 문장이 아니라 구조라, 모듈 하나를 빼는 편이 detail 을 내리는 것보다 크게 줄어듭니다. 토픽의 핵심 모듈은 뺄 수 없습니다(400). 이름은 GET /v2/saju/modules."
          }
        },
        "description": "본인 입력에만 붙는 계산 옵션. 응답 크기를 줄이려면 decadeWindow·seunWindow·detail 을 씁니다."
      },
      "Partner": {
        "allOf": [
          {
            "$ref": "#/components/schemas/BirthInput"
          }
        ],
        "type": "object",
        "properties": {
          "label": {
            "type": "string",
            "description": "응답에서 이 상대를 가리킬 이름표. 생략하면 순번으로 부릅니다."
          }
        },
        "description": "상대 한 명. 출생 입력과 이름표만 받습니다 — 계산 옵션은 본인 쪽에만 붙습니다."
      },
      "ErrorResponse": {
        "type": "object",
        "required": [
          "success",
          "error"
        ],
        "properties": {
          "success": {
            "type": "boolean",
            "const": false
          },
          "error": {
            "type": "object",
            "required": [
              "code",
              "message"
            ],
            "properties": {
              "code": {
                "type": "string",
                "enum": [
                  "BATCH_TOO_MANY_ITEMS",
                  "INVALID_DATE",
                  "INVALID_JSON",
                  "INVALID_LOCATION",
                  "LEAP_MONTH_NOT_FOUND",
                  "OUT_OF_SUPPORTED_ERA",
                  "SAMPLE_PROFILE_REQUIRED",
                  "UNSUPPORTED_CITY",
                  "UNSUPPORTED_TIMEZONE",
                  "VALIDATION_ERROR",
                  "INVALID_API_KEY",
                  "KEY_EXPIRED",
                  "KEY_REVOKED",
                  "MISSING_API_KEY",
                  "SUBSCRIPTION_REQUIRED",
                  "QUOTA_EXHAUSTED",
                  "ORIGIN_NOT_ALLOWED",
                  "PRO_ONLY",
                  "NOT_FOUND",
                  "TOPIC_NOT_AVAILABLE",
                  "WRONG_ENDPOINT",
                  "DAILY_BURN_LIMIT",
                  "RATE_LIMIT_EXCEEDED",
                  "INTERNAL_ERROR",
                  "AUTH_UNAVAILABLE"
                ]
              },
              "message": {
                "type": "string",
                "description": "메시지 자체가 조치 안내입니다."
              },
              "details": {
                "type": "object",
                "description": "어긋난 필드와 사유 등 기계 판독용 정보."
              },
              "hint": {
                "type": "object",
                "description": "대체 경로·사용 가능한 토픽 등 다음 행동의 힌트."
              }
            }
          }
        }
      }
    }
  }
}