Apidog Docs
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
HomeLearning CenterSupport CenterAPI ReferencesDownloadChangelog
HomeLearning CenterSupport CenterAPI ReferencesDownloadChangelog
Discord Community
Slack Community
X / Twitter
🇯🇵 日本語
  • 🇺🇸 English
  • 🇯🇵 日本語
  1. Schemas
  • Apidog学習センター
  • はじめに
    • Apidog紹介
    • Apidogのナビゲーション
    • Apidogの基本概念
    • Apidog基本操作
      • 概要
      • 新しい APIを作成
      • APIにリクエストを送信
      • アサーションを追加
      • テストシナリオを作成
      • APIドキュメントを共有
      • さらなる探究
      • リクエストの送信とAPI保存
    • 移行
      • 概要
      • 手動インポート
      • 定期インポート
      • インポートオプション
      • データのエクスポート
      • Import from...
        • Postman からインポート
        • OpenAPI(Swagger)仕様のインポート
        • cURLのインポート
        • Markdownのインポート
        • Insomniaからのインポート
        • apiDocからのインポート
        • .harファイルのインポート
        • WSDLのインポート
  • API設計
    • 概要
    • コンポーネント
    • 常用フィールド
    • グローバルパラメータ
    • API変更履歴
    • APIの構成方法
    • 一括API管理
    • APIの基本
    • 複数のリクエストボディ例の設定
    • モジュール
    • Schemas
      • 概要
      • 新規Schemaの作成
      • スキーマを構築する
      • JSONなどからのSchema生成
      • oneOf / allOf / anyOfの使い方
    • Security schemes
      • 概要
      • Security Schemeの作成
      • Security Schemeの使用
      • オンラインドキュメントにおけるSecurity Scheme
    • 高度な機能
      • APIをテストステップとしてインポート
      • パラメータリストの表示形式
      • APIのカスタムフィールド
      • APIのステータス
      • API固有識別子
  • API開発 & デバッグ
    • 概要
    • リクエストの生成
    • リクエストの送信
    • コード生成機能
    • APIケース
    • 動的な値
    • レスポンス検証
    • 設計優先 & リクエスト優先
    • 環境 & 変数
      • 概要
      • 環境管理
      • 変数の使い方
    • Vault secrets
      • 概要
      • AWS Secrets Manager
      • Azure Key Vault
      • HashiCorp Vault
    • 前/後処理
      • 概要
      • Wait
      • 変数の抽出
      • アサーション
      • データベース操作
        • 概要
        • MySQL
        • MongoDB
        • Redis
        • Oracle クライアント
      • スクリプト利用
        • 概要
        • 前処理スクリプト
        • 後処理スクリプト
        • Postmanスクリプトリファレンス
        • 共通スクリプト
        • 他のプログラミング言語の呼び出し
        • JavaScriptライブラリの利用
        • レスポンスの可視化
        • スクリプトの例
          • その他の例
          • スクリプトを使用したリクエストメッセージの変更
          • スクリプトでの変数の使用
          • アサーションスクリプト
    • 動的値モジュール
  • APIモックデータ
    • 概要
    • スマートMock
    • カスタムMock
    • Mockの優先順位
    • Mockスクリプト
    • クラウドMock
    • セルフホストランナーMock
    • Mock言語 (ロケール)
  • 自動テスト
    • 概要
    • テストレポート
    • テストシナリオ
      • テストシナリオの作成
      • 他のプロジェクトからAPI/APIケースをインポートする
      • リクエスト間でデータを渡す
      • API/APIケースからのデータ同期
      • フロー制御条件
      • テストシナリオのエクスポート
    • テストシナリオ実行
      • データ駆動型テスト
      • スケジュールタスク
      • テストシナリオを一括実行する
      • 他のプロジェクトのAPIの実行環境を管理する
      • テストシナリオを実行する
    • APIテスト
      • 統合テスト
      • 回帰テスト
      • エンドツーエンド(E2E)テスト
      • パフォーマンステスト
    • Apidog CLI
      • 概要
      • Apidog CLIのインストールと実行
      • Apidog CLI オプション
    • CI/CD
      • 概要
      • GitHub Actions連携
      • Jenkins連携
      • GitLab連携
      • Gitコミットをトリガーとした自動テスト実行
  • APIドキュメント公開
    • 概要
    • サポート対象API技術
    • クイック共有
    • APIドキュメントを表示する
    • Markdownドキュメント
    • ドキュメントサイトの公開
    • カスタムレイアウト
    • カスタムCSS・JavaScript・HTML
    • カスタムドメイン
    • SEO設定
    • LLM最適化機能
    • 詳細設定
      • ドキュメント検索
      • CORS プロキシ
      • Google AnalyticsとDoc Sitesの連携
      • フォルダツリー設定
      • 可視性設定
      • ドキュメントURLに値を埋め込む
    • APIバージョン
      • 概要
      • APIバージョンの作成
      • APIバージョンの公開
      • APIバージョンごとにAPIの共有
  • リクエスト送信
    • 概要
    • GraphQL
    • gRPC
    • WebSocket
    • SSEデバッグ
    • SOAP/Webサービス
    • デバッグ用のリクエストプロキシエージェントを使用する
    • Socket.IO
    • Webhook
    • リクエスト作成
      • リクエストの基本
      • パラメータとボディ
      • リクエストヘッダー
      • リクエスト設定
      • HTTP/2
      • リクエスト履歴
    • 認証と認可
      • 概要
      • CAとクライアント証明書
      • Apidogがサポートする認可タイプ
      • Digest Auth
      • OAuth 1.0
      • OAuth 2.0
      • Hawk Authentication
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • レスポンスとクッキー
      • 概要
      • ApidogのAPIレスポンス
      • Cookieの作成と送信
      • リクエストのデバッグ
      • リクエストをAPIとして保存
  • ブランチ管理
    • 概要
    • 新しいスプリントブランチの作成
    • スプリントブランチの管理
    • ブランチ内でのAPIテスト
    • ブランチでAPIの設計
    • スプリントブランチのマージ
  • AI機能
    • 概要
    • AI機能の有効化
    • AIでSchemaを編集
    • よくある質問
  • Apidog MCP Server
    • 概要
    • Apidogプロジェクト内のAPI仕様をApidog MCPサーバー経由でAIに接続する
    • Apidogが公開したオンラインAPIドキュメントをApidog MCPサーバー経由でAIに接続する
    • Apidog MCPサーバーを介してOpenAPIファイルをAIに接続する
  • ベストプラクティス
    • API署名の取り扱い方法
    • OAuth 2.0で保護されたAPIにアクセスする方法
    • Apidog コラボレーションワークフロー
    • Apidogでの認証状態の管理
    • ガイド:ChatGPT APIのトークンとコスト計算
  • オフラインスペース
    • 概要
  • 管理
    • オンボーディングチェックリスト
      • 基本概念
      • Apidogスタートアップガイド
    • チーム管理
      • チーム管理
      • チームメンバーの管理
      • メンバーの役割と権限設定
      • チーム活動
      • チームリソース
        • 一般ランナー
        • チーム変数
        • リクエストプロキシエージェント
        • データベース接続
      • リアルタイムコラボレーション
        • チームコラボレーション
    • プロジェクト管理
      • プロジェクト管理
      • プロジェクトメンバーの管理
      • 通知設定
    • 組織管理
      • シングルサインオン(SSO)
        • 概要
        • Microsoft Entra IDの設定
        • Okta設定
        • 組織のSSOを設定する
        • チームへのグループのマッピング
        • ユーザーアカウントの管理
      • SCIMプロビジョニング
        • SCIMプロビジョニング入門
        • Microsoft Entra ID
        • Okta
      • 組織リソース
        • セルフホストランナー
  • 請求情報
    • 概要
    • プランのアップグレード
    • クレジット
    • クレジットカードが使えない?
    • サブスクリプションの管理
  • データ & セキュリティ
    • Apidogのデータはどこに保存され、データセキュリティはどのように確保されていますか?
    • ユーザーデータはどのように保存されますか?このデータは公開されますか?それともプライベートですか?すべてのデータはクラウドに保存されますか?
    • リクエストを送信する際、Apidogサーバーを経由しますか?データセキュリティは確保されていますか?
  • アドオン
    • API Hub
    • Apidog IntelliJ IDEA プラグイン
    • ブラウザ拡張機能
      • Microsoft Edge
      • Chrome
    • リクエストプロキシ
      • Apidogウェブでのリクエストプロキシ
      • 共有ドキュメントでのリクエストプロキシ
      • Apidogクライアントでのリクエストプロキシ
  • アカウント & 設定
    • アカウント設定
    • OpenAPIアクセストークンの生成
    • 言語設定
    • ホットキー
    • ネットワークプロキシ設定
    • データバックアップ
    • Apidogの更新
    • アカウント削除
    • 試験的な機能
  • 参考資料
    • Swagger拡張機能
    • Socket通信:パケットの分断と結合
    • 用語の説明
    • よくある質問
    • API設計優先アプローチ
    • Apidog OpenAPI/Swagger仕様拡張
    • JSONPath
    • XPath
    • 正規表現
    • JSONスキーマ
    • CSVファイルフォーマット
    • Java環境のインストール
    • ランナーのデプロイ環境
    • ApidogフレーバーMarkdown
  1. Schemas

OpenAPIにおけるoneOf / allOf / anyOfの使い方

oneOf、anyOf、allOfは、JSON Schema仕様で定義されている複合データ構造を表現するためのキーワードです。これらはデータバリデーションに論理演算子として機能し、ApidogではこれらのJSON Schema機能を完全にサポートしています。これにより、より精度の高いAPIドキュメントやデータ検証ルールの構築が可能となります。

基本概念#

allOf
allOfは、データがすべてのサブスキーマ条件を同時に満たす必要があることを意味します。論理演算でいうAND(かつ)に相当し、日常的な表現で言えば「〜かつ〜」のように、すべての条件を満たす場合のみバリデーションが通ります。
anyOf
oneOf

論理比較表#

キーワード論理演算条件要件主な用途
allOfANDすべての条件を同時に満たす必要がある継承・拡張
anyOfORいずれか1つ以上の条件を満たす必要がある任意の組み合わせ
oneOfXORちょうど1つの条件のみを満たす必要がある排他的選択

Apidogでの利用方法#

1. ビジュアルエディタを利用する場合#

1
Step 1: データスキーマの作成
プロジェクト内で「Schema」をクリックし、「新しいSchema」を選択します。
CleanShot 2025-08-07 at 12.03.18@2x.png
2
Step 2: スキーマコンポジションの追加
データスキーマ編集パネルで型を選択する際、「Schema Composition」をクリックし、oneOf、anyOf、allOfから選択します。各サブスキーマごとに具体的なデータ構造を定義してください。
01-apidog-schemas.gif

2. JSON Schemaコードエディタを利用する場合#

データスキーマ編集パネルで直接JSON Schemaコードを編集し、これらの論理的なコンポジションパターンを定義することも可能です。
image.png

APIドキュメントでの活用#

リクエストパラメータの定義#

endpointのリクエストパラメータを定義する際、これらのコンポジションパターンを活用することで、複雑なパラメータ構造を表現できます。
1
API編集画面に入ります。
2
「Request Parameters」セクションでBodyを選択し、JSONタイプを指定します。
3
データ構造内で「Reference Schema」をクリックするか、ビジネスロジックに応じて適切な「Schema Composition」を選択、またはカスタムJSON Schemaを定義します。
image.png

レスポンスデータの定義#

同様に、レスポンスデータにもこれらのスキーマコンポジションを利用できます。
1
「Response」セクションでレスポンス例を追加します。
2
スキーマコンポジションを用いて、さまざまなレスポンス形式を表現します。
CleanShot 2025-08-07 at 12.29.54@2x.png

実践的な利用例#

allOfの例(AND演算)#

allOfを利用すると、複数のデータスキーマを組み合わせ、すべての条件を同時に満たす必要があります。例えば「ユーザー情報は基本情報かつ連絡先情報を含む必要がある」といったケースです。
{
  "allOf": [
    {
      "description": "基本ユーザー情報",
      "type": "object",
      "properties": {
        "id": { "type": "integer" },
        "name": { "type": "string" }
      },
      "required": ["id", "name"]
    },
    {
      "description": "連絡先情報", 
      "type": "object",
      "properties": {
        "email": { "type": "string", "format": "email" },
        "phone": { "type": "string" }
      },
      "required": ["email"]
    }
  ]
}
結果: 最終的なデータにはid、name、emailフィールドが必須となり、phoneは任意となります。各サブスキーマの制約が統合されて適用されます。
02-apidog-schemas.gif

anyOfの例(OR演算)#

anyOfを使うことで、複数のバリデーションパスから任意のものを選択できます。例えば「ユーザーはユーザー名/パスワードまたはメールアドレス/パスワードまたは電話番号/認証コードでログインできる」といったケースです。
{
  "type": "object",
  "properties": {
    "login": {
      "anyOf": [
        {
          "description": "ユーザー名/パスワードでのログイン",
          "properties": {
            "username": { "type": "string" },
            "password": { "type": "string" }
          },
          "required": ["username", "password"]
        },
        {
          "description": "メールアドレス/パスワードでのログイン",
          "properties": {
            "email": { "type": "string", "format": "email" },
            "password": { "type": "string" }
          },
          "required": ["email", "password"]
        },
        {
          "description": "電話番号/認証コードでのログイン",
          "properties": {
            "phone": { "type": "string" },
            "verifyCode": { "type": "string" }
          },
          "required": ["phone", "verifyCode"]
        }
      ]
    }
  }
}
結果: ユーザーは、いずれか1つまたは複数のログイン方法の情報を入力できます。1つでも条件を満たせばバリデーションが通ります。
03-apidog-schemas.gif

oneOfの例(XOR演算)#

oneOfを利用すると、ユーザーは支払い方法を1つだけ選択でき、複数を同時に指定することはできません。例えば「支払い方法はクレジットカードXORPayPalXOR銀行振込 ― いずれか1つのみ選択可能」のようなケースです。
{
  "type": "object", 
  "properties": {
    "payment": {
      "oneOf": [
        {
          "description": "クレジットカード決済",
          "type": "object",
          "properties": {
            "type": { "const": "credit_card" },
            "cardNumber": { "type": "string" },
            "expiryDate": { "type": "string" }
          },
          "required": ["type", "cardNumber", "expiryDate"],
          "additionalProperties": false
        },
        {
          "description": "PayPal決済", 
          "type": "object",
          "properties": {
            "type": { "const": "paypal" },
            "email": { "type": "string", "format": "email" }
          },
          "required": ["type", "email"],
          "additionalProperties": false
        },
        {
          "description": "銀行振込",
          "type": "object", 
          "properties": {
            "type": { "const": "bank_transfer" },
            "accountNumber": { "type": "string" },
            "routingNumber": { "type": "string" }
          },
          "required": ["type", "accountNumber", "routingNumber"],
          "additionalProperties": false
        }
      ]
    }
  }
}
結果: ユーザーは支払い方法を1つだけ選択しなければならず、複数同時や未選択は許可されません。
04-apidog-schemas.gif
コンポジションパターンを選択する際は、まずビジネスロジックを明確にしましょう:
複数スキーマの結合・継承が必要な場合 → allOf(AND演算)
柔軟な選択肢が必要な場合 → anyOf(OR演算)
排他的な選択が必要な場合 → oneOf(XOR演算)
Modified at 2025-08-07 10:54:31
Previous
JSONなどからのSchema生成
Next
概要
Built with