{
  "openapi": "3.0.0",
  "paths": {
    "/v1/suggest-keywords": {
      "post": {
        "description": "検索したキーワードに対して、複数の検索エンジンから取得したサジェストキーワードを一括取得します。サジェストキーワードに加えて、SEO難易度、月間検索数、CPC（$）、競合性のデータを返却します。",
        "operationId": "SuggestKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SuggestKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SuggestKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "サジェストキーワード取得",
        "tag": "サジェストキーワード取得",
        "tags": [
          "サジェストキーワード取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/related-keywords": {
      "post": {
        "description": "ラッコキーワードのキーワードデータベースから検索条件にマッチしたキーワードを一括取得します。関連キーワードに加えてSEO難易度、月間検索数、CPC（$）、競合性のデータを返却します。",
        "operationId": "RelatedKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RelatedKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RelatedKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "関連キーワード取得",
        "tag": "関連キーワード取得",
        "tags": [
          "関連キーワード取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/other-keywords": {
      "post": {
        "description": "潜在的な検索キーワード/質問（LSI/PAA）を取得します。",
        "operationId": "OtherKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/OtherKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/OtherKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "潜在的な検索キーワード/質問（LSI/PAA）取得",
        "tag": "潜在的な検索キーワード/質問（LSI/PAA）取得",
        "tags": [
          "潜在的な検索キーワード/質問（LSI/PAA）取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/question-search": {
      "post": {
        "description": "キーワードに関連するよくある質問を取得します。",
        "operationId": "QuestionSearchController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchQuestionDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchQuestionResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "よくある質問検索取得",
        "tag": "よくある質問検索",
        "tags": [
          "よくある質問検索"
        ],
        "validationErrorExample": [
          "keyword must be a string"
        ]
      }
    },
    "/v1/ranking-keywords": {
      "post": {
        "description": "指定キーワードのGoogle検索結果の上位{searchTop}件のURLが、{searchRange}以内にランクインしているキーワードを取得します。",
        "operationId": "RankingKeywordsController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RankingKeywordsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RankingKeywordsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword should not be empty"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "同時ランクインキーワード取得",
        "tag": "同時ランクインキーワード",
        "tags": [
          "同時ランクインキーワード"
        ],
        "validationErrorExample": [
          "keyword should not be empty"
        ]
      }
    },
    "/v1/search-volume": {
      "post": {
        "description": "一括キーワード調査を登録するAPIです。最大50,000件のキーワードを一括登録できます。",
        "operationId": "SearchVolumeHistoryController_register",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchVolumeHistoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "登録成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeHistoryResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keywords is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "登録成功",
        "summary": "一括キーワード調査登録",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "keywords is a required field"
        ]
      }
    },
    "/v1/search-volume/{requestId}/status": {
      "get": {
        "description": "一括キーワード調査のステータスを取得するAPIです。月間検索数取得、ノイズ除去、SEO難易度取得の各ステータスを確認できます。",
        "operationId": "SearchVolumeHistoryController_getStatus",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "リクエストID",
            "schema": {
              "example": 1234567,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ステータス取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeStatusResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid requestId"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "ステータス取得成功",
        "summary": "一括キーワード調査ステータス取得",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "Invalid requestId"
        ]
      }
    },
    "/v1/search-volume/{requestId}/results": {
      "post": {
        "description": "一括キーワード調査データを取得するAPIです。フィルタやソート条件を指定できます。",
        "operationId": "SearchVolumeHistoryController_getResults",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "リクエストID",
            "schema": {
              "example": 1234567,
              "type": "number"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchVolumeResultsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "データ取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchVolumeResultsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid request parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "データ取得成功",
        "summary": "一括キーワード調査データ取得",
        "tags": [
          "一括キーワード調査"
        ],
        "validationErrorExample": [
          "Invalid request parameters"
        ]
      }
    },
    "/v1/search-volume/locations": {
      "get": {
        "description": "一括キーワード調査で指定可能な地域（location）の一覧を取得するAPIです。認証は不要です。Google Ads API の LocationCriterion に準拠した地域名を返却します。",
        "operationId": "SearchVolumeMetadataController_getLocations",
        "parameters": [],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LocationsResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "successDescription": "取得成功",
        "summary": "地域一覧取得",
        "tags": [
          "一括キーワード調査メタデータ"
        ]
      }
    },
    "/v1/search-volume/languages": {
      "get": {
        "description": "一括キーワード調査で指定可能な言語（language）の一覧を取得するAPIです。認証は不要です。Google Ads API の LanguageCriterion に準拠した言語名を返却します。",
        "operationId": "SearchVolumeMetadataController_getLanguages",
        "parameters": [],
        "responses": {
          "200": {
            "description": "取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LanguagesResponseDto"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "successDescription": "取得成功",
        "summary": "言語一覧取得",
        "tags": [
          "一括キーワード調査メタデータ"
        ]
      }
    },
    "/v1/influx-keywords": {
      "post": {
        "description": "獲得キーワード調査のキーワード軸データを一括取得します。",
        "operationId": "InfluxKeywordsController_searchKeyword",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InfluxKeywordsKeywordDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfluxKeywordsKeywordResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "獲得キーワード調査取得",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/influx-pages": {
      "post": {
        "description": "獲得キーワード調査のページ軸データを一括取得します。",
        "operationId": "InfluxPagesController_searchPage",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InfluxPagesDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InfluxPagesResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "獲得ページ調査取得",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/competitive": {
      "post": {
        "description": "特定ドメインの競合抽出データを取得します。",
        "operationId": "CompetitiveController_searchCompetitive",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CompetitiveDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CompetitiveResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "urls must be a string"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "競合サイト抽出",
        "tag": "獲得キーワード調査",
        "tags": [
          "獲得キーワード調査"
        ],
        "validationErrorExample": [
          "urls must be a string"
        ]
      }
    },
    "/v1/content-search": {
      "post": {
        "description": "SEO集客のあるWEBページをSEO集客力の高い順に取得",
        "operationId": "ContentSearchController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ContentSearchDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ContentSearchResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "集客コンテンツ検索",
        "tag": "集客コンテンツ検索",
        "tags": [
          "集客コンテンツ検索"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/headline": {
      "post": {
        "description": "Google検索結果上位20ページの見出しを抽出します。",
        "operationId": "HeadlineController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/HeadlineDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HeadlineResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "見出し抽出取得",
        "tag": "見出し抽出",
        "tags": [
          "見出し抽出"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/co-occurrence": {
      "post": {
        "description": "検索したキーワードの共起語を一括取得します。",
        "operationId": "CoOccurrenceController_search",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CoOccurrenceDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "検索成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CoOccurrenceResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keyword is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "検索成功",
        "summary": "共起語取得",
        "tag": "共起語取得",
        "tags": [
          "共起語取得"
        ],
        "validationErrorExample": [
          "keyword is a required field"
        ]
      }
    },
    "/v1/search-rank": {
      "post": {
        "description": "検索順位チェックを登録するAPIです。キーワードとURLを指定して、検索順位チェックに登録します。",
        "operationId": "SearchRankHistoryController_register",
        "parameters": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRankHistoryDto"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "登録成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankHistoryResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "keywords is a required field"
                      ]
                    }
                  }
                }
              }
            }
          },
          "402": {
            "description": "クレジット不足",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Insufficient credits. Required: 1, Available: 0"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証エラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          },
          "503": {
            "description": "Service Unavailable - データベース接続エラーなど",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Service Unavailable"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "登録成功",
        "summary": "検索順位チェック登録",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "keywords is a required field"
        ]
      }
    },
    "/v1/search-rank/{requestId}/status": {
      "get": {
        "description": "検索順位チェックのステータスを取得するAPIです。検索結果取得、月間検索数/SEO難易度取得の各ステータスを確認できます。",
        "operationId": "SearchRankHistoryController_getStatus",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "リクエストID",
            "schema": {
              "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "ステータス取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankStatusResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid requestId"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "ステータス取得成功",
        "summary": "検索順位チェックステータス取得",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "Invalid requestId"
        ]
      }
    },
    "/v1/search-rank/{requestId}/results": {
      "post": {
        "description": "検索順位チェック結果データを取得するAPIです。フィルタやソート条件を指定できます。",
        "operationId": "SearchRankHistoryController_getResults",
        "parameters": [
          {
            "name": "requestId",
            "required": true,
            "in": "path",
            "description": "リクエストID",
            "schema": {
              "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SearchRankResultsDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "データ取得成功",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SearchRankResultsResponseDto"
                }
              }
            }
          },
          "400": {
            "description": "バリデーションエラー",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Invalid request parameters"
                      ]
                    }
                  }
                }
              }
            }
          },
          "403": {
            "description": "認証失敗",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Forbidden"
                      ]
                    }
                  }
                }
              }
            }
          },
          "429": {
            "description": "レート制限超過",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "Rate limit exceeded. Please try again later."
                      ]
                    }
                  }
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "result": {
                      "type": "boolean",
                      "example": false
                    },
                    "data": {
                      "type": "object",
                      "example": {}
                    },
                    "errors": {
                      "type": "array",
                      "items": {
                        "type": "string"
                      },
                      "example": [
                        "500 Internal Server Error"
                      ]
                    }
                  }
                }
              }
            }
          }
        },
        "security": [
          {
            "X-API-Key": []
          }
        ],
        "successDescription": "データ取得成功",
        "summary": "検索順位チェック結果データ取得",
        "tags": [
          "検索順位チェック"
        ],
        "validationErrorExample": [
          "Invalid request parameters"
        ]
      }
    }
  },
  "info": {
    "title": "ラッコキーワードAPI",
    "description": "ラッコキーワードAPIの仕様です。\nスタンダードプランでAPIキー（最大5個）を発行することで利用できます。\n取得データは社内利用の範囲でご利用いただけます。サービスへの組み込み等をご検討の際はAPI利用ガイドライン・利用規約を厳守の上ご利用ください。\nMCPの設定方法や接続手順については、MCP設定ガイドをご覧ください。\n\nAPI Docs（JSON / AI・プログラム向け）\nAPI Docs（Markdown / 人間向け）",
    "version": "1.4.1",
    "contact": {},
    "license": {
      "name": "License: Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    }
  },
  "tags": [],
  "servers": [
    {
      "url": "https://api.rakkokeyword.com",
      "description": "本番環境"
    }
  ],
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "APIキーを指定してください"
      }
    },
    "schemas": {
      "SuggestKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "サジェスト取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "modes": {
            "default": [
              "google"
            ],
            "description": "サジェストキーワードを取得する検索エンジン（複数選択可）。google / bing / youtube / googleVideo / amazon / rakuten / googleShopping / googleImage から選択。省略時は google のみ。",
            "example": [
              "google",
              "bing"
            ],
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "google",
                "bing",
                "youtube",
                "googleVideo",
                "amazon",
                "rakuten",
                "googleShopping",
                "googleImage"
              ]
            }
          },
          "increaseKeyword": {
            "default": false,
            "description": "キーワード増量オプション。true にすると、より多くのサジェストキーワードを取得する（消費クレジットが増加する）。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。検索ボリューム・SEO難易度・CPC・競合性・出現時期・サジェストクラスなどで絞り込む。",
            "type": "object",
            "properties": {
              "suggestClass": {
                "description": "サジェストクラスフィルタ（0-3の配列）。0: ＋（サジェスト）, 1: ＋＋（サジェストのサジェスト）, 2: ＋α（拡張サジェスト）, 3: ＋＋＋（拡張/深掘りサジェスト）",
                "example": [
                  0,
                  1
                ],
                "type": "array",
                "items": {
                  "type": "integer",
                  "minimum": 0,
                  "maximum": 3
                }
              },
              "keyword": {
                "description": "キーワードフィルタ",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索ボリュームフィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "firstSeenRange": {
                "description": "出現時期フィルタ",
                "type": "object",
                "properties": {
                  "include": {
                    "description": "出現時期の選択肢",
                    "example": "last_30_days",
                    "type": "string",
                    "enum": [
                      "last_7_days",
                      "last_30_days",
                      "last_90_days",
                      "within_6_months",
                      "within_1_year",
                      "over_1_year"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "結果のソート項目。keyword / suggestClass / seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "suggestClass",
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "description": "取得件数の上限。正の整数を指定。省略時はすべての結果を返す。",
            "example": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "SuggestKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。取得対象の検索エンジン数に応じて増減する（1エンジンにつき1クレジット）。",
                "example": 1
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "サジェスト取得の元になった検索キーワード",
                    "example": "ラッコ"
                  },
                  "suggestEngines": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "google",
                        "bing",
                        "youtube",
                        "googleVideo",
                        "amazon",
                        "rakuten",
                        "googleShopping",
                        "googleImage"
                      ]
                    },
                    "description": "サジェストキーワードの取得対象としたサーチエンジン一覧。単一取得の場合も配列で出力されます。",
                    "example": [
                      "google"
                    ]
                  }
                },
                "required": [
                  "keyword",
                  "suggestEngines"
                ],
                "description": "リクエストで指定された検索クエリ情報（キーワードと対象エンジン）"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "サジェストキーワード文字列",
                      "example": "ラッコ 水族館"
                    },
                    "suggestClass": {
                      "type": "string",
                      "description": "サジェストキーワードの区分ラベル。＋（0: サジェスト）, ＋＋（1: サジェストのサジェスト）, ＋α（2: 拡張サジェスト）, ＋＋＋（3: 「＋＋」または「＋α」からさらに展開されたサジェスト）",
                      "example": "＋"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 45,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 12000,
                          "nullable": true
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 1.5,
                          "nullable": true
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 2,
                          "nullable": true
                        },
                        "firstSeenRange": {
                          "type": "string",
                          "enum": [
                            "last_7_days",
                            "last_30_days",
                            "last_90_days",
                            "within_6_months",
                            "within_1_year",
                            "over_1_year"
                          ],
                          "description": "出現時期。キーワードが最初に検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days",
                          "nullable": true
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ],
                      "description": "SEO関連の各種指標（検索ボリューム・SEO難易度・CPC・競合性・出現時期）"
                    },
                    "suggestEngines": {
                      "type": "object",
                      "properties": {
                        "count": {
                          "type": "number",
                          "description": "このキーワードが取得できたサーチエンジン数",
                          "example": 2
                        },
                        "active": {
                          "type": "array",
                          "items": {
                            "type": "string",
                            "enum": [
                              "google",
                              "bing",
                              "youtube",
                              "googleVideo",
                              "amazon",
                              "rakuten",
                              "googleShopping",
                              "googleImage"
                            ]
                          },
                          "description": "このキーワードが取得できたサーチエンジン一覧",
                          "example": [
                            "google",
                            "youtube"
                          ]
                        }
                      },
                      "required": [
                        "count",
                        "active"
                      ],
                      "description": "このサジェストキーワードを返した検索エンジンの情報（エンジン数と一覧）"
                    }
                  },
                  "required": [
                    "keyword",
                    "suggestClass",
                    "metrics",
                    "suggestEngines"
                  ]
                },
                "description": "サジェストキーワードのリスト。各アイテムにキーワード・サジェスト分類・SEO指標・取得エンジン情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "サジェストキーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "RelatedKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "関連キーワード取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "matchType": {
            "default": "partialMatch",
            "description": "キーワードのマッチタイプ。partialMatch: 部分一致 / phraseMatch: フレーズ一致 / prefixMatch: 前方一致 / suffixMatch: 後方一致 / wordMatch: 単語一致。省略時は partialMatch。",
            "type": "string",
            "enum": [
              "partialMatch",
              "phraseMatch",
              "prefixMatch",
              "suffixMatch",
              "wordMatch"
            ]
          },
          "filter": {
            "description": "結果のフィルタリング条件。検索ボリューム・SEO難易度・CPC・競合性・出現時期などで絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索ボリュームフィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "firstSeenRange": {
                "description": "出現時期フィルタ",
                "type": "object",
                "properties": {
                  "include": {
                    "description": "出現時期の選択肢",
                    "example": "last_30_days",
                    "type": "string",
                    "enum": [
                      "last_7_days",
                      "last_30_days",
                      "last_90_days",
                      "within_6_months",
                      "within_1_year",
                      "over_1_year"
                    ]
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "結果のソート項目。seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 1000,
            "description": "取得件数の上限。1〜25000 の整数を指定。省略時は 1000 件。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 25000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "RelatedKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "関連キーワード取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "検索キーワードを元に取得した関連キーワード",
                      "example": "ラッコ 水族館"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 40,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 90500,
                          "nullable": true
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 0,
                          "nullable": true
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 1,
                          "nullable": true
                        },
                        "firstSeenRange": {
                          "type": "string",
                          "enum": [
                            "last_7_days",
                            "last_30_days",
                            "last_90_days",
                            "within_6_months",
                            "within_1_year",
                            "over_1_year"
                          ],
                          "description": "出現時期。キーワードが最初に検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days",
                          "nullable": true
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ],
                      "description": "SEO関連の各種指標（検索ボリューム・SEO難易度・CPC・競合性・出現時期）"
                    }
                  },
                  "required": [
                    "keyword",
                    "metrics"
                  ]
                },
                "description": "関連キーワードのリスト。各アイテムにキーワード・SEO指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "関連キーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "OtherKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "潜在的な検索キーワード（LSI）および関連する質問（PAA）を取得するための検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "sortBy": {
            "default": "importance",
            "description": "結果のソート項目。importance / seoDifficulty / searchVolume / cpc / competition / firstSeenRange。省略時は importance。",
            "type": "string",
            "enum": [
              "importance",
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "firstSeenRange"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "OtherKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 15
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "潜在的な検索キーワード/質問（LSI/PAA）取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "lsiCount": {
                    "type": "number",
                    "description": "LSI（潜在的な検索キーワード）の件数",
                    "example": 1
                  },
                  "paaCount": {
                    "type": "number",
                    "description": "PAA（People Also Ask / 関連する質問）の件数",
                    "example": 1
                  }
                },
                "required": [
                  "lsiCount",
                  "paaCount"
                ],
                "description": "LSI/PAA の件数サマリー"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "type": {
                      "type": "string",
                      "enum": [
                        "lsi",
                        "paa"
                      ],
                      "description": "データ種別。lsi: 潜在的な検索キーワード / paa: 関連する質問。",
                      "example": "lsi"
                    },
                    "keyword": {
                      "description": "取得した潜在的な検索キーワード。type が lsi の場合に含まれる。",
                      "example": "ラッコ 水族館",
                      "type": "string"
                    },
                    "question": {
                      "description": "取得した関連する質問。type が paa の場合に含まれる。",
                      "example": "ラッコはどこで見れますか？",
                      "type": "string"
                    },
                    "importance": {
                      "type": "string",
                      "enum": [
                        "low",
                        "medium",
                        "high"
                      ],
                      "description": "重要度。高いほど関連性や注目度が高いことを示す。high: 高 / medium: 中 / low: 低。",
                      "example": "high"
                    },
                    "sourceKeyword": {
                      "type": "string",
                      "description": "このキーワードまたは質問の取得元となったキーワード",
                      "example": "ラッコ"
                    },
                    "metrics": {
                      "description": "SEO関連の各種指標。type が lsi の場合のみ含まれる。",
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 33100,
                          "nullable": true
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 2.17,
                          "nullable": true
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 5,
                          "nullable": true
                        },
                        "firstSeenRange": {
                          "type": "string",
                          "enum": [
                            "last_7_days",
                            "last_30_days",
                            "last_90_days",
                            "within_6_months",
                            "within_1_year",
                            "over_1_year"
                          ],
                          "description": "出現時期。キーワードが最初に検出された時期を日付範囲ラベルで表す。不明な場合は null。",
                          "example": "last_30_days",
                          "nullable": true
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "firstSeenRange"
                      ]
                    }
                  },
                  "required": [
                    "type",
                    "importance",
                    "sourceKeyword"
                  ]
                },
                "description": "LSI/PAA アイテムのリスト。LSI アイテムが先に、PAA アイテムが後に並ぶ。各アイテムに種別・重要度・取得元キーワードを含み、LSI の場合は SEO 指標も含まれる。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "潜在的な検索キーワード/関連する質問の検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchQuestionDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "よくある質問検索の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "limit": {
            "default": 100,
            "description": "出力数の上限。1〜200 の整数を指定。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "SearchQuestionResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数",
                "example": 2
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "よくある質問検索の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "question": {
                      "type": "string",
                      "description": "検索キーワードに関連する質問",
                      "example": "ラッコが絶滅しそうな理由は何ですか?"
                    }
                  },
                  "required": [
                    "question"
                  ]
                },
                "description": "質問アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "よくある質問検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "RankingKeywordsDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "同時ランクインキーワード取得の元となる検索キーワード。指定キーワードの検索上位URLが他にランクインしているキーワードを取得する。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "searchTop": {
            "default": 20,
            "description": "検索上位参照数。上位何件のURLを同時ランクイン判定に使用するかを指定する。選択肢: 3 / 5 / 10 / 20 / 30 / 50。省略時は 20。",
            "example": 20,
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  3
                ]
              },
              {
                "type": "number",
                "enum": [
                  5
                ]
              },
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              },
              {
                "type": "number",
                "enum": [
                  50
                ]
              }
            ]
          },
          "searchRange": {
            "default": 50,
            "description": "検索順位範囲。この順位以内にランクインしているキーワードを対象にする。選択肢: 10 / 20 / 30 / 50 / 100。省略時は 50。",
            "example": 50,
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  10
                ]
              },
              {
                "type": "number",
                "enum": [
                  20
                ]
              },
              {
                "type": "number",
                "enum": [
                  30
                ]
              },
              {
                "type": "number",
                "enum": [
                  50
                ]
              },
              {
                "type": "number",
                "enum": [
                  100
                ]
              }
            ]
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数・CPC・競合性・関連度で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索ボリュームフィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "クリック単価（CPC）フィルタ（USD、範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "relevance": {
                "description": "関連度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "relevance",
            "description": "結果のソート項目。seoDifficulty / searchVolume / cpc / competition / relevance。省略時は relevance。",
            "type": "string",
            "enum": [
              "seoDifficulty",
              "searchVolume",
              "cpc",
              "competition",
              "relevance"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 500,
            "description": "取得件数。1〜5000 の整数を指定する。省略時は 500。",
            "example": 500,
            "type": "integer",
            "minimum": 1,
            "maximum": 5000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "RankingKeywordsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "同時ランクインキーワード取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "同時ランクインしているキーワード",
                      "example": "ラッコ 水族館"
                    },
                    "wordCount": {
                      "type": "number",
                      "description": "キーワードのスペース区切りの単語数",
                      "example": 2
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 10000
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 0.5
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。",
                          "example": 32
                        },
                        "relevance": {
                          "type": "number",
                          "description": "同時ランクイン度。1–100で表し、高いほど元キーワードと検索結果の重複度が高いことを示す。",
                          "example": 5
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition",
                        "relevance"
                      ],
                      "description": "SEO関連の各種指標（SEO難易度・月間検索数・CPC・競合性・関連度）"
                    }
                  },
                  "required": [
                    "keyword",
                    "wordCount",
                    "metrics"
                  ]
                },
                "description": "同時ランクインキーワード結果のリスト。各アイテムにキーワード・単語数・SEO指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "同時ランクインキーワード検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeHistoryDto": {
        "type": "object",
        "properties": {
          "keywords": {
            "minItems": 1,
            "maxItems": 50000,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "キーワード（入力上限50,000件）",
            "example": [
              "ラッコ",
              "カワウソ"
            ]
          },
          "seoDifficulty": {
            "default": false,
            "description": "SEO難易度取得フラグ。true の場合にSEO難易度を取得する。省略時は false。",
            "type": "boolean"
          },
          "dataCompletion": {
            "default": true,
            "description": "データ補完フラグ。true の場合にデータ補完を行う。省略時は true。",
            "type": "boolean"
          },
          "location": {
            "default": "Japan",
            "description": "地域名。Google Ads API の LocationCriterion に準拠。省略時は Japan。",
            "example": "Japan",
            "type": "string"
          },
          "language": {
            "default": "Japanese",
            "description": "言語名。Google Ads API の LanguageCriterion に準拠。省略時は Japanese。",
            "example": "Japanese",
            "type": "string"
          },
          "deduplicate": {
            "default": true,
            "description": "キーワードの重複除去を行うかどうか。省略時は true。",
            "type": "boolean"
          },
          "aggregationPeriodMonths": {
            "default": 12,
            "description": "集計期間（月数）。12/24/36/48 のいずれか。省略時は 12。",
            "anyOf": [
              {
                "type": "number",
                "enum": [
                  12
                ]
              },
              {
                "type": "number",
                "enum": [
                  24
                ]
              },
              {
                "type": "number",
                "enum": [
                  36
                ]
              },
              {
                "type": "number",
                "enum": [
                  48
                ]
              }
            ]
          }
        },
        "required": [
          "keywords"
        ],
        "additionalProperties": false
      },
      "SearchVolumeHistoryResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 10
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "requestId": {
                "description": "リクエストID",
                "example": 1234567,
                "type": "number"
              }
            },
            "description": "履歴登録結果"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeStatusResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "isCompleted": {
                "description": "全処理完了フラグ。searchVolume が processed かつ noiseReduction が processed かつ seoDifficulty が processed または skip の場合に true。",
                "example": true,
                "type": "boolean"
              },
              "statuses": {
                "description": "各処理のステータス情報",
                "type": "object",
                "properties": {
                  "searchVolume": {
                    "description": "月間検索数取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                    "example": "processed",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "noiseReduction": {
                    "description": "ノイズ除去ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                    "example": "processing",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "seoDifficulty": {
                    "description": "SEO難易度取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / skip: スキップ。",
                    "example": "skip",
                    "type": "string",
                    "enum": [
                      "skip",
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  }
                }
              }
            },
            "description": "ステータス情報"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchVolumeResultsDto": {
        "type": "object",
        "properties": {
          "noiseReduction": {
            "default": true,
            "description": "ノイズ除去フラグ。true の場合にノイズ除去を適用する。省略時は true。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数・CPC・競合性で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "CPCフィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "ソート項目。keyword / seoDifficulty / searchVolume / rateOfChange / cpc / competition。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "searchVolume",
              "rateOfChange",
              "cpc",
              "competition"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜50,000の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 50000
          }
        },
        "additionalProperties": false
      },
      "SearchVolumeResultsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "description": "クエリ情報（リクエストID・地域・言語）",
                "type": "object",
                "properties": {
                  "requestId": {
                    "type": "number",
                    "description": "リクエストID",
                    "example": 1234567
                  },
                  "location": {
                    "type": "string",
                    "description": "検索ボリューム取得対象の地域",
                    "example": "Japan"
                  },
                  "language": {
                    "type": "string",
                    "description": "検索ボリューム取得対象の言語",
                    "example": "Japanese"
                  },
                  "aggregationPeriodMonths": {
                    "type": "number",
                    "description": "集計期間（月数）",
                    "example": 12
                  }
                },
                "required": [
                  "requestId",
                  "location",
                  "language",
                  "aggregationPeriodMonths"
                ]
              },
              "summary": {
                "description": "件数サマリー",
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ]
              },
              "items": {
                "description": "検索結果アイテムのリスト",
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "キーワード",
                      "example": "ラッコ"
                    },
                    "dataSource": {
                      "type": "string",
                      "description": "検索数データの取得元。取得できなかった場合は null。",
                      "example": "GoogleLive",
                      "nullable": true
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い。不明な場合は null。",
                          "example": 40,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）。無効な場合は null。",
                          "example": 90500,
                          "nullable": true
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）。無効な場合は null。",
                          "example": 0,
                          "nullable": true
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い。無効な場合は null。",
                          "example": 1,
                          "nullable": true
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition"
                      ],
                      "description": "各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "trends": {
                      "type": "object",
                      "properties": {
                        "changeRate": {
                          "type": "object",
                          "properties": {
                            "12m": {
                              "type": "number",
                              "description": "直近12か月に対する直近月の検索数増減率",
                              "example": 0.4159,
                              "nullable": true
                            },
                            "6m": {
                              "type": "number",
                              "description": "直近6か月に対する直近月の検索数増減率",
                              "example": 0.0796,
                              "nullable": true
                            },
                            "3m": {
                              "type": "number",
                              "description": "直近3か月に対する直近月の検索数増減率",
                              "example": -0.0695,
                              "nullable": true
                            },
                            "yoy1y": {
                              "type": "number",
                              "description": "1年前同月比（集計期間24か月以上で算出）",
                              "example": 0.1523,
                              "nullable": true
                            },
                            "yoy2y": {
                              "type": "number",
                              "description": "2年前同月比（集計期間36か月以上で算出）",
                              "example": -0.0845,
                              "nullable": true
                            },
                            "yoy3y": {
                              "type": "number",
                              "description": "3年前同月比（集計期間48か月以上で算出）",
                              "example": 0.2311,
                              "nullable": true
                            }
                          },
                          "required": [
                            "12m",
                            "6m",
                            "3m",
                            "yoy1y",
                            "yoy2y",
                            "yoy3y"
                          ],
                          "description": "検索数の増減率（3か月・6か月・12か月）"
                        },
                        "monthlySearchVolume": {
                          "type": "object",
                          "propertyNames": {
                            "type": "string"
                          },
                          "additionalProperties": {
                            "type": "number"
                          },
                          "description": "月ごとの検索数。キーは YYYY-MM 形式。データがない場合は null。",
                          "example": {
                            "2025-01": 2740000,
                            "2025-02": 2240000
                          },
                          "nullable": true
                        }
                      },
                      "required": [
                        "changeRate",
                        "monthlySearchVolume"
                      ],
                      "description": "検索数トレンド（増減率・月別検索数）"
                    }
                  },
                  "required": [
                    "keyword",
                    "dataSource",
                    "metrics",
                    "trends"
                  ]
                }
              }
            },
            "description": "検索ボリューム結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "LocationsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "locations": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "地域名（Google Ads API の LocationCriterion 準拠）",
                      "example": "Japan"
                    },
                    "code": {
                      "type": "number",
                      "description": "Google Ads API の LocationCriterion ID",
                      "example": 2392
                    },
                    "countryIsoCode": {
                      "type": "string",
                      "description": "ISO 3166-1 alpha-2 国コード",
                      "example": "JP"
                    }
                  },
                  "required": [
                    "name",
                    "code",
                    "countryIsoCode"
                  ]
                },
                "description": "指定可能な地域の一覧"
              }
            },
            "required": [
              "locations"
            ],
            "description": "地域一覧"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "LanguagesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "languages": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "name": {
                      "type": "string",
                      "description": "言語名（Google Ads API の LanguageCriterion 準拠）",
                      "example": "Japanese"
                    },
                    "code": {
                      "type": "string",
                      "description": "言語コード（ISO 639-1）",
                      "example": "ja"
                    }
                  },
                  "required": [
                    "name",
                    "code"
                  ]
                },
                "description": "指定可能な言語の一覧"
              }
            },
            "required": [
              "languages"
            ],
            "description": "言語一覧"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "InfluxKeywordsKeywordDto": {
        "type": "object",
        "properties": {
          "targets": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "description": "ドメインまたはURL",
                  "example": "https://rakkokeyword.com/"
                },
                "matchType": {
                  "default": "sub_domain",
                  "description": "マッチタイプ。url / forward_url / domain / sub_domain。省略時は sub_domain。",
                  "type": "string",
                  "enum": [
                    "url",
                    "forward_url",
                    "domain",
                    "sub_domain"
                  ]
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false
            },
            "description": "獲得キーワード調査の対象ドメインまたはURLとマッチタイプの配列。最大20件まで指定可能。",
            "example": [
              {
                "url": "https://rakkokeyword.com/",
                "matchType": "sub_domain"
              }
            ]
          },
          "keywordCollapse": {
            "default": false,
            "description": "キーワード重複除去の有効/無効。true にすると同一キーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・検索順位・月間検索数・CPC・競合性・推定流入数で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "rank": {
                "description": "検索順位フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "cpc": {
                "description": "CPC（$）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小CPC",
                    "example": 0.5,
                    "type": "number",
                    "minimum": 0
                  },
                  "max": {
                    "description": "最大CPC",
                    "example": 10,
                    "type": "number",
                    "minimum": 0
                  }
                },
                "additionalProperties": false
              },
              "competition": {
                "description": "広告競合性フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "etv": {
                "description": "推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "etv",
            "description": "ソート項目。keyword / seoDifficulty / rank / searchVolume / cpc / competition / etv。省略時は etv。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "rank",
              "searchVolume",
              "cpc",
              "competition",
              "etv"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜10000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          }
        },
        "required": [
          "targets"
        ],
        "additionalProperties": false
      },
      "InfluxKeywordsKeywordResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "獲得キーワード調査の対象URLまたはドメイン一覧",
                    "example": [
                      "https://example.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 983
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "estimatedTraffic": {
                    "type": "number",
                    "description": "対象全体の推定検索流入数（月間）",
                    "example": 2824
                  },
                  "keywordCount": {
                    "type": "number",
                    "description": "ランクインしているキーワード数",
                    "example": 983
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "estimatedTraffic",
                  "keywordCount"
                ],
                "description": "集計サマリー（件数・推定流入数・キーワード数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "target": {
                      "type": "string",
                      "description": "このキーワードを獲得している対象URLまたはドメイン",
                      "example": "https://example.com/"
                    },
                    "keyword": {
                      "type": "string",
                      "description": "対象が獲得しているSEOキーワード",
                      "example": "ラッコ"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 30,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）",
                          "example": 10000
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）",
                          "example": 0
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0〜100 で表し、高いほど広告出稿の競合が激しい。",
                          "example": 0
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition"
                      ],
                      "description": "キーワードの各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "ranking": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "number",
                          "description": "検索順位",
                          "example": 1
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このキーワードからの推定検索流入数（月間）",
                          "example": 438
                        },
                        "url": {
                          "type": "string",
                          "description": "ランクインしているURL",
                          "example": "https://example.com/page"
                        }
                      },
                      "required": [
                        "position",
                        "estimatedTraffic",
                        "url"
                      ],
                      "description": "検索順位情報（順位・推定流入数・ランクインURL）"
                    }
                  },
                  "required": [
                    "target",
                    "keyword",
                    "metrics",
                    "ranking"
                  ]
                },
                "description": "獲得キーワード調査結果のリスト。各アイテムに対象・キーワード・指標・順位情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "獲得キーワード調査結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "InfluxPagesDto": {
        "type": "object",
        "properties": {
          "targets": {
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "minLength": 1,
                  "description": "ドメインまたはURL",
                  "example": "https://rakkokeyword.com/"
                },
                "matchType": {
                  "default": "sub_domain",
                  "description": "マッチタイプ。url / forward_url / domain / sub_domain。省略時は sub_domain。",
                  "type": "string",
                  "enum": [
                    "url",
                    "forward_url",
                    "domain",
                    "sub_domain"
                  ]
                }
              },
              "required": [
                "url"
              ],
              "additionalProperties": false
            },
            "description": "獲得キーワード調査（ページ軸）の対象ドメインまたはURLとマッチタイプの配列。最大20件まで指定可能。",
            "example": [
              {
                "url": "https://rakkokeyword.com/",
                "matchType": "sub_domain"
              }
            ]
          },
          "topKeywordCollapse": {
            "default": false,
            "description": "トップキーワード重複除去の有効/無効。true にすると同一トップキーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。合計推定流入数・キーワード数・合計集客価値・タイトル・URL・トップキーワード・SEO難易度で絞り込む。",
            "type": "object",
            "properties": {
              "totalEtv": {
                "description": "合計推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "keywordCount": {
                "description": "キーワード数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "totalTrafficValue": {
                "description": "合計集客価値（USD）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "title": {
                "description": "タイトルフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "url": {
                "description": "URLフィルタ（含む/含まないURL指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含むURLのリスト",
                    "example": [
                      "https://rakkokeyword.com/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まないURLのリスト",
                    "example": [
                      "https://rakkokeyword.com/result/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topKeyword": {
                "description": "トップキーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topSeoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "totalEtv",
            "description": "ソート項目。totalEtv / totalTrafficValue / keywordCount。省略時は totalEtv。",
            "type": "string",
            "enum": [
              "totalEtv",
              "totalTrafficValue",
              "keywordCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜10000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 10000
          }
        },
        "required": [
          "targets"
        ],
        "additionalProperties": false
      },
      "InfluxPagesResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "獲得キーワード調査の対象URLまたはドメイン一覧",
                    "example": [
                      "https://example.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 319
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "estimatedTraffic": {
                    "type": "number",
                    "description": "対象全体の推定検索流入数（月間）",
                    "example": 2824
                  },
                  "keywordCount": {
                    "type": "number",
                    "description": "ランクインしているキーワード数",
                    "example": 983
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "estimatedTraffic",
                  "keywordCount"
                ],
                "description": "集計サマリー（件数・推定流入数・キーワード数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "target": {
                      "type": "string",
                      "description": "このページが属する対象URLまたはドメイン",
                      "example": "https://example.com/"
                    },
                    "page": {
                      "type": "object",
                      "properties": {
                        "title": {
                          "type": "string",
                          "description": "ページタイトル",
                          "example": "ラッコキーワード｜キーワード分析ツール"
                        },
                        "url": {
                          "type": "string",
                          "description": "ページURL",
                          "example": "https://rakkokeyword.com/"
                        }
                      },
                      "required": [
                        "title",
                        "url"
                      ],
                      "description": "ページ情報（タイトル・URL）"
                    },
                    "performance": {
                      "type": "object",
                      "properties": {
                        "rankingKeywordCount": {
                          "type": "number",
                          "description": "このページでランクインしているキーワード数",
                          "example": 2173
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このページの推定検索流入数（月間）",
                          "example": 10000
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "このページの集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 5000
                        }
                      },
                      "required": [
                        "rankingKeywordCount",
                        "estimatedTraffic",
                        "trafficValue"
                      ],
                      "description": "パフォーマンス指標（ランクインキーワード数・推定流入数・集客価値）"
                    },
                    "topKeyword": {
                      "type": "object",
                      "properties": {
                        "keyword": {
                          "type": "string",
                          "description": "このページで最も代表的な獲得キーワード",
                          "example": "ラッコ"
                        },
                        "position": {
                          "type": "number",
                          "description": "代表キーワードでの検索順位",
                          "example": 1
                        },
                        "metrics": {
                          "type": "object",
                          "properties": {
                            "seoDifficulty": {
                              "type": "number",
                              "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                              "example": 30,
                              "nullable": true
                            },
                            "searchVolume": {
                              "type": "number",
                              "description": "代表キーワードの月間検索数（年平均）",
                              "example": 10000
                            }
                          },
                          "required": [
                            "seoDifficulty",
                            "searchVolume"
                          ],
                          "description": "代表キーワードの各種指標（SEO難易度・月間検索数）"
                        }
                      },
                      "required": [
                        "keyword",
                        "position",
                        "metrics"
                      ],
                      "description": "代表キーワード情報（キーワード・順位・指標）"
                    }
                  },
                  "required": [
                    "target",
                    "page",
                    "performance",
                    "topKeyword"
                  ]
                },
                "description": "獲得キーワード調査結果（ページ軸）のリスト。各アイテムに対象・ページ情報・パフォーマンス指標・代表キーワードを含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "獲得キーワード調査結果（ページ軸）データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "CompetitiveDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "minLength": 1,
            "description": "競合分析を行う対象のドメインURL。対象サイトの競合サイトを抽出し、キーワード重複率や流入数などの指標を比較する。",
            "example": "https://rakkokeyword.com/"
          },
          "sortBy": {
            "default": "etv",
            "description": "ソート項目。duplicate / duplicateRate / competitorUnique / targetUnique / etv / keywordCount / trafficValue / pageCount。省略時は etv。",
            "type": "string",
            "enum": [
              "duplicate",
              "duplicateRate",
              "competitorUnique",
              "targetUnique",
              "etv",
              "keywordCount",
              "trafficValue",
              "pageCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          }
        },
        "required": [
          "url"
        ],
        "additionalProperties": false
      },
      "CompetitiveResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "description": "競合サイト抽出の対象URLまたはドメイン一覧",
                    "example": [
                      "https://rakkoma.com/"
                    ]
                  }
                },
                "required": [
                  "targets"
                ],
                "description": "リクエストで指定されたクエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "site": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string",
                          "description": "競合サイトのドメイン名",
                          "example": "rakko.inc"
                        },
                        "title": {
                          "type": "string",
                          "description": "競合サイトのタイトル。SERP データから取得できない場合は空文字。",
                          "example": "ラッコ株式会社"
                        }
                      },
                      "required": [
                        "domain",
                        "title"
                      ],
                      "description": "競合サイト情報（ドメイン・タイトル）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "競合サイト全体の推定検索流入数（月間）",
                          "example": 15803
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "競合サイト全体の集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 51386
                        },
                        "keywordCount": {
                          "type": "number",
                          "description": "競合サイトが獲得しているキーワード数",
                          "example": 119
                        },
                        "pageCount": {
                          "type": "number",
                          "description": "競合サイトのインデックスされたページ数",
                          "example": 51
                        },
                        "duplicateKeywordCount": {
                          "type": "number",
                          "description": "入力対象サイトと競合サイトで重複しているキーワード数",
                          "example": 119
                        },
                        "duplicateRate": {
                          "type": "number",
                          "description": "重複キーワード率。0〜1 で表し、高いほど入力対象とのキーワード重複率が高い。",
                          "example": 1
                        },
                        "competitorUniqueKeywordCount": {
                          "type": "number",
                          "description": "競合サイトにのみ存在し、入力対象サイトには存在しないキーワード数",
                          "example": 0
                        },
                        "targetUniqueKeywordCount": {
                          "type": "number",
                          "description": "入力対象サイトにのみ存在し、競合サイトには存在しないキーワード数",
                          "example": 596
                        }
                      },
                      "required": [
                        "estimatedTraffic",
                        "trafficValue",
                        "keywordCount",
                        "pageCount",
                        "duplicateKeywordCount",
                        "duplicateRate",
                        "competitorUniqueKeywordCount",
                        "targetUniqueKeywordCount"
                      ],
                      "description": "競合サイトの各種指標（流入数・集客価値・キーワード数・重複率など）"
                    }
                  },
                  "required": [
                    "site",
                    "metrics"
                  ]
                },
                "description": "競合サイト抽出結果のリスト。各アイテムにサイト情報と各種指標を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "競合サイト抽出結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "ContentSearchDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "集客コンテンツ検索の検索キーワード。指定キーワードに関連する上位表示コンテンツを検索する。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "searchTarget": {
            "default": "titleAndKeywordAndDescription",
            "description": "検索対象。title / keyword / description / titleAndKeyword / titleAndKeywordAndDescription。省略時は titleAndKeywordAndDescription。",
            "type": "string",
            "enum": [
              "title",
              "keyword",
              "description",
              "titleAndKeyword",
              "titleAndKeywordAndDescription"
            ]
          },
          "isAdvancedSearch": {
            "default": true,
            "description": "拡張検索の有効/無効。true にするとキーワードを形態素解析して検索精度を高める。省略時は true。",
            "type": "boolean"
          },
          "topKeywordCollapse": {
            "default": false,
            "description": "トップキーワード除去の有効/無効。true にすると同一トップキーワードの重複を除去する。省略時は false。",
            "type": "boolean"
          },
          "filter": {
            "description": "結果のフィルタリング条件。推定流入数・ランクインキーワード数・集客価値・タイトル・URL・トップキーワード・ディスクリプション・SEO難易度で絞り込む。",
            "type": "object",
            "properties": {
              "estimatedTraffic": {
                "description": "推定流入数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "rankingKeywordCount": {
                "description": "ランクインキーワード数フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "trafficValue": {
                "description": "集客価値（USD）フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "title": {
                "description": "タイトルフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "url": {
                "description": "URLフィルタ（含む/含まないURL指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含むURLのリスト",
                    "example": [
                      "https://rakkokeyword.com/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まないURLのリスト",
                    "example": [
                      "https://rakkokeyword.com/result/"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "topKeyword": {
                "description": "トップキーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "description": {
                "description": "ディスクリプションフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "trafficValue",
            "description": "結果のソート項目。estimatedTraffic / trafficValue / rankingKeywordCount。省略時は trafficValue。",
            "type": "string",
            "enum": [
              "estimatedTraffic",
              "trafficValue",
              "rankingKeywordCount"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1〜5000 の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 5000
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "ContentSearchResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 3
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "集客コンテンツ検索の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "object",
                      "properties": {
                        "domain": {
                          "type": "string",
                          "description": "ページのドメイン名",
                          "example": "rakkokeyword.com"
                        },
                        "url": {
                          "type": "string",
                          "description": "ページの完全なURL",
                          "example": "https://rakkokeyword.com/result/contentSearch?q=%E3%83%A9%E3%83%83%E3%82%B3"
                        },
                        "title": {
                          "type": "string",
                          "description": "ページのタイトル",
                          "example": "ラッコキーワード"
                        },
                        "description": {
                          "type": "string",
                          "description": "ページの説明文",
                          "example": "多機能でサクサク使えるキーワードリサーチツール。生成AIによる記事生成機能搭載。SEO/市場ニーズ調査/競合分析/コンテンツ制作/商品開発にお役立ていただけます。無料でも使えます！"
                        }
                      },
                      "required": [
                        "domain",
                        "url",
                        "title",
                        "description"
                      ],
                      "description": "ページ情報（ドメイン・URL・タイトル・ディスクリプション）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "このページの推定検索流入数（月間）",
                          "example": 14000
                        },
                        "trafficValue": {
                          "type": "number",
                          "description": "このページの集客価値（USD）。推定流入数×CPC で算出される広告換算価値。",
                          "example": 2266
                        },
                        "rankingKeywordCount": {
                          "type": "number",
                          "description": "このページでランクインしているキーワード数",
                          "example": 18
                        }
                      },
                      "required": [
                        "estimatedTraffic",
                        "trafficValue",
                        "rankingKeywordCount"
                      ],
                      "description": "ページの各種指標（推定流入数・集客価値・ランクインキーワード数）"
                    },
                    "topKeyword": {
                      "type": "object",
                      "properties": {
                        "keyword": {
                          "type": "string",
                          "description": "このページで最も代表的な獲得キーワード",
                          "example": "ラッコ"
                        },
                        "wordCount": {
                          "type": "number",
                          "description": "代表キーワードを構成する単語数（スペース区切り）",
                          "example": 1
                        },
                        "position": {
                          "type": "number",
                          "description": "代表キーワードでの検索順位",
                          "example": 2
                        },
                        "metrics": {
                          "type": "object",
                          "properties": {
                            "seoDifficulty": {
                              "type": "number",
                              "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                              "example": 37,
                              "nullable": true
                            },
                            "searchVolume": {
                              "type": "number",
                              "description": "代表キーワードの月間検索数（年平均）",
                              "example": 5000
                            }
                          },
                          "required": [
                            "seoDifficulty",
                            "searchVolume"
                          ],
                          "description": "代表キーワードの各種指標（SEO難易度・月間検索数）"
                        }
                      },
                      "required": [
                        "keyword",
                        "wordCount",
                        "position",
                        "metrics"
                      ],
                      "description": "トップキーワード情報（代表キーワード・単語数・順位・指標）"
                    }
                  },
                  "required": [
                    "page",
                    "metrics",
                    "topKeyword"
                  ]
                },
                "description": "集客コンテンツ検索結果のリスト。各アイテムにページ情報・指標・トップキーワードを含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "集客コンテンツ検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "HeadlineDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "見出し抽出を行う検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "lessHeadlines": {
            "default": false,
            "description": "見出し5件未満のページを除外するかどうか。true で除外する。省略時は false。",
            "type": "boolean"
          },
          "lessCharacters": {
            "default": false,
            "description": "文字数1,000未満のページを除外するかどうか。true で除外する。省略時は false。",
            "type": "boolean"
          },
          "h1": {
            "default": true,
            "description": "h1タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h2": {
            "default": true,
            "description": "h2タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h3": {
            "default": true,
            "description": "h3タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h4": {
            "default": true,
            "description": "h4タグの見出しを含めるかどうか。省略時は true。",
            "type": "boolean"
          },
          "h5": {
            "default": false,
            "description": "h5タグの見出しを含めるかどうか。省略時は false。",
            "type": "boolean"
          },
          "h6": {
            "default": false,
            "description": "h6タグの見出しを含めるかどうか。省略時は false。",
            "type": "boolean"
          },
          "sortBy": {
            "default": "position",
            "description": "ソート項目。position / title / headlineCount / wordCount。省略時は position。",
            "type": "string",
            "enum": [
              "position",
              "title",
              "headlineCount",
              "wordCount"
            ]
          },
          "orderBy": {
            "default": "asc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は asc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 20,
            "description": "取得件数。1〜20 の整数を指定する。省略時は 20。",
            "example": 20,
            "type": "integer",
            "minimum": 1,
            "maximum": 20
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "HeadlineResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 2
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "見出し抽出の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  },
                  "averageHeadlineCount": {
                    "type": "number",
                    "description": "1ページあたりの平均見出し数",
                    "example": 19.5
                  },
                  "averageWordCount": {
                    "type": "number",
                    "description": "1ページあたりの平均文字数",
                    "example": 7782
                  },
                  "minWordCount": {
                    "type": "number",
                    "description": "ページ文字数の最小値",
                    "example": 2935
                  },
                  "maxWordCount": {
                    "type": "number",
                    "description": "ページ文字数の最大値",
                    "example": 12629
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "averageHeadlineCount",
                  "averageWordCount",
                  "minWordCount",
                  "maxWordCount"
                ],
                "description": "件数・文字数・見出し数のサマリー情報"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "page": {
                      "type": "object",
                      "properties": {
                        "url": {
                          "type": "string",
                          "description": "検索結果ページの URL",
                          "example": "https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%83%E3%82%B3"
                        },
                        "title": {
                          "type": "string",
                          "description": "検索結果ページのタイトル",
                          "example": "ラッコ - Wikipedia"
                        },
                        "description": {
                          "type": "string",
                          "description": "検索結果ページのディスクリプション",
                          "example": "ラッコは、..."
                        }
                      },
                      "required": [
                        "url",
                        "title",
                        "description"
                      ],
                      "description": "検索結果ページの基本情報（URL・タイトル・ディスクリプション）"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "position": {
                          "type": "number",
                          "description": "検索順位",
                          "example": 1
                        },
                        "headlineCount": {
                          "type": "number",
                          "description": "このページに含まれる見出し数",
                          "example": 19
                        },
                        "wordCount": {
                          "type": "number",
                          "description": "このページの文字数",
                          "example": 14190
                        }
                      },
                      "required": [
                        "position",
                        "headlineCount",
                        "wordCount"
                      ],
                      "description": "ページの各種指標（検索順位・見出し数・文字数）"
                    },
                    "headlines": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "level": {
                            "type": "string",
                            "description": "見出しレベル（h1, h2, h3, h4 など）",
                            "example": "h1"
                          },
                          "text": {
                            "type": "string",
                            "description": "見出しテキスト",
                            "example": "ラッコ"
                          }
                        },
                        "required": [
                          "level",
                          "text"
                        ]
                      },
                      "description": "ページ内の見出し一覧。指定した見出しレベル（h1–h6）に応じてフィルタされる。"
                    }
                  },
                  "required": [
                    "page",
                    "metrics",
                    "headlines"
                  ]
                },
                "description": "見出し抽出アイテムのリスト。各アイテムにページ情報・指標・見出し一覧を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "見出し抽出の検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "CoOccurrenceDto": {
        "type": "object",
        "properties": {
          "keyword": {
            "type": "string",
            "minLength": 1,
            "description": "共起語取得の元となる検索キーワード。1文字以上の文字列を指定する。",
            "example": "ラッコ"
          },
          "getDetails": {
            "default": true,
            "description": "URLごとの詳細情報を取得するかどうか。true にすると各共起語について検索上位ページごとの出現情報を返す。省略時は true。",
            "type": "boolean"
          },
          "sortBy": {
            "default": "siteCountTotal",
            "description": "ソート項目。word / occurrencePageCount / occurrenceTitleCount / occurrenceHeadingCount / siteCountTotal / siteCountHeading。省略時は siteCountTotal。",
            "type": "string",
            "enum": [
              "word",
              "occurrencePageCount",
              "occurrenceTitleCount",
              "occurrenceHeadingCount",
              "siteCountTotal",
              "siteCountHeading"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "description": "取得件数の上限。正の整数を指定。省略時はすべての結果を返す。",
            "example": 10,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          }
        },
        "required": [
          "keyword"
        ],
        "additionalProperties": false
      },
      "CoOccurrenceResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 2
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "keyword": {
                    "type": "string",
                    "description": "共起語取得の元になった検索キーワード",
                    "example": "ラッコ"
                  }
                },
                "required": [
                  "keyword"
                ],
                "description": "リクエストで指定された検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 150
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 100
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount"
                ],
                "description": "件数サマリー（全体件数とレスポンスに含まれる件数）"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "word": {
                      "type": "string",
                      "description": "検索上位ページから抽出した共起語",
                      "example": "水族館"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "occurrencePageCount": {
                          "type": "number",
                          "description": "検索上位ページ内でこの共起語が出現した回数",
                          "example": 230
                        },
                        "occurrenceTitleCount": {
                          "type": "number",
                          "description": "検索上位ページのタイトル内でこの共起語が出現した回数",
                          "example": 8
                        },
                        "occurrenceHeadingCount": {
                          "type": "number",
                          "description": "検索上位ページの見出し内でこの共起語が出現した回数",
                          "example": 21
                        },
                        "siteCountTotal": {
                          "type": "number",
                          "description": "検索上位サイトのうち、この共起語が本文内で出現したサイト数",
                          "example": 13
                        },
                        "siteCountHeading": {
                          "type": "number",
                          "description": "検索上位サイトのうち、この共起語が見出し内に出現したサイト数",
                          "example": 7
                        }
                      },
                      "required": [
                        "occurrencePageCount",
                        "occurrenceTitleCount",
                        "occurrenceHeadingCount",
                        "siteCountTotal",
                        "siteCountHeading"
                      ],
                      "description": "共起語の各種指標（本文・タイトル・見出しの出現回数、出現サイト数）"
                    },
                    "pageDetails": {
                      "description": "URLごとの詳細情報（getDetails=true の場合のみ）",
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "rank": {
                            "type": "number",
                            "description": "検索結果における順位",
                            "example": 1
                          },
                          "title": {
                            "type": "string",
                            "description": "ページタイトル",
                            "example": "ラッコ"
                          },
                          "url": {
                            "type": "string",
                            "description": "ページURL",
                            "example": "https://ja.wikipedia.org/wiki/%E3%83%A9%E3%83%83%E3%82%B3"
                          },
                          "count": {
                            "type": "number",
                            "description": "共起語の本文内出現回数",
                            "example": 3
                          },
                          "countInHeadline": {
                            "type": "number",
                            "description": "共起語の見出し内出現回数",
                            "example": 0
                          },
                          "countInTitle": {
                            "type": "number",
                            "description": "共起語のタイトル内出現回数",
                            "example": 0
                          },
                          "pageCount": {
                            "type": "number",
                            "description": "共起語が出現したページ数",
                            "example": 1
                          },
                          "pageCountInHeadline": {
                            "type": "number",
                            "description": "見出しに共起語が出現したページ数",
                            "example": 0
                          }
                        },
                        "required": [
                          "rank",
                          "title",
                          "url",
                          "count",
                          "countInHeadline",
                          "countInTitle",
                          "pageCount",
                          "pageCountInHeadline"
                        ]
                      }
                    }
                  },
                  "required": [
                    "word",
                    "metrics"
                  ]
                },
                "description": "共起語アイテムのリスト。各アイテムに共起語・指標・詳細情報を含む。"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "共起語検索結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankHistoryDto": {
        "type": "object",
        "properties": {
          "keywords": {
            "minItems": 1,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "順位チェックするキーワードの配列",
            "example": [
              "ラッコ",
              "カワウソ"
            ]
          },
          "urls": {
            "minItems": 1,
            "maxItems": 50,
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "順位チェックするURL/ドメインの配列。最大50件まで指定可能。",
            "example": [
              "https://rakkokeyword.com",
              "https://rakkokeyword.com/result/contentSearch?q=%E3%83%A9%E3%83%83%E3%82%B3"
            ]
          },
          "matchType": {
            "default": "sub_domain",
            "description": "マッチタイプ。url: 完全一致URL / forward_url: 前方一致URL / domain: ドメイン完全一致 / sub_domain: サブドメイン含むドメイン一致。省略時は sub_domain。",
            "type": "string",
            "enum": [
              "url",
              "forward_url",
              "domain",
              "sub_domain"
            ]
          },
          "depth": {
            "default": 30,
            "description": "検索結果の取得深度。30 / 40 / 50 / 60 / 70 / 80 / 90 / 100 のいずれかを指定。省略時は 30。",
            "example": 30,
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "isSearchVolumeAndSeoDifficultyEnabled": {
            "default": false,
            "description": "月間検索数/SEO難易度を取得するかどうか。省略時は false。",
            "type": "boolean"
          },
          "deduplicate": {
            "default": true,
            "description": "キーワードの重複除去を行うかどうか。省略時は true。",
            "type": "boolean"
          }
        },
        "required": [
          "keywords",
          "urls"
        ],
        "additionalProperties": false
      },
      "SearchRankHistoryResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 1.2
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "requestId": {
                "description": "リクエストID",
                "example": "01HQZX5Y4JMQK8XNQ7WVZXZ5Y4",
                "type": "string"
              }
            },
            "description": "履歴登録結果"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankStatusResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "isCompleted": {
                "description": "全処理完了フラグ。statuses.serp が processed かつ statuses.searchVolumeAndSeoDifficulty が processed・failed・integration_failed またはなし の場合に true。",
                "example": true,
                "type": "boolean"
              },
              "statuses": {
                "description": "各処理のステータス情報",
                "type": "object",
                "properties": {
                  "serp": {
                    "description": "SERP取得ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了。",
                    "example": "processed",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed"
                    ]
                  },
                  "searchVolumeAndSeoDifficulty": {
                    "description": "月間検索数/SEO難易度ステータス。unprocessed: 未処理 / processing: 処理中 / processed: 完了 / failed: 失敗 / integration_failed: 統合失敗。",
                    "example": "processing",
                    "type": "string",
                    "enum": [
                      "unprocessed",
                      "processing",
                      "processed",
                      "failed",
                      "integration_failed"
                    ]
                  }
                }
              }
            },
            "description": "ステータス情報"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      },
      "SearchRankResultsDto": {
        "type": "object",
        "properties": {
          "filter": {
            "description": "結果のフィルタリング条件。キーワード・SEO難易度・月間検索数で絞り込む。",
            "type": "object",
            "properties": {
              "keyword": {
                "description": "キーワードフィルタ（含む/含まないキーワード指定）",
                "type": "object",
                "properties": {
                  "includes": {
                    "description": "含む単語のリスト",
                    "example": [
                      "水族館"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  "notIncludes": {
                    "description": "含まない単語のリスト",
                    "example": [
                      "グッズ"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                },
                "additionalProperties": false
              },
              "seoDifficulty": {
                "description": "SEO難易度フィルタ（0〜100の範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 1,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              },
              "searchVolume": {
                "description": "月間検索数フィルタ（範囲指定）",
                "type": "object",
                "properties": {
                  "min": {
                    "description": "最小値",
                    "example": 100,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  },
                  "max": {
                    "description": "最大値",
                    "example": 10000,
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 9007199254740991
                  }
                },
                "additionalProperties": false
              }
            },
            "additionalProperties": false
          },
          "sortBy": {
            "default": "searchVolume",
            "description": "ソート項目。keyword / seoDifficulty / searchVolume。省略時は searchVolume。",
            "type": "string",
            "enum": [
              "keyword",
              "seoDifficulty",
              "searchVolume"
            ]
          },
          "orderBy": {
            "default": "desc",
            "description": "ソート順。asc: 昇順 / desc: 降順。省略時は desc。",
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ]
          },
          "limit": {
            "default": 100,
            "description": "取得件数。1以上の整数を指定する。省略時は 100。",
            "example": 100,
            "type": "integer",
            "minimum": 1,
            "maximum": 9007199254740991
          },
          "withAggregation": {
            "default": false,
            "description": "ターゲットごとの集計情報（推定流入数）を出力するかどうか。省略時は false。",
            "type": "boolean"
          }
        },
        "additionalProperties": false
      },
      "SearchRankResultsResponseDto": {
        "type": "object",
        "properties": {
          "result": {
            "type": "boolean",
            "description": "API 呼び出しの成否。正常時は true、エラー時は false。",
            "example": true
          },
          "meta": {
            "type": "object",
            "properties": {
              "consumedCredit": {
                "type": "number",
                "description": "このリクエストで消費されたクレジット数。",
                "example": 0
              }
            },
            "required": [
              "consumedCredit"
            ],
            "description": "リクエストに関するメタ情報（課金・消費リソースなど）"
          },
          "data": {
            "type": "object",
            "properties": {
              "query": {
                "type": "object",
                "properties": {
                  "requestId": {
                    "type": "string",
                    "description": "検索順位チェック結果を識別するリクエストID",
                    "example": "sr_20260309_001"
                  }
                },
                "required": [
                  "requestId"
                ],
                "description": "検索クエリ情報"
              },
              "summary": {
                "type": "object",
                "properties": {
                  "totalCount": {
                    "type": "number",
                    "description": "取得対象全体の件数",
                    "example": 2
                  },
                  "returnedCount": {
                    "type": "number",
                    "description": "このレスポンスに含まれている件数",
                    "example": 2
                  },
                  "targets": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "properties": {
                        "target": {
                          "type": "string",
                          "description": "順位チェック対象のURLパターンまたはドメイン",
                          "example": "*.rakkoma.com/*"
                        },
                        "estimatedTraffic": {
                          "type": "number",
                          "description": "推定検索流入数の合計（withAggregation=false の場合は0）",
                          "example": 7391
                        },
                        "rankingPositionDistribution": {
                          "type": "object",
                          "properties": {
                            "1-3": {
                              "type": "number",
                              "description": "順位1〜3位のキーワード数",
                              "example": 40
                            },
                            "4-10": {
                              "type": "number",
                              "description": "順位4〜10位のキーワード数",
                              "example": 15
                            },
                            "11-20": {
                              "type": "number",
                              "description": "順位11〜20位のキーワード数",
                              "example": 5
                            },
                            "21-30": {
                              "type": "number",
                              "description": "順位21〜30位のキーワード数",
                              "example": 4
                            },
                            "31-50": {
                              "type": "number",
                              "description": "順位31〜50位のキーワード数",
                              "example": 5
                            },
                            "51-100": {
                              "type": "number",
                              "description": "順位51〜100位のキーワード数",
                              "example": 3
                            },
                            "101+": {
                              "type": "number",
                              "description": "順位101位以上のキーワード数",
                              "example": 10
                            }
                          },
                          "required": [
                            "1-3",
                            "4-10",
                            "11-20",
                            "21-30",
                            "31-50",
                            "51-100",
                            "101+"
                          ],
                          "description": "フィルター条件にマッチした全件の順位分布"
                        }
                      },
                      "required": [
                        "target",
                        "estimatedTraffic",
                        "rankingPositionDistribution"
                      ]
                    },
                    "description": "ターゲットごとの検索順位分布と推定流入数（フィルター条件にマッチした全件の集計）"
                  }
                },
                "required": [
                  "totalCount",
                  "returnedCount",
                  "targets"
                ],
                "description": "件数サマリー"
              },
              "items": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "keyword": {
                      "type": "string",
                      "description": "検索順位を確認したキーワード",
                      "example": "サイト売買 個人"
                    },
                    "metrics": {
                      "type": "object",
                      "properties": {
                        "seoDifficulty": {
                          "type": "number",
                          "description": "SEO難易度。1–100で表し、高いほど難易度が高い（1–33:低 / 34–66:中 / 67–100:高）。不明な場合は null。",
                          "example": 23,
                          "nullable": true
                        },
                        "searchVolume": {
                          "type": "number",
                          "description": "月間検索数（年平均）。無効な場合は null。",
                          "example": 70,
                          "nullable": true
                        },
                        "cpc": {
                          "type": "number",
                          "description": "推定クリック単価（USD）。無効な場合は null。",
                          "example": 3.47,
                          "nullable": true
                        },
                        "competition": {
                          "type": "number",
                          "description": "広告競合性。0–100で表し、高いほど競合性が高い（0–33:低 / 34–66:中 / 67–100:高）。無効な場合は null。",
                          "example": 41,
                          "nullable": true
                        }
                      },
                      "required": [
                        "seoDifficulty",
                        "searchVolume",
                        "cpc",
                        "competition"
                      ],
                      "description": "各種指標（SEO難易度・月間検索数・CPC・広告競合性）"
                    },
                    "rankings": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "target": {
                            "type": "string",
                            "description": "順位チェック対象のURLパターンまたはドメイン",
                            "example": "*.rakkoma.com/*"
                          },
                          "position": {
                            "type": "number",
                            "description": "検索順位。圏外または未検出の場合は null。",
                            "example": 3,
                            "nullable": true
                          },
                          "rankedUrl": {
                            "type": "string",
                            "description": "実際にランクインしたURL。未検出の場合は null。",
                            "example": "https://rakkoma.com/",
                            "nullable": true
                          },
                          "estimatedTraffic": {
                            "type": "number",
                            "description": "このキーワードでの推定検索流入数",
                            "example": 9
                          }
                        },
                        "required": [
                          "target",
                          "position",
                          "rankedUrl",
                          "estimatedTraffic"
                        ]
                      },
                      "description": "ターゲットごとの検索順位情報"
                    }
                  },
                  "required": [
                    "keyword",
                    "metrics",
                    "rankings"
                  ]
                },
                "description": "検索順位チェック結果アイテムのリスト"
              }
            },
            "required": [
              "query",
              "summary",
              "items"
            ],
            "description": "検索順位チェック結果データ"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "エラーメッセージの配列。正常時は空配列。",
            "example": []
          }
        },
        "required": [
          "result",
          "meta",
          "data",
          "errors"
        ]
      }
    }
  }
}